Ssd

SMART 測試在幾次執行後自行修復

  • September 17, 2022

我發現了一些奇怪的東西:

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,因為它沒有通過測試…

數據與糾錯資訊一起儲存,該資訊允許糾正多個比特錯誤,並檢測(更高)數量的比特錯誤。

簡單的情況是四個位之間的多數票:

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 個。當剩下 10% 的塊時,該屬性將進入FAILING_NOW狀態,因此大約為 50。

所以,是的,我相信 SSD 有點狡猾,因為除了讀取失敗之外,它還拾取了許多重新分配的扇區。

引用自:https://unix.stackexchange.com/questions/717605