Linux硬盤的檢測--smartctl詳細介紹

概述 html

隨着硬盤容量、速度的快速發展,硬盤的可靠性問題愈來愈重要,今天的單塊硬盤存儲容量可輕鬆達到1TB,硬盤損壞帶來的影響很是巨大。
不一樣的文件系統(xfs,reiserfs,ext3)都有本身的檢測和修復工具。檢測以前能夠先使用dmesg命令查看有沒有硬件I/O故障的日誌,若是有,先用fsck看看是否是文件系統有問題,若是不是則可使用下面介紹硬盤檢測和優化方法來修復它。 grep"error"/va/log/messages*;
Linux檢測硬盤壞道 
使用SMART檢測硬盤 
SMART是一種磁盤自我分析檢測技術,早在90年代末就基本獲得了普及每一塊硬盤(包括IDE、SCSI),在運行的時候都會將自身的若干參數記錄下來,這些參數包括型號、容量、溫度、密度、扇區、尋道時間、傳輸、誤碼率等。硬盤運行了幾千小時後,不少內在的物理參數都會發生變化,某一參數超過報警閾值,則說明硬盤接近損壞,此時硬盤依然在工做,若是用戶不理睬這個報警繼續使用,那麼硬盤將變得很是不可靠,隨時可能故障。
啓用SMART
SMART是和主板BIOS上相應功能配合的,要使用SMART,必須先進入到主板BIOS設置裏邊啓動相關設置。通常從Pentium2級別起的主板,都支持SMART,BIOS啓動之後,就是操做系統級別的事情了(Windows沒有內置SMART相關工具,須要安裝第三方工具軟件),好在Linux上很早就有了SMART支持了,若是把Linux裝在VMware等虛擬機上,在系統啓動時候能夠看到有個服務啓動報錯:smartd。這個服務器就是smart的daemon進程(由於vmware虛擬機的硬盤不支持SMART,因此報錯)。smartd是一個守護進程(一個幫助程序),它能監視擁有自我監視,分析和彙報技術(Self-Monitoring, Analysis, and Reporting Technology - SMART)的硬盤。SMART體系使得硬盤能監視並彙報本身的運行情況.它的一個重要特性是可以預測失敗,使得系統管理員能避免數據丟失。linux

smartctl簡單用法服務器

smartctl -a <device> 檢查該設備是否已經打開SMART技術。 smartctl -s on <device> 若是沒有打開SMART技術,使用該命令打開SMART技術。 smartctl -t short <device> 後臺檢測硬盤,消耗時間短; smartctl -t long <device> 後臺檢測硬盤,消耗時間長; smartctl -C -t short <device> 前臺檢測硬盤,消耗時間短; smartctl -C -t long <device> 前臺檢測硬盤,消耗時間長。其實就是利用硬盤SMART的自檢程序。 smartctl -X <device> 中斷後臺檢測硬盤。 smartctl -l selftest <device> 顯示硬盤檢測日誌。 smartctl -l error <device> 顯示硬盤錯誤彙總。
首先經過dmesg工具,確認一下硬盤的設備符號。例如一個IDE硬盤鏈接到Primary IDE 總線上的Slave位置,硬盤設備符號是/dev/hdb,hdb中的h表明IDE,若是顯示爲sdb,則表明SATA和SCSI,最後一個字幕b表明Primary總線,第二塊硬盤即Slave位置,確認硬盤是否打開了SMART支持:工具

# smartctl -i /dev/sda
smartctl 5.40 2010-10-16 r3189 [i386-redhat-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Device Model:     HITACHI HTS543225L9SA00
Serial Number:    090131FB2F32YLG28JEA
Firmware Version: FBEZC48C
User Capacity:    250,059,350,016 bytes
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   8
ATA Standard is:  ATA-8-ACS revision 3f
Local Time is:    Wed May 25 10:10:39 2011 CST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled                          //表示啓用了smart支持 
若是看到SMART support is: Disabled表示SMART未啓用,執行以下命令,啓動SMART測試

# smartctl --smart=on --offlineauto=on --saveauto=on /dev/sda
smartctl 5.40 2010-10-16 r3189 [i386-redhat-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.
SMART Attribute Autosave Enabled.
SMART Automatic Offline Testing Enabled every four hours.

如今硬盤的SMART功能已經被打開,執行以下命令查看硬盤的健康情況優化

# smartctl -H /dev/sda
smartctl 5.40 2010-10-16 r3189 [i386-redhat-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED 
請注意result後邊的結果:PASSED,這表示硬盤健康狀態良好;若是這裏顯示FAILED,那麼最好馬上給服務器更換硬盤。SMART只能報告磁盤已經再也不健康,可是報警後還能繼續運行多久是不肯定的。一般,SMART報警參數是有預留的,磁盤報警後,不會當場壞掉,通常能堅持一段時間,有的硬盤SMART報警後還繼續跑了好幾年,有的硬盤SMART報錯後幾天就壞了。可是一旦出現報警,僥倖內心是萬萬不能的……
#smartctl -A   /dev/sda  查看硬盤的詳細信息 ui

測試硬盤使用時間以及寫入字節數spa

#smartctl -s on  /dev/sda  若是沒有打開SMART技術,使用該命令打開SMART技術。 
#smartctl -t short  /dev/sda  後臺檢測硬盤,消耗時間短; 
#smartctl -t long  /dev/sda   後臺檢測硬盤,消耗時間長; 
#smartctl -C -t  /dev/sda   short前臺檢測硬盤,消耗時間短; 
#smartctl -C -t  /dev/sda   long前臺檢測硬盤,消耗時間長。其實就是利用硬盤SMART的自檢程序。 
#smartctl -X   /dev/sda      中斷後臺檢測硬盤。 
#smartctl -l selftest  /dev/sda  顯示硬盤檢測日誌。 
#smartctl -l error   /dev/sda    顯示硬盤錯誤彙總。 
若是須要按期登陸到服務器上運行smartctl比較麻煩時,linux還提供了系統進程smartd,編輯配置文件:1    vi  /etc/smartd.conf
這個配置文件中大部分多是註釋掉的說明,只須要寫入和當前硬盤相關的配置便可:操作系統

/dev/sda -H  -m  test@test123123.com

 // 監控磁盤的健康狀態,當SMART中報告 PASSED的時候不理睬。一旦出現 Failure,馬上用郵件通知用戶指定的郵箱.net

/dev/sda -a -m  admin@example.com,root@localhost // 監控磁盤的全部屬性,當SMART中報告 PASSED的時候不理睬。一旦出現 Failure,馬上用郵件通知用戶指定的郵箱
 /dev/twa0 -d 3ware,0 -a -s L/../../7/00 

// 監控3ware 9000控制器上的第一個ATA磁盤的全部屬性,在每一個禮拜天的00:00--01:00進行長格式的自我檢測

/dev/sg2 -d areca,1 -a  -s L/../(01|15)/./22

// 監控Areca Raid控制器上的第一個SATA磁盤的全部屬性,在每一個禮拜月的第1天和第15天的22:00--23:00進行長格式的自我檢測

-s (O/../.././(00|06|12|18)|S/../.././01|L/../../6/03) // 在天天的00:00,06:00,12:00,18:00進行離線的自檢,並在天天的01:00-02:00進行短格式的自檢,並在每一個禮拜6的03:00-04:00進行長格式的自檢 

配置好 smartd.conf後需執行

/etc/init.d/smartd restart 便可生效

其餘和smartd.conf相關的配置可參見:

http://smartmontools.sourceforge.net/man/smartd.conf.5.html 
使用 badblocks檢測硬盤壞塊 
badblocks命令能夠檢查磁盤裝置中損壞的區塊。執行該指令時須指定所要檢查的磁盤裝置,及此裝置的磁盤區塊數。
語法與參數:    語法:badblocks [-svw][-b ][-o ][磁盤裝置][磁盤區塊數][啓始區塊]參數: -b 指定磁盤的區塊大小,單位爲字節。-o 將檢查的結果寫入指定的輸出文件。-s 在檢查時顯示進度。-v 執行時顯示詳細的信息。-w 在檢查時,執行寫入測試。 [磁盤裝置] 指定要檢查的磁盤裝置。[磁盤區塊數] 指定磁盤裝置的區塊總數。 [啓始區塊] 指定要從哪一個區塊開始檢查。
badblocks檢測磁盤壞塊:

badblocks -s//顯示進度  -v//顯示執行詳細狀況   /dev/sda1
# badblocks -s -v /dev/sda
正在檢查從 0 到 244198583的塊
Checking for bad blocks (read-only test): ^C0.10% done, 0:04 elapsed
Interrupted at block 272896 
$badblocks -s//顯示進度 -w//以寫去檢測 -v//顯示執行詳細狀況 /dev/sda2
# badblocks -w -s -v /dev/sda1
Checking for bad blocks in read-write mode
From block 0 to 25607577
Testing with pattern 0xaa: ^C0.73% done, 0:03 elapsed

注意,不能以寫的方式檢測已經掛載的硬盤
使用hdparm測試   
測試硬盤讀寫速度
# hdparm -Tt /dev/sda
/dev/sda:
Timing cached reads:   
1918 MB in  2.00 seconds = 959.62 MB/sec
Timing buffered disk reads:  184 MB in  3.00 seconds =  61.26 MB/sec 

hdparm可檢測,顯示與設定IDE或SCSI硬盤的參數。

語法:

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 <傳輸模式>] [設備]
-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硬盤的自動省電功能。

相關文章
相關標籤/搜索