022.常見硬碟檢測方式
硬碟監測概述
硬碟異常損壞日常相對概率較高,同時不同的文件系統(xfs,reiserfs,ext3)其檢測方式不同。建議使用dmesag查看有沒有硬體I/O故障的日誌,也可使用用fsck確認是否文件系統異常。
SMART檢測硬碟
SMART是一種磁碟自我分析檢測技術,硬碟運行中會將主要參數進行記錄,主要有:型號、容量、溫度、密度、扇區、尋道時間、傳輸、誤碼率等。
硬碟運行一段時間後,如上參數會有相應的變動,某些參數超過閥值會出現報警。依靠相應的報警可初步判斷硬碟是否接近(已經)損壞。
啟用SMART
SMART是和主板BIOS上相應功能配合的,在使用smart之前必須在bios設置中啟動相關特性。
硬體特性開啟smart的情況下,對於Linux,有相應的smartd服務駐守運行,該進程能監視、分析和匯聚相關硬碟情況。
smartctl簡單用法
smartctl可用於對磁碟進行相關檢測,主要用法如下:
smartctl -a
smartctl -s on
smartctl -t short
smartctl -t long
smartctl -C -t short
smartctl -C -t long
smartctl -X
smartctl -l selftest
smartctl -l error
提示:首先通過dmesg工具,確認一下硬碟的設備符號。
smartctl使用示例
# smartctl -i /dev/sda
……
SMART support is: Available - device has SMART capability.
SMART support is: Enabled #表示啟用了smart支援
# smartctl --smart=on --offlineauto=on --saveauto=on /dev/sda
# smartctl -H /dev/sda
……
SMART overall-health self-assessment test result: PASSED
命令釋義:
PASSED:這表示硬碟健康狀態良好;
FAILED:硬碟不健康,建議更換硬碟。
提示:SMART僅報告磁碟不再健康,但是報警後能持續運行多長時間無法確定。
#smartctl -A /dev/sda #查看硬碟的詳細資訊,測試硬碟使用時間以及寫入位元組數
#smartctl -s on /dev/sda #如果沒有打開SMART技術,使用該命令打開SMART技術。
#smartctl -t short /dev/sda #後台檢測硬碟,消耗時間短;
#smartctl -t long /dev/sda #後台檢測硬碟,消耗時間長;
#smartctl -C -t short /dev/sda #前台檢測硬碟,消耗時間短;
#smartctl -C -t long /dev/sda #前台檢測硬碟,消耗時間長。
#smartctl -X /dev/sda #中斷後台檢測硬碟。
#smartctl -l selftest /dev/sda #顯示硬碟檢測日誌。
#smartctl -l error /dev/sda #顯示硬碟錯誤匯總。
smart常駐配置
通常執行smartctl需要在伺服器終端執行,sarmt也支援作為服務運行在服務端,進程deamon為startd,從而實現定時判斷硬碟狀態,同時指定報警、日誌等。
配置方式
如下示例配置好 smartd.conf 後啟動進程即可。
# vi /etc/smartd.conf
/dev/sda -H -m [email protected] #配置監控磁碟的健康狀態,當SMART中報告 PASSED無視,Failure,則郵件通知
/dev/sda -a -m [email protected],root@localhost #監控磁碟的所有屬性,當SMART中報告 PASSED無視,Failure,則郵件通知
啟動startd服務。
# /etc/init.d/smartd restart #載入配置文件啟動
提示:更多smart使用及配置參考://www.smartmontools.org/wiki/TocDoc
badblocks檢測硬碟
badblocks概述
badblocks命令可以檢查磁碟裝置中損壞的區塊。該命令需要指定所要檢查的磁碟設備,及此磁碟區塊數。
語法:
badblocks [-svw][-b ][-o ][磁碟裝置][磁碟區塊數][啟始區塊]
參數:
- -b 指定磁碟的區塊大小,單位為位元組。
- -o 將檢查的結果寫入指定的輸出文件。
- -s 在檢查時顯示進度。
- -v 執行時顯示詳細的資訊。
- -w 在檢查時,執行寫入測試。
- [磁碟設備] 指定要檢查的磁碟設備。
- [磁碟區塊數] 指定磁碟設備的區塊總數。
- [啟始區塊] 指定要從哪個區塊開始檢查。
badblocks使用示例
badblocks檢測磁碟壞塊:
badblocks -s -v /dev/sda1 #顯示進度和執行檢查的詳細情況
# badblocks -s -v /dev/sda
# badblocks -s -w -v /dev/sda2 #顯示進度並且以寫入的方式檢測同時顯示詳細情況
注意:不能以寫的方式檢測已經掛載的硬碟