我发现了一些奇怪的东西:
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 三星 EVO)固态硬盘,因此运行速度相对较快。我跑了另一个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 测试突然“修复”自身?我不认为驱动器可以再信任了?但是,我怀疑三星现在是否会对其进行 RMA,因为它没有通过测试...
数据与纠错信息一起存储,该信息允许纠正多个比特错误,并检测(更高)数量的比特错误。
简单的情况是四个位之间的多数票:
此方法允许纠正 1 个错误,并检测 2 个错误。如果你有3个错误,你会得到错误的结果。当然,实际方法使用更大的组,因此它仅将数据扩展了几个百分点,而不是 4 倍,同时还考虑到错误通常聚集在一起。
因此,“无法纠正”的错误不一定是坏媒体,它只是意味着数据现在无法恢复。覆盖数据可以很容易地修复它,我怀疑这就是发生的事情。
在显示错误之前,通常会多次尝试读取它。如果这些尝试之一成功,则该块被重新映射,并显示在
Used_Rsvd_Blk_Cnt_Tot
. 由于 123 的原始值被转换为 75,我预计大约有四分之一的保留块被使用,因此可能存在大约 500 个。当剩下 10% 的块时,该属性将进入FAILING_NOW
状态,因此大约为 50。所以,是的,我相信 SSD 有点狡猾,因为除了读取失败之外,它还拾取了许多重新分配的扇区。