SMART 测试在运行几次后自行修复

SMART 测试在运行几次后自行修复

我发现了一些对我来说很奇怪的事情:

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%      8003         -
# 2  Extended offline    Completed: read failure       90%      8001         5907400
# 3  Extended offline    Completed: read failure       90%      8001         5907400
# 4  Extended offline    Completed: read failure       90%      8001         5907400
# 5  Extended offline    Completed: read failure       90%      8001         5907400
# 6  Short offline       Completed: read failure       80%      8001         5907400
# 7  Short offline       Completed: read failure       80%      8000         5907400
# 8  Extended offline    Completed without error       00%         1         -

我的驱动器抛出大量 ATA 错误,数据无法读取。我决定对它进行 RMA,因此我运行了hdparm安全擦除程序并扔掉shred了它。由于这是一个小型(500GB Samsung EVO)SSD,因此速度相对较快。我运行了另一个smartctl -t short,然后......它“修复”了自己。

该驱动器仍然具有ATA Error Count: 207以下属性:

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   075   075   010    Pre-fail  Always       -       123
  9 Power_On_Hours          0x0032   098   098   000    Old_age   Always       -       8004
 12 Power_Cycle_Count       0x0032   099   099   000    Old_age   Always       -       27
177 Wear_Leveling_Count     0x0013   099   099   000    Pre-fail  Always       -       4
179 Used_Rsvd_Blk_Cnt_Tot   0x0013   075   075   010    Pre-fail  Always       -       123
181 Program_Fail_Cnt_Total  0x0032   100   100   010    Old_age   Always       -       0
182 Erase_Fail_Count_Total  0x0032   100   100   010    Old_age   Always       -       0
183 Runtime_Bad_Block       0x0013   075   075   010    Pre-fail  Always       -       123
187 Reported_Uncorrect      0x0032   099   099   000    Old_age   Always       -       207
190 Airflow_Temperature_Cel 0x0032   060   051   000    Old_age   Always       -       40
195 Hardware_ECC_Recovered  0x001a   199   199   000    Old_age   Always       -       207
199 UDMA_CRC_Error_Count    0x003e   099   099   000    Old_age   Always       -       1
235 Unknown_Attribute       0x0012   099   099   000    Old_age   Always       -       12
241 Total_LBAs_Written      0x0032   099   099   000    Old_age   Always       -       3737223587

是什么原因导致 SMART 测试突然“自行修复”?我认为该驱动器不再值得信任?但是,我怀疑三星现在不会将其退回,因为它并没有通过测试……

编辑:为了故事的完整性,三星确实更换了全新的驱动器。

答案1

数据与纠错信息一起存储,纠错信息允许纠正多个位错误并检测(更多)位错误。

简单的情况是四位中的多数票:

0000 - '0', no error
0001 - '0', 1 error
0010 - '0', 1 error
0011 - uncorrectable
0100 - '0', 1 error
0101 - uncorrectable
0110 - uncorrectable
0111 - '1', 1 error
1000 - '0', 1 error
1001 - uncorrectable
1010 - uncorrectable
1011 - '1', 1 error
1100 - uncorrectable
1101 - '1', 1 error
1110 - '1', 1 error
1111 - '1', 0 errors

该方法允许纠正 1 个错误,并检测 2 个错误。如果有 3 个错误,您将得到错误的结果。当然,实际方法使用更大的组,因此它仅将数据扩展了百分之几,而不是 4 倍,同时还考虑到错误通常聚集在一起。

因此,“不可纠正”的错误不一定是介质损坏,它只是意味着数据现在无法恢复。覆盖数据可以很容易地修复这个问题,我怀疑这就是发生的事情。

在显示错误之前,通常会多次尝试读取错误。如果这些尝试之一成功,则该块将被重新映射,并显示在Used_Rsvd_Blk_Cnt_Tot.由于原始值 123 被转换为 75,我预计大约会使用四分之一的保留块,因此可能存在大约 500 个。FAILING_NOW当还剩下 10% 的块时(即 50 左右),此属性将进入状态。

所以,是的,我认为 SSD 有点狡猾,因为除了读取失败之外,它还获取了许多重新分配的扇区。

相关内容