如何忽略特定的 SMART 錯誤

如何忽略特定的 SMART 錯誤

我每天都會收到一封關於相同 SMART 錯誤的電子郵件。我想配置 SMART 守護程序來忽略這個特定的錯誤,但僅限於此,因為如果有任何變化或變得更糟,我現在仍然想這樣做。

This email was generated by the smartd daemon running on:

 host name: jon
DNS domain: [Unknown]
NIS domain: (none)

The following warning/error was logged by the smartd daemon:

Device: /dev/sdb [SAT], 11 Currently unreadable (pending) sectors


For details see host's SYSLOG.

You can also use the smartctl utility for further investigation.
The original email about this issue was sent at Sun Nov 25 02:30:45 2012 CET
Another email message will be sent in 24 hours if the problem persists.

當這種情況第一次發生時,不可讀扇區的數量正在緩慢增加,因此進行了備份並嘗試了該線程中描述的許多方法: https://serverfault.com/questions/104417/how-do-i-easily-repair-a-single-unreaded-block-on-a-linux-disk

正如您從電子郵件中看到的,這是 1.5 年前的事,所以我不太記得我嘗試過什麼、沒有嘗試過什麼。然而,從那時起,磁碟保持穩定並正常工作,所以我認為沒有任何理由進行任何更改。 (是的,我定期建立備份。)

我只能想到一個解決方法,那就是忽略所有包含此確切文字的郵件,但這只能治療症狀,而不是原因。

編輯:

我知道你們中的許多人或大多數人會給我“更換磁碟”建議,這通常是針對“我收到此錯誤,我應該做什麼?”之類的問題的最佳建議。

但是,求求您,請接受我了解風險並詢問有關 SMART 守護程序的非常具體的問題。我在文件中沒有找到任何表明可以做我想做的事情的內容,但我想在使用我的解決方法之前先仔細檢查這裡。

更新:

大約一周前,計數器再次降至 1。我不知道是什麼原因造成的,我沒有對該機器進行任何維護工作。兩年多後,11個行業又恢復正常。這實在是太奇怪了。

答案1

您需要更改配置/etc/smartd.conf

在您的設定中新增參數:

-t -I 197  

它忽略屬性 197 - 待處理磁區

像這樣(範例):

/dev/ad0 -H -l error -l selftest -t -I 197

答案2

在不更換磁碟的情況下使訊息停止的最簡單方法是強制磁碟將磁區標記為好或壞,而不是“可能可能會壞”,這就是“待處理”的含義。您可以透過強製完全讀取磁碟來完成此操作:

sudo dd if=/dev/sdb of=/dev/null bs=64K conv=noerror

這將讀取磁碟的每個磁區並忽略錯誤,迫使磁碟重新檢查每個待處理的磁區並告訴您這些磁區是否實際上是壞的。

請注意,雖然這將清除目前 11 個待處理磁區,但可能會發現新的潛在壞扇區在此過程中(導致非零待處理扇區計數)。再次執行此操作,直到不再有待處理的磁區。

答案3

嗯...我不知道如何重新配置​​ smartd,但我現在可以讓 OMD[1] 忽略某些 SMART 錯誤(我曾經使用穩定的重新分配扇區數執行此操作)。如果您想監控盒子的更多參數而不僅僅是 SMART 讀數,也許這也是您的一個選擇。

答案4

已知某些磁碟機會錯誤地傳回此錯誤,例如 Crucial MX500 系列 SSD。一種解決方案是設定一個自訂磁碟機資料庫文件,其中/etc/smart_drivedb.h包含以下內容(我必須進行編輯以匹配我的韌體編號):

  { "Crucial/Micron MX500 SSDs",
    "CT(250|500|1000|2000)MX500SSD[14]", // tested with CT500MX500SSD1/M3CR023
    "M3CR032", // Firmware with bogus attribute 197
    "This firmware returns bogus raw values in attribute 197",
  //"-v 1,raw48,Raw_Read_Error_Rate "
    "-v 5,raw48,Reallocate_NAND_Blk_Cnt "
  //"-v 9,raw24(raw8),Power_On_Hours "
  //"-v 12,raw48,Power_Cycle_Count "
    "-v 171,raw48,Program_Fail_Count "
    "-v 172,raw48,Erase_Fail_Count "
    "-v 173,raw48,Ave_Block-Erase_Count "
    "-v 174,raw48,Unexpect_Power_Loss_Ct "
    "-v 180,raw48,Unused_Reserve_NAND_Blk "
    "-v 183,raw48,SATA_Interfac_Downshift "
    "-v 184,raw48,Error_Correction_Count "
  //"-v 187,raw48,Reported_Uncorrect "
  //"-v 194,tempminmax,Temperature_Celsius "
  //"-v 196,raw16(raw16),Reallocated_Event_Count "
    "-v 197,raw48,Bogus_Current_Pend_Sect " // Randomly flips 0 <> 1
  //"-v 198,raw48,Offline_Uncorrectable "
  //"-v 199,raw48,UDMA_CRC_Error_Count "
    "-v 202,raw48,Percent_Lifetime_Remain "
    "-v 206,raw48,Write_Error_Rate "
    "-v 210,raw48,Success_RAIN_Recov_Cnt "
    "-v 246,raw48,Total_LBAs_Written "
    "-v 247,raw48,Host_Program_Page_Count "
    "-v 248,raw48,FTL_Program_Page_Count"
  }

建立檔案後執行service smartd restart以更新 smartd 服務。然後您可以grep smartd /var/log/syslog看到它已為驅動器啟用。

來源:Smartmontools 支援票

相關內容