Linux下hdparm硬盤測速
在Linux下可以使用hdparm對硬盤進行測試或者查看硬盤的相關信息。這樣你就知道了硬盤讀寫速度。
hdparm
參數:
-a 表示是否關閉磁盤預讀取功能。對於大文件讀取,這個顯然能提高性能。
-A設置硬盤驅動器緩存讀取特性。可能就是硬盤緩存開關
-g 顯示硬盤的磁軌,磁頭,磁區等參數。
-i 顯示硬盤的硬件規格信息,這些信息是在開機時由硬盤本身所提供。
-I 直接讀取硬盤所提供的硬件規格信息。
-p 設定硬盤的PIO模式。
-Tt 評估硬盤的讀取效率和硬盤快取的讀取效率。
-u; 在硬盤存取時,允許其他中斷要求同時執行。
-v 顯示硬盤的相關設定。
例子:
1)直接硬盤讀測試
[root@apktv ~]# hdparm -tT --direct /dev/sda1
/dev/sda1:
Timing O_DIRECT cached reads: 704 MB in 2.00 seconds = 351.50 MB/sec
HDIO_DRIVE_CMD(null) (wait for flush complete) failed: Inappropriate ioctl for device
Timing O_DIRECT disk reads: 546 MB in 3.01 seconds = 181.43 MB/sec
HDIO_DRIVE_CMD(null) (wait for flush complete) failed: Inappropriate ioctl for device
使用DMA方式傳輸數據可以占用更少的CPU資源,因此與其它操作系統一樣,Linux支持硬盤以DMA方式轉輸數據,但在安裝Red Hat7.0時關於DMA的默認選項是Disable的,當然你可以在安裝時就enable它。
hdparm -t /dev/hda 查看IDE的磁盤,Sata或scsi的為:hdparm -t /dev/sda
一硬盤using_dma 為off,讀取速度慢;而另一硬盤using_dma 為on,讀取速度快。
查看與開啟DMA支持執行命令如下:
[root@RJ-RMS root]# hdparm -cdt /dev/hda
/dev/hda:
IO_support = 0 (default 16-bit)
using_dma = 0 (off)
Timing buffered disk reads: 64 MB in 20.84 seconds = 3.07 MB/sec[root@RJ-RMS root]# hdparm -d1 /dev/hda
/dev/hda:
setting using_dma to 1 (on)
using_dma = 1 (on)
[root@RJ-RMS root]# hdparm -cdt /dev/hda
/dev/hda:
IO_support = 0 (default 16-bit)
using_dma = 1 (on)
Timing buffered disk reads: 64 MB in 1.09 seconds = 58.72 MB/sec
hdparm的改變是個臨時的狀態,下次再次啟動Linux系統的時候hdparm將會消失。所以要想永久的保存修改后的信息,就必須把修改后的參數和數據寫入/etc/rc.d/rc.local或/etc/rc.local文檔,甚至比啟動過程要早運行的程式中。
壞道修復
檢查: smartctl -l selftest /dev/sda
卸載: umount /dev/sda*
修復: badblocks /dev/sda
顯示硬盤的柱面、磁頭、扇區數
#hdparm -g /dev/sda
/dev/sda:
geometry = 35539[柱面數]/255[磁頭數]/63[扇區數], sectors = 570949632[總扇區數], start = 0[起始扇區數]
評估硬盤的讀取效率(停止所有服務,多測幾次)
root@ubuntu:~# hdparm -T /dev/sda
/dev/sda:
Timing cached reads: 7540 MB in 2.00 seconds = 3771.50 MB/sec
root@ubuntu:~# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 226 MB in 3.04 seconds = 74.36 MB/sec
root@ubuntu:~# hdparm -Tt /dev/sda
/dev/sda:
Timing cached reads: 7750 MB in 2.00 seconds = 3876.91 MB/sec
Timing buffered disk reads: 270 MB in 3.00 seconds = 89.99 MB/sec
-T
用於以基准測試和比較為目的的緩存讀取計時.要得到有意義的結果, 應該在內存不少於2M,系統沒有其它活動(沒有其它活動的程序) 的條件下,重復操作2-3次.它顯示了不存取磁盤直接從Linux緩存 讀取數據的速度.這項測量實際上標示了被測系統的處理器,緩存 和內存的吞吐量. 如果標志 -t 也被指定,那么一個基於 -T 輸出結果的修正量將被綜合到 -t 操作報告的結果中.
-t
用於以基准測試和比較為目的的緩存讀取計時.要得到有意義的結果, 應該在內存不少於2M,系統沒有其它活動(沒有其它活動的程序) 的條件下,重復操作2-3次.它顯示了不使用預先的數據緩沖從磁盤 這項測量標示了Linux下沒有任何文件系統開銷時磁盤可以支持多快的連續數據讀取.為確保測量的精確,緩存在 -t 的過程中通過BLKFLSBUF控制被刷新. 如果標志 -T 也被指定,那么一個基於 -T 數促結果的修正量將被綜合到 -t 操作報告的結果中.
hdparm(hard disk parameters)
功能說明:顯示與設定硬盤的參數。
語 法:hdparm [-CfghiIqtTvyYZ][-a <快取分區>][-A <0或1>][-c <I/O模式>][-d <0或1>][-k <0或1>][-K <0或1>][-m <分區數>][-n <0或1>][-p <PIO模式>][-P <分區數>][-r <0或1>][-S <時間>][-u <0或1>][-W <0或1>][-X <傳輸模式>][設備]
補充說明:hdparm可檢測,顯示與設定IDE或SCSI硬盤的參數。
參 數:
-a<快取分區> 設定讀取文件時,預先存入塊區的分區數,若不加上<快取分區>選項,則顯示目前的設定。
-A<0或1> 啟動或關閉讀取文件時的快取功能。
-c<I/O模式> 設定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模式> 設定硬盤的PIO模式。
-P<磁區數> 設定硬盤內部快取的分區數。
-q 在執行后續的參數時,不在屏幕上顯示任何信息。
-r<0或1> 設定硬盤的讀寫模式。
-S<時間> 設定硬盤進入省電模式前的等待時間。
-t 評估硬盤的讀取效率。
-T 平谷硬盤快取的讀取效率。
-u<0或1> 在硬盤存取時,允許其他中斷要求同時執行。
-v 顯示硬盤的相關設定。
-W<0或1> 設定硬盤的寫入快取。
-X<傳輸模式> 設定硬盤的傳輸模式。
-y 使IDE硬盤進入省電模式。
-Y 使IDE硬盤進入睡眠模式。
-Z 關閉某些Seagate硬盤的自動省電功能。
hdparm命令 顯示與設置硬盤參數
------------------------------------------------------------------------
.顯示硬盤的相關設置
[root@linuxso.com ~]# hdparm /dev/sda
/dev/sda:
IO_support = 0 (default 16-bit)
readonly = 0 (off)
readahead = 256 (on)
geometry = 19929[柱面數]/255[磁頭數]/63[扇區數], sectors = 320173056[總扇區數], start = 0[起始扇區數]
.顯示硬盤的柱面、磁頭、扇區數
[root@linuxso.com ~]# hdparm -g /dev/sda
/dev/sda:
geometry = 19929[柱面數]/255[磁頭數]/63[扇區數], sectors = 320173056[總扇區數], start = 0[起始扇區數]
.評估硬盤的讀取效率
[root@linuxso.com ~]# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 166 MB in 3.03 seconds = 54.85 MB/sec
[root@linuxso.com ~]# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 160 MB in 3.01 seconds = 53.11 MB/sec
[root@linuxso.com ~]# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 166 MB in 3.00 seconds = 55.31 MB/sec
.評估硬盤快取的讀取效率
[root@linuxso.com ~]# hdparm -T /dev/sda
/dev/sda:
Timing cached reads: 3784 MB in 2.00 seconds = 1894.60 MB/sec
[root@linuxso.com ~]# hdparm -T /dev/sda
/dev/sda:
Timing cached reads: 3816 MB in 2.00 seconds = 1909.06 MB/sec
[root@linuxso.com ~]# hdparm -T /dev/sda
/dev/sda:
Timing cached reads: 3728 MB in 2.00 seconds = 1866.29 MB/sec
.檢測IDE硬盤的電源管理模式
[root@linuxso.com ~]# hdparm -C /dev/sda
/dev/sda:
drive state is: standby [省電模式]http://www.linuxso.com/command/hdparm.html
語 法:badblocks [-svw][-b <區塊大小>][-o <輸出文件>][磁盤裝置][磁盤區塊數][啟始區塊]
補充說明:執行指令時須指定所要檢查的磁盤裝置,及此裝置的磁盤區塊數。
硬盤是一個損耗設備,當使用一段時間后可能會出現壞道等物理故障。電腦硬盤出現壞道后,如果不及時更換或進行技術處理,壞道就會越來越多,並會造成頻繁死機和數據丟失。最好的處理方式是更換磁盤,但在臨時的情況下,應及時屏蔽壞道部分的扇區,不要觸動它們。badblocks就是一個檢查壞道位置的工具。
一、命令參數
badblocks使用格式為:
badblocks [ -svwnf ] [ -b block-size ] [ -c blocks_at_once ] [ -i
input_file ] [ -o output_file ] [ -p num_passes ] [ -t test_pattern ]
device [ last-block ] [ start-block ]
-b blocksize
指定磁盤的區塊大小,單位為字節,默認值為“block 4K ”(4K/block)
-c blocksize
每個區塊檢查的次數,默認是16次
-f
強制在一個已經掛載的設備上執行讀寫或非破壞性的寫測試操作
(我們建議先umount設備,然后再進行壞道檢測。僅當/etc/mtab出現誤報設備掛載錯誤的時候可以使用該選項)
-i file
跳過已經顯示在file文件中的壞道,而不進行檢測(可以避免重復檢測)
-o file
把檢測結果輸出到file文件
-p number
重復搜尋設備,直到在指定通過次數內都沒有找到新的壞塊位置,默認次數為0
-s
在檢查時顯示進度
-t pattern
通過按指定的模式讀寫來檢測區塊。你可以指定一個0到ULONG_MAX-1的十進制正值,或使用random(隨機)。
如果你指定多個模式,badblocks將使用第一個模式檢測所有的區塊,然后再使用下一個模式檢測所有的區塊。
Read-only方式僅接受一個模式,它不能接受random模式的。
-v
執行時顯示詳細的信息
-w
對每個區塊都先寫入,然后再從它讀取信息
[device]
指定要檢查的磁盤裝置。
[last-block]
指定磁盤裝置的區塊總數。
[start-block]
指定要從哪個區塊開始檢查
badblocks以4096的一個block,每一個block檢查16次,將結果輸出到“hda-badblocks-list”文件里
# badblocks -b 4096 -c 16 /dev/hda1 -o hda-badblocks-list
# cat hda-badblocks-list
51249
51250
51251
51253
51254
……
61245
……
# badblocks -b 4096 -c 1 /dev/hda1 -o hda-badblocks-list.1 63000 51000
1、fsck使用badblocks的信息
badblocks只會在日志文件中標記出壞道的信息,但若希望在檢測磁盤時也能跳過這些壞塊不檢測,可以使用fsck的-l參數:
badblocks可以隨e2fsck和mke2fs的-c刪除一起運行(對ext3文件系統也一樣),在創建文件系統前就先檢測壞道信息:
# mkfs.ext3 -c /dev/hda1
這個操作已經很清楚地告知我們可以采用“mkfs.ext3 -c”選項用“read-only”方式檢查硬盤。這個命令會在格式化硬盤時檢查硬盤,並標出錯誤的硬盤“block”。用這個方法格式化硬盤,需要有相當大的耐心,因為命令運行后,會一個個用讀的方式檢查硬盤。