Ssd
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 三星 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 有點狡猾,因為除了讀取失敗之外,它還拾取了許多重新分配的扇區。