Linux下提高硬碟讀寫速度__Linux

來源:互聯網
上載者:User

Linux命令:hdparm

功能說明:顯示與設定硬碟的參數。
語  法:hdparm [-CfghiIqtTvyYZ][-a <快取分區>][-A <0或1>][-c ][-d <0或1>][-k <0或1>][-K <0或1>][-m <分區數>][-n <0或1>][-p ][-P <分區數>][-r <0或1>][-S <時間>][-u <0或1>][-W <0或1>][-X <傳輸模式>][裝置]
補充說明:hdparm可檢測,顯示與設定IDE或SCSI硬碟的參數。
參  數:
-a<快取分區>   設定讀取檔案時,預先存入塊區的分區數,若不加上<快取分區>選項,則顯示目前的設定。
-A<0或1>   啟動或關閉讀取檔案時的快取功能。
-c   設定IDE32位I/O模式。
-C   檢測IDE硬碟的電源管理模式。
-d<0或1>   設定磁碟的DMA模式。
-f   將記憶體緩衝區的資料寫入硬碟,並清楚緩衝區。
-g   顯示硬碟的磁軌,磁頭,磁區等參數。
-h   顯示協助。
-i   顯示硬碟的硬體規格資訊,這些資訊是在開機時由硬碟本身所提供。
-I   直接讀取硬碟所提供的硬體規格資訊。
-k<0或1>   重設硬碟時,保留-dmu參數的設定。
-K<0或1>   重設硬碟時,保留-APSWXZ參數的設定。
-m<磁區數>   設定硬碟多重分區存取的分區數。
-n<0或1>   忽略硬碟寫入時所發生的錯誤。
-p   設定硬碟的PIO模式。
-P<磁區數>   設定硬碟內部快取的分區數。
-q   在執行後續的參數時,不在螢幕上顯示任何資訊。
-r<0或1>   設定硬碟的讀寫入模式。
-S<時間>   設定硬碟進入省電模式前的等待時間。
-t   評估硬碟的讀取效率。
-T   平穀硬碟快取的讀取效率。
-u<0或1>   在硬碟存取時,允許其他中斷要求同時執行。
-v   顯示硬碟的相關設定。
-W<0或1>   設定硬碟的寫入快取。
-X<傳輸模式>   設定硬碟的傳輸模式。
-y   使IDE硬碟進入省電模式。
-Y   使IDE硬碟進入睡眠模式。
-Z   關閉某些Seagate硬碟的自動省電功能。



Linux下也可以使用32Bit I/O和DMA。
1使用 /sbin/hdparm -c1 /dev/hda(hdb,hdc..)開啟32Bit傳輸模式。
[root@localhost ~]# /sbin/hdparm -c1 /dev/hda

/dev/hda:
  setting 32-bit IO_support flag to 1
  IO_support     =   1 (32-bit)

2使用命令 /sbin/hdparm -d1 /dev/hda(hdb,hdc...)開啟DMA。
[root@localhost ~]# /sbin/hdparm -d1 /dev/hda

/dev/hda:
  setting using_dma to 1 (on)
  using_dma       =   1 (on)


3最後使用 /sbin/hdparm -k1 /dev/hda 以使硬碟在Reset之後保持上面的設定。
[root@localhost ~]# /sbin/hdparm -k1 /dev/hda

/dev/hda:
  setting keep_settings to 1 (on)
  keepsettings =   1 (on)


這麼一來,硬碟讀寫速度應該可以提高。


[root@localhost ~]# hdparm -t /dev/hda

/dev/hda:
  Timing buffered disk reads:     44 MB in   3.04 seconds =   14.50 MB/sec


但是,上面的設定只是對當前的系統有效,當再次重啟系統時,又得重新設定了。
如果要使每次系統啟動時都開啟DMA,可以在/etc/rc.d/rc.local檔案中添加上面的命令來實現:

[root@anima lwg]# echo "/sbin/hdparm -c1 -d1 -k1 /dev/hda" >> /etc/rc.d/rc.local
[root@anima lwg]#

 

【賽迪網-IT技術報道】目前很多朋友都用上了大容量的DMA或UDMA-33標準的硬碟。在微軟的Windows98下為了使得DMA或UDMA-33標準的硬碟提高資料轉送速率,可以在電腦的CMOS或作業系統中開啟IDE硬碟的DMA(直接儲存空間存取)這項功能。但是在Linux平台中,Linux是不會自動的開啟DMA模式,所以在Linux中使用這些IDE介面的UDMA-33標準的硬碟感覺資料轉送遠遠沒有在Windows中快。事實上,Linux平台中也可以通過軟體來開啟DMA模式,以下就是Linux下的硬碟提速的具體做法。

首先,在Linux下開啟DMA模式之前,最重要的事情就是備份硬碟上的資料。因為在開啟DMA模式之後誰也無法預料到硬碟是否還能正常工作,資料是否還完整。把Linux下所有的重要資料備份到其他硬碟或是CD-R等儲存媒介上是最好的選擇,請不要把資料備份在同一塊硬碟上,更不能把資料備份到同一個硬碟分區。

第二步需要修改hdparm目錄下的一些裝置節點參數。但是修改這些參數必須以超級使用者(ROOT)的身份登陸Linux系統才行。普通Linux使用者沒有這個許可權修改hdparm目錄下的東西。下面就是一個修改硬碟裝置節點參數的例子,注意,不同型號,不同容量的硬碟可能列出的參數不太一樣,但是修改的過程和方法大體上是一樣的。

# /sbin/hdparm /dev/hda

/dev/hda:

multcount = 0 (off)

I/O support = 0 (default 16-bit)

unmaskirq = 0 (off)

using_dma = 0 (off)

keepsettings = 0 (off)

nowerr = 0 (off)

readonly = 0 (off)

readahead = 8 (on)

geometry = 629/240/63, sectors = 9514260, start = 0

#

要注意的是,OFF代表此參數不起作用,ON表示開啟此功能或模式。上面的參數列表寫的非常清楚,Multcount(多扇區讀) 沒有開啟;此硬碟格式為16位格式;DMA資料轉送模式沒有開啟。很顯然,這樣的參數並沒有使硬碟達到最佳的最佳化,沒有能完全發揮當今高速IDE硬碟的效能。

為了最佳化硬碟,提高硬碟的資料轉送速率,首先還是要瞭解以下這些參數的含義:

c3 :就是把硬碟的16位格式轉換為32位元模式。

m16 :改變硬碟的多路扇區的讀功能,-m16可以使得硬碟一次讀入16個扇區的資料。但是不是所有的硬碟都支援這個功能。使用hdparm -i /dev/hda 可以察看您的硬碟最大能讀寫的扇區數目。

d1X34:在支援DMA-capable的硬碟中,這個參數可以支援雙DMA通道的資料轉送模式。

d1X66:在支援UDMA-capable的硬碟中,這個參數可以支援雙DMA通道的資料轉送模式。

瞭解以上參數的作用和含義之後,現在請您仔細檢查硬碟上面上的標籤,看看您的硬碟是否支援DMA 或者 UDMA模式,然後才對照這些參數來最佳化您的硬碟,以防出現不可預見的錯誤。

最佳化硬碟的參數,也可以參考下面的例子,注意,不是所有的硬碟都適用一下的最佳化參數,請按照實際情況來設定參數:

# hdparm -d1X66 -m16 -c3 /dev/hda

# hdparm /dev/hda

/dev/hda:

multcount = 16 (on)

I/O support = 3 (32-bit w/sync)

unmaskirq = 0 (off)

using_dma = 1 (on)

keepsettings = 0 (off)

nowerr = 0 (off)

readonly = 0 (off)

readahead = 8 (on)

geometry = 629/240/63, sectors = 9514260, start = 0

修改完這些參數之後,有時候並不能一次性把硬碟最佳化成功。如果在硬碟還在正常工作的時候修改這些資料,硬碟會進入“休眠”狀態。這就需要等硬碟燈會熄滅,硬碟不處於繁忙狀態下最佳化硬碟參數比較容易成功。

hdparm的改變是一個臨時的狀態,下次再次啟動Linux系統的時候hdparm將會消失。所以要想永久的儲存修改後的資訊,就必須把修改後的參數和資料寫入/etc/rc.d/rc.local或者/etc/rc.local檔案,甚至比啟動過程要早啟動並執行程式中。

最後要提醒大家的是,如果您的主板的晶片集或Linux核心kernel(比如核心kernel版本過於陳舊,2.2版以前)如果不支援UDMA模式,那就沒有必要去修改硬碟裝置的參數了。升級主板或者kernel是解決這個問題的較好選擇。



hdparm -tT /dev/hda 測試硬碟速度
hdparm -A1 /dev/hda 開啟硬碟預讀取功能
hdparm -c3 /dev/hda 開啟硬碟32位
hdparm -d1 /dev/hda 開啟DMA
-d 和 -A 參數對IDE硬碟讀寫效能影響最大

hdparm - 擷取/設定硬碟參數
總覽
hdparm [ -a [扇區數] ] [ -A [0|1] ] [ -c [晶片集模式] ] [ -C ] [ -d [0|1] ] [ -f ] [ -g ] [ -i ] [ -k [0|1] ] [ -K [0|1] ] [ -L [0|1] ] [ -m [扇區數] ] [ -p [0|1|2|3|4|5] ] [ -P [扇區數] ] [ -q ] [ -r [0|1] ] [ -S [逾時] ] [ -T ] [ -t ] [ -u [0|1] ] [ -v ] [ -W [0|1] ] [ -X [傳輸模式] ] [ -y ] [ -Y ] [ -Z ] [裝置] ..
描述
hdparm 提供一個實現各種硬碟控制動作的命令列介面,它由內建 Linux IDE/ST-506裝置驅動程式支援.要實現這種功能需要Linux 核心版本為1.2.13或更高.在早期的核心下有一些選項可能不能正 常工作.另外,一些選項只是為包含了新的IDE裝置驅動程式的核心 所支援,像2.0.10版或者更高版本的核心.如果hdparm程式是在使用 舊的核心檔案(在目錄usr/include/linux下)的機器上被編譯的,這 些選項將無法獲得.
選項
當未給出標記時, -acdgkmnru 被作為假設值 (除非一個給定的裝置是SCSI裝置或某種老式 XT型MFM/RLL,在這種情況下 -gr 和 -adgr 分別是預設值).
-a
為檔案系統提前獲得/設定扇區號,可以用來改善連續讀取大檔案時的系統效能,具體方式為提前讀取額外的預期中正在啟動並執行任務所需要的 資料區塊.在當前核心版本(2.0.10版)中預設設定為8個扇區(4KB).對於 大多數用途,這個值看起來不錯,但在一個大多數檔案訪問行為是隨機 搜尋的系統中,設定一個小一些的值可能效果會更好.當然,很多 IDE磁碟機也有一個獨立的內建的預讀功能,這在很多情況下可以緩解 對檔案系統預讀功能的需求.
-A
關閉/開啟IDE磁碟機預讀功能(通常預設為開啟).
-c
查詢/開啟(E)IDE 32

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.