022.常見硬碟檢測方式

木二發表於2021-11-14

硬碟監測概述

硬碟異常損壞日常相對概率較高,同時不同的檔案系統(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  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      #顯示進度並且以寫入的方式檢測同時顯示詳細情況

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

相關文章