Linux測試硬盤讀性能的常用工具-hdparm


通常情況下可以使用fdisk、df等命令查看硬盤的分區情況以及當前已使用空間大小、剩余空間大小等信息。但是如果要查看硬盤的硬件信息如 硬盤型號、序列號、已運行時間等信息該用什么工具查看呢?

Linux下可以使用hdparm工具查看硬盤的相關信息或對硬盤進行測速、優化、修改硬盤相關參數設定。我主要常用這個工具來測試硬盤速度。

hdparm(hard disk parameters)
功能說明:顯示與設定硬盤的參數。

該命令用來獲取或設置SATA/IDE設備的參數。注意了,既可以獲取也可以設置,所以使用這個命令的時候務必要小心。當然我們只是為了獲取查看硬盤信息,故不會對硬盤及系統造成什么危害。通常會配合 -i 或 -I(大寫的i) 選項來取得硬盤的硬件信息。用法如下:

2.常用指令
a.安全擦除
hdparm --user-master u --security-set-pass PASSWORD /dev/sda 設置密碼
hdparm --user-master u --security-erase PASSWORD /dev/sda 安全擦除
類似安全擦除:
hdparm –yes-i-know-what-i-am-doing –sanitize-crypto-scramle /dev/sdx
hdparm –yes-i-know-what-i-am-doing –sanitize-status /dev/sdx
b.設置硬盤容量(硬盤必須直連服務器,通過raid卡無法執行此項指令)
yum install sg3_utils.x86_64
sg_readcap /dev/sdb
hdparm -N VP --yes-i-know-what-i-am-doing /dev/sdb (VP: certain LBA blocks)
c.解鎖
hdparm --user-master u --security-set-pass PASSWORD /dev/sda
hdparm --user-master u --security-unlock PASSWORD /dev/sda
hdparm --user-master u --security-disable PASSWORD /dev/sda
d.升級固件版本
hdparm --fwdownload /root/Desktop/xxx.bin --yes-i-know-what-i-am-doing --please-destroy-my-drive /dev/sdc
————————————————

hdparm -I /dev/sda

語法: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 <傳輸模式>][設備]

參數說明:

-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硬盤的自動省電功能。

hdparm常用參數使用舉例:

1、顯示硬盤的相關設置:
[root@oracle ~]# 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[起始扇區數]

2、顯示硬盤的柱面、磁頭、扇區數:
[root@oracle ~]# hdparm -g /dev/sda
/dev/sda:
geometry = 19929[柱面數]/255[磁頭數]/63[扇區數], sectors = 320173056[總扇區數], start = 0[起始扇區數]

3、測試硬盤的讀取速度:

[root@oracle ~]# hdparm -t /dev/xvda

/dev/xvda:
Timing buffered disk reads: 422 MB in 3.01 seconds = 140.20 MB/sec
[root@oracle ~]# hdparm -t /dev/xvda

/dev/xvda:
Timing buffered disk reads: 408 MB in 3.01 seconds = 135.59 MB/sec
[root@oracle ~]# hdparm -t /dev/xvda

/dev/xvda:
Timing buffered disk reads: 416 MB in 3.01 seconds = 138.24 MB/sec

4、測試硬盤緩存的讀取速度:

[root@oracle ~]# hdparm -T /dev/xvda

/dev/xvda:
Timing cached reads: 11154 MB in 1.98 seconds = 5633.44 MB/sec
[root@oracle ~]# hdparm -T /dev/xvda

/dev/xvda:
Timing cached reads: 10064 MB in 1.98 seconds = 5077.92 MB/sec
[root@oracle ~]# hdparm -T /dev/xvda

/dev/xvda:
Timing cached reads: 10600 MB in 1.98 seconds = 5351.73 MB/sec


5、檢測硬盤的電源管理模式:
[root@oracle ~]# hdparm -C /dev/sda
/dev/sda:
drive state is: standby [省電模式]

6、查詢並設置硬盤多重扇區存取的扇區數,以增進硬盤的存取效率:
[root@oracle ~]# hdparm -m /dev/sda
[root@oracle ~]# hdparm -m 參數值為整數值如8 /dev/sda

附:硬盤壞道修復方法
檢查:smartctl -l selftest /dev/sda
卸載:umount /dev/sda*
修復:badblocks /dev/sda

 

  

smartctl 命令

smartctl命令默認在系統中不存在,需要安裝smartmontools工具包之后才能使用。這個一個用於控制和監控支持smart技術的硬盤的命令。通常配合 -a 選項我們可以查看到比較詳盡的硬盤信息(比如序列號、硬盤容量、已運行時間、硬盤健康狀況等)。這個命令還是相當有用的。用法如下(得先 apt-get install smartmontools 以安裝smartmontools工具包):

smartctl -a /dev/sda

好在Linux上很早就有了SMART支持了.如果把Linux裝在VMware等虛擬機上,在系統啟動時候可以看到有個服務啟動報錯:smartd
這個服務器就是smart的daemon進程(因為vmware虛擬機的硬盤不支持SMART,所以報錯)
首先通過dmesg工具,確認一下硬盤的設備符號
hdb中的h代表IDE,如果顯示為sdb,則代表SATA和SCSI
最后一個字幕b代表Primary總線,第二塊硬盤即Slave位置
-i 指定設備
-d 指定設備類型,例如:ata, scsi, marvell, sat, 3ware,N
-a 或A 顯示所有信息
-l 指定日志的類型,例如:TYPE: error, selftest, selective, directory,background, scttemp[sts,hist]
-H 查看硬盤健康狀態
-t short 后台檢測硬盤,消耗時間短
-t long 后台檢測硬盤,消耗時間長
-C -t short 前台檢測硬盤,消耗時間短
-C -t long 前台檢測硬盤,消耗時間長
-X 中斷后台檢測硬盤
-l selftest 顯示硬盤檢測日志
 
確認硬盤是否打開了SMART支持
smartctl -i /dev/hdb
[root@station ~]# smartctl -i /dev/sdb
smartctl 5.39.1 2010-01-28 r3054 [i386-redhat-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net
 
Device: SEAGATE  ST373453LC       Version: 0006
Serial number: 3HW07M7K00007340AX57
Device type: disk
Transport protocol: Parallel SCSI (SPI-4)
Local Time is: Tue Nov  6 16:54:06 2012 CST
Device supports SMART and is Enabled
Temperature Warning Enabled
如果看到不支持這需要我們手動開啟支持
[root@station ~]#  smartctl --smart=on --offlineauto=on --saveauto=on /dev/sdb  //手動開啟smart命令
smartctl 5.39.1 2010-01-28 r3054 [i386-redhat-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net
 
Informational Exceptions (SMART) enabled
Temperature warning enabled
[root@station ~]# smartctl  -H /dev/sdb  //磁盤健康狀況查看
smartctl 5.39.1 2010-01-28 r3054 [i386-redhat-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net
 
SMART Health Status: OK
注意后邊的結果:這表示硬盤健康狀態良好

如果這里顯示Failure,那么最好立刻給服務器更換硬盤
SMART只能報告磁盤已經不再健康,但是報警后還能繼續運行多久是不確定的
通常,SMART報警參數是有預留的,磁盤報警后,不會當場壞掉,一般能堅持一段時間
有的硬盤SMART報警后還繼續跑了好幾年,有的硬盤SMART報錯后幾天就壞了
但是一旦出現報警,僥幸心里是萬萬不能的……

簡單用法:
1、smartctl -a  <device>         檢查該設備是否已經打開SMART技術。
2、smartctl -s on <device>    如果沒有打開SMART技術,使用該命令打開SMART技術。
3、smartctl -t short <device>    后台檢測硬盤,消耗時間短;
   smartctl -t long <device>      后台檢測硬盤,消耗時間長;
   smartctl -C -t short <device> 前台檢測硬盤,消耗時間短;
   smartctl -C -t long <device>  前台檢測硬盤,消耗時間長。
其實就是利用硬盤SMART的自檢程序。
4、smartctl -X <device>  中斷后台檢測硬盤。
5、smartctl -l selftest <device>  顯示硬盤檢測日志。
6、smartctl -l error <device> 顯示硬盤錯誤匯總。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM