022.常見硬碟檢測方式

硬碟監測概述

硬碟異常損壞日常相對概率較高,同時不同的文件系統(xfs,reiserfs,ext3)其檢測方式不同。建議使用dmesag查看有沒有硬體I/O故障的日誌,也可使用用fsck確認是否文件系統異常。

SMART檢測硬碟

SMART是一種磁碟自我分析檢測技術,硬碟運行中會將主要參數進行記錄,主要有:型號、容量、溫度、密度、扇區、尋道時間、傳輸、誤碼率等。
硬碟運行一段時間後,如上參數會有相應的變動,某些參數超過閥值會出現報警。依靠相應的報警可初步判斷硬碟是否接近(已經)損壞。

啟用SMART

SMART是和主板BIOS上相應功能配合的,在使用smart之前必須在bios設置中啟動相關特性。
硬體特性開啟smart的情況下,對於Linux,有相應的smartd服務駐守運行,該進程能監視、分析和匯聚相關硬碟情況。

smartctl簡單用法

smartctl可用於對磁碟進行相關檢測,主要用法如下:
smartctl -a :檢查該設備是否已經打開SMART技術。
smartctl -s on :如果沒有打開SMART技術,使用該命令打開SMART技術。
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      #顯示進度並且以寫入的方式檢測同時顯示詳細情況

注意:不能以寫的方式檢測已經掛載的硬碟