如何忽略特定的 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-unreadable-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 支持票

相关内容