LINUX.ORG.RU

EVO870, «187 Reported_Uncorrect» и обнуление

 870evo, , , ,


1

5

Стал у меня в начале (склероз: не этого, прошлого) года сбоить 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), или ему временно полегчало напоследок, чтобы он мог позвать близких к смертному одру?

★★★★★

Последнее исправление: Smacker (всего исправлений: 1)
Ответ на: комментарий от ox55ff

Скорее это рассказы про дешевизну qlc являются прогревом гоев, чтобы впарить им, условно, два медленных чипа по цене четырёх быстрых. Если кто и выигрывает от такой «экономии», так это производители. Надёжность такой памяти оставим за скобками. Если даже на tlc спустя несколько месяцев холодного хранения данные с трудом читаются, то страшно представить что будет с qlc.

anonymous
()