硬碟監測概述
硬碟異常損壞日常相對概率較高,同時不同的檔案系統(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 test@test123123.com #配置監控磁碟的健康狀態,當SMART中報告 PASSED無視,Failure,則郵件通知
/dev/sda -a -m admin@example.com,root@localhost #監控磁碟的所有屬性,當SMART中報告 PASSED無視,Failure,則郵件通知
啟動startd服務。
# /etc/init.d/smartd restart #載入配置檔案啟動
提示:更多smart使用及配置參考:https://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 #顯示進度並且以寫入的方式檢測同時顯示詳細情況
注意:不能以寫的方式檢測已經掛載的硬碟