Стал у меня в начале (склероз: не этого, прошлого) года сбоить EVO870 на терабайт. Заметил по периодическим сбоям на ровном месте, оказывается — ошибки чтения. На нём была только сама ОС и игры, так что заменил без особых потерь. Симптомы простые — в нескольких местах на диске обнаружились локации, откуда ничего не читалось без ошибки. Т.е. никаких этих вот «ssd сбоит, но даёт прочитать хотя бы» — нет, тупо битые файлы, копирование виснет, а «187 Reported_Uncorrect» растёт как на дрожжах. Часть этих зон пришлась на файлы с играми, а некоторые на содержимое /usr. Но поскольку ничего ключевого затронуто не было, то я долго думал, что просто Steam лажает, например.
Если посмотреть SMART, то было примерно так:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
5 Reallocated_Sector_Ct 0x0033 045 045 010 Pre-fail Always - 606
9 Power_On_Hours 0x0032 098 098 000 Old_age Always - 9136
12 Power_Cycle_Count 0x0032 098 098 000 Old_age Always - 1995
177 Wear_Leveling_Count 0x0013 099 099 000 Pre-fail Always - 3
179 Used_Rsvd_Blk_Cnt_Tot 0x0013 045 045 010 Pre-fail Always - 606
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 045 045 010 Pre-fail Always - 606
187 Reported_Uncorrect 0x0032 098 098 000 Old_age Always - 14609
190 Airflow_Temperature_Cel 0x0032 064 055 000 Old_age Always - 36
195 Hardware_ECC_Recovered 0x001a 199 199 000 Old_age Always - 14609
199 UDMA_CRC_Error_Count 0x003e 099 099 000 Old_age Always - 3
235 Unknown_Attribute 0x0012 099 099 000 Old_age Always - 9
241 Total_LBAs_Written 0x0032 099 099 000 Old_age Always - 4293672984
А потом собстсвенно логи последних из этих 14609 ошибок. Примерно так (если что, здесь и выше значения уже после моих сегодняшних экспериментов, на момент начала было где-то 13 тыщ):
Error 14609 occurred at disk power-on lifetime: 9135 hours (380 days + 15 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 51 08 90 69 47 40
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
e1 00 0f 00 00 00 40 00 01:22:44.593 IDLE IMMEDIATE
ef 03 46 00 00 00 40 00 01:22:44.593 SET FEATURES [Set transfer mode]
ef 02 00 00 00 00 40 00 01:22:44.593 SET FEATURES [Enable write cache]
e1 00 02 00 00 00 40 00 01:22:44.593 IDLE IMMEDIATE
ec 00 01 00 00 00 40 00 01:22:44.593 IDENTIFY DEVICE
Error 14608 occurred at disk power-on lifetime: 9135 hours (380 days + 15 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
00 51 01 10 00 00 00 Error: at LBA = 0x00000010 = 16
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
60 08 00 90 69 47 00 00 01:22:44.005 READ FPDMA QUEUED
60 08 00 88 69 47 00 00 01:22:44.005 READ FPDMA QUEUED
60 08 00 80 69 47 00 00 01:22:44.005 READ FPDMA QUEUED
60 08 00 78 69 47 00 00 01:22:44.005 READ FPDMA QUEUED
60 08 00 70 69 47 00 00 01:22:44.005 READ FPDMA QUEUED
Error 14607 occurred at disk power-on lifetime: 9135 hours (380 days + 15 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
00 51 08 00 6a 47 40 Error: at LBA = 0x00476a00 = 4680192
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
60 00 00 00 69 47 40 00 01:22:11.833 READ FPDMA QUEUED
60 00 08 00 68 47 40 01 01:22:11.833 READ FPDMA QUEUED
60 00 00 00 67 47 40 00 01:22:11.833 READ FPDMA QUEUED
60 00 00 00 66 47 40 00 01:22:11.833 READ FPDMA QUEUED
60 00 00 00 65 47 40 00 01:22:11.833 READ FPDMA QUEUED
Погуглил я тогда интернеты, и нашёл, что на серию 870EVO есть жалобы по всему развитому миру. То ли кремний самсунгу завезли грязный, то ли чихнул кто в стерильной зоне, но чипы памяти вышли сбойные, и SSD стали отказывать по моему сценарию.
Ну я его на полочку положил, да и как-то забыл, благо гарантия до 2026. Вдруг что ещё придумаю. Ну вот сегодня решил придумать. Подключил его, стал делать смарт-тесты. И длинный, и короткий завершались досрочно с ошибкой чтения:
Self-test execution status: ( 121) The previous self-test completed having
the read element of the test failed.
...
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed: read failure 80% 9137 10544288
# 2 Extended offline Completed: read failure 90% 9137 10544288
# 3 Extended offline Completed: read failure 90% 9136 10544288
# 4 Short offline Completed: read failure 80% 9136 10544288
# 5 Short offline Completed: read failure 80% 9136 10544288
Стал смотреть badblocks. Он довольно резво начал выплёвывать номера:
smacker@Ideapad510 ~ $ sudo badblocks -v /dev/sdc
Checking blocks 0 to 976762583
Checking for bad blocks (read-only test): 5272132
5272144
5272145
5272146
5272147
5274296
5274297
5274298
5274299
5274516
5274517
5274518
5274519
5276096
5276097
5276098
5276099
5279436
...
Ну я попробовал «полечить» через hdparm (hdparm --repair-sector 5272144 --yes-i-know-what-i-am-doing /dev/sdc), не преуспел. Он снова стал всплывать. Всё это время значение в поле 187 SMART только росло.
Ну тут я психанул и забил диск терабайтом нулей с помощью dd. И что же? А рост закончился. Я запустил badblocks... и он прошелестел всем диском, и ничего не нашёл. Я запустил тест 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% 9139 -
# 2 Short offline Completed without error 00% 9138 -
# 3 Short offline Completed: read failure 80% 9137 10544288
# 4 Short offline Completed: read failure 80% 9137 10544288
# 5 Extended offline Completed: read failure 90% 9137 10544288
# 6 Extended offline Completed: read failure 90% 9136 10544288
# 7 Short offline Completed: read failure 80% 9136 10544288
# 8 Short offline Completed: read failure 80% 9136 10544288
Сейчас статистика застыла на таких значениях:
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
5 Reallocated_Sector_Ct 0x0033 045 045 010 Pre-fail Always - 606
9 Power_On_Hours 0x0032 098 098 000 Old_age Always - 9139
12 Power_Cycle_Count 0x0032 098 098 000 Old_age Always - 1996
177 Wear_Leveling_Count 0x0013 099 099 000 Pre-fail Always - 4
179 Used_Rsvd_Blk_Cnt_Tot 0x0013 045 045 010 Pre-fail Always - 606
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 045 045 010 Pre-fail Always - 606
187 Reported_Uncorrect 0x0032 098 098 000 Old_age Always - 15972
190 Airflow_Temperature_Cel 0x0032 070 047 000 Old_age Always - 30
195 Hardware_ECC_Recovered 0x001a 199 199 000 Old_age Always - 15972
199 UDMA_CRC_Error_Count 0x003e 099 099 000 Old_age Always - 3
235 Unknown_Attribute 0x0012 099 099 000 Old_age Always - 10
241 Total_LBAs_Written 0x0032 099 099 000 Old_age Always - 6251131313
И вроде бы больше ничего не происходит (например, поле 187 не изменилось уже после прохода badblocks по всему диску).
А теперь, уважаемые знатоки — внимание, вопрос: диск выздоровел (перемапил сбойные области, я уж не знаю, т.к. «5 Reallocated_Sector_Ct» застыл на 606), или ему временно полегчало напоследок, чтобы он мог позвать близких к смертному одру?