LINUX.ORG.RU

[жж] словил сбойные сектора на nvme ssd

 , , , , ,


5

7

Дорогой Уважаемый ЛОР,

Я словил первое в своей жизни проявление сбойных секторов на SSD. Пациент — Samsung SSD 970 EVO 2TB с прошивкой 2B2QEXE7, в эксплуатации примерно год. Пару-тройку дней назад мне почему-то захотелось сделать копию вообще всех данных из домашней директории, включая файлы, которые легко скачать из сети при надобности. Некоторые из этих файлов лежали там с момента миграции на накопитель, без обращений. И при копировании одного из таких файлов программа сказала: «А я, кажись, чот не могу». После того, как потихоньку пришло осознание произошедшего, я глянул в лог и увидел там:

blk_update_request: critical medium error, dev nvme0n1, sector 313199872 op 0x0:(READ) flags 0x80700 phys_seg 8 prio class 0

Что интересно, во второй раз файл успешно скопировался. Не знаю, прочитались там настоящие данные или мусор. К сожалению, вот этот конкретный файл повторно скачать оказалось неоткуда. Чтение данных с nvme0n1 по тому адресу выдало какие-то данные, не нули. Тут я решил, что SSD умный, что он понял, что страница не читается стабильно, и увёл её в чулан, на её место подставил новую, а данные всё-таки скопировал. Но на всякий случай решил запустить холостое чтение с блочного устройства. Сбойных блоков оказалось больше. Пробовал читать конкретные места. Зачастую чтение было успешным, но через много чтений всё же происходили ошибки. Попробовал перезаписать место с ошибками чтения теми же данными. Ошибки там прекратились.

В итоге сделал дамп через ddrescue, а потом записал этот дамп обратно. Последующие попытки прочитать накопитель целиком уже никаких ошибок не давали. Сижу вот теперь как на пороховой бочке. Пользоваться дальше немного боязно, но и выбрасывать накопитель, который вроде работает, как-то жалко.

За время тестов в логи свалилось 546 строк с «blk_update_request: critical medium error», но ошибки иногда сыпались так часто, что в сумме набралось 888 «callbacks suppressed». В статусе накопителя написано, что ошибок доступа к носителю было 1484. Так как в логи основной системы не попало происходившее на LiveUSB, можно считать, что числа сходятся. К сожалению, не помню, были ли там ошибки до недавних событий. Всего различных сбойных секторов было 167 штук.

В данных из плохих секторов нашлись обрывки Packages из Debian. Судя по версиям пакетов, эти куски из очень старых Packages, возможно ещё из 2016. Если это так, они приехали во время миграции на накопитель, и с тех пор не перезаписывались и не читались. Один кусок оказался очень похож на файл переводов и нашёлся в /usr/share/locale/gl/LC_MESSAGES/coreutils.mo, который конечно же ни разу не читался с момента последней переустановки пакета coreutils в начале августа 2019.

smartctl:

=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        41 Celsius
Available Spare:                    100%
Available Spare Threshold:          10%
Percentage Used:                    1%
Data Units Read:                    162 937 114 [83,4 TB]
Data Units Written:                 65 584 401 [33,5 TB]
Host Read Commands:                 691 234 670
Host Write Commands:                544 796 594
Controller Busy Time:               3 278
Power Cycles:                       719
Power On Hours:                     2 249
Unsafe Shutdowns:                   82
Media and Data Integrity Errors:    1 484
Error Information Log Entries:      1 783
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0
Temperature Sensor 1:               41 Celsius
Temperature Sensor 2:               42 Celsius

Error Information (NVMe Log 0x01, max 64 entries)
No Errors Logged

Терабайт тридцать-сорок я добавил чтением накопителя во время тестов.

Думаю, из произошедшего можно сделать, как минимум, следующие выводы:

  • полгода без чтения страницы на SSD достаточно для последующих ошибок чтения;
  • чтение такой страницы не заставляет SSD подменять страницу на новую, он с радостью выдаёт ошибку чтения на одном и том же месте много раз подряд;
  • trim не означает очистку всех неиспользуемых блоков ФС, они же меньше страницы. Некоторые данные могут жить в закоулках годами;
  • SSD желательно периодически прочёсывать чтением, чтобы словить сюрпризы пораньше;
  • если такое происходит на TLC 3D V-NAND, страшно подумать, что будет на QLC.

Upd.
Узнал, что в NVMe есть фича 0x10, которая управляет температурами, при которых SSD должен начать тормозить для снижения нагрева. Правда для 970 EVO эти температуры дожны быть в диапазоне 80–82 °C, а попытка установить любые значения кроме 0 для фичи 0x10 завершаются неудачай.


Upd. 11 мая 2021, то есть примерно через год и два месяца после первого раза, появились новые ошибки чтения. При повторном чтении тех же мест ошибки повторялись, но через некоторое время пропали.


Upd. 5 июня 2021. Аккумулятор оказался вздут в той секции, что прилегает к SSD. Видимо, предупреждение о температурном лимите в 65°C на аккумуляторе написано не просто так.


Upd. 20 февраля 2022. Накопитель отправился на пенсию.

★★★★★

Последнее исправление: i-rinat (всего исправлений: 5)

Ответ на: комментарий от r0ck3r

Я бы грешил на материку все-таки

Да, неплохо бы в другой ПК вставить и погонять.

У меня два SSD глючили. Знакомым подарил — отлично работали. Один в сервис отдал по гарантии (хороший) — сказали «гоняли, всё нормально».

Купил новые, стало нормально. Так и не понял, в чём прикол…

Единственное, что спустя шесть лет накрылся БП. Вот его качество у меня сомнения вызывает, может он не тянул те старые жрущие модели на определённых линиях, а новые меньше жрут (может быть).

Короче неясно, но от перестановки в другой ПК всё становилось отлично с SSD.

fornlr ★★★★★
()

История конечно успешная. Но, имхо, не нужно было бы гнаться за таким объемом.

Слишком много мест, где может произойти сбой. Может у тебя чешуйка,волосок с пальца упали под микросхему и там начали окислять. Может во время сборки что попало под контакты.

Ну и качество самой памяти.

anonymous
()
Ответ на: комментарий от XoFfiCEr

Посмотри curiousmarc, она объясняет принцип работы core-memory

Там совсем беда, полная. Начиная от принципов работы - колдовство какое-то.

anonymous
()

trim не означает очистку всех неиспользуемых блоков ФС

Trim вообще не означает очистку, обычно это маркировка свободных блоков.

anonymous
()
Ответ на: комментарий от anonymous

Да может даже сам разъем окислился, либо, проблемы с питанием из-за БП, или какой конденсатор вздулся

r0ck3r ★★★★★
()
Ответ на: комментарий от Lordwind

Современные ячейки не держат заряд долго.

Всё так плохо? То есть ssd для ноута, который достают раз в год-два решительно противопоказан?

grem ★★★★★
()
Ответ на: комментарий от grem

Сейчас уже перешли на 3D, там это не так сильно проявляется. Надо искать конкретные модели и тестировать, инфа чисто теоретическая.

Lordwind ★★★★★
()
Ответ на: комментарий от grem

То есть ssd для ноута, который достают раз в год-два решительно противопоказан?

Что-то я не слышал, истории про то, как кто-то купил заваляышийся на складе ноутбук годичной давности, и у него посыпалось при запуске.

anonymous
()
Ответ на: комментарий от i-rinat

У меня на обычном hdd 15 лет назад при копировании большого объёма данных на диск лежащий летом снаружи корпуса данные копировались с ошибками. А если тот же диск охлаждался, то тот же объём перезаписывался нормально.

grem ★★★★★
()
Ответ на: комментарий от r0ck3r

Ну, у меня пока что нет аналога для замены накопителя в ноуте, так что тестировать в другом компьютере будет проблематично.

Но имеющиеся данные плохо ложатся на гипотезу о сбойной материнке. Если это действительно сбой материнки или процессора, то он какой-то странный — ошибки чтения, которые рапортует накопитель, располагались на повторяющихся адресах. Когда на одном из старых компов была проблема с SATA кабелем, ошибки рапортовал контроллер, и они возникали в большом диапазоне LBA, практически по всему диску. Да, в NVMe контроллера как такового нет, но если бы сбоило то, что вместо него, я бы ожидал разброс по всему адресному пространству, чего нет.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от grem

У меня лежал Samsung 860 EVO, который не включали больше года, наверное. Недавно использовал его как внешний, и перед этим прогнал чтение. Ошибок не было.

Думаю, потеря данных это просто лотерея. На заводе вряд ли тестируют на длительность удержания данных. Собрали, быстрые тесты провели, и вперёд, в магазины.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от aidaho

Там уже апокалипсис какой-то начался.

А… это collectd. В конце декабря 2020 в обновлении collectd появился код для опроса smart у nvme дисков. И какой-то там из запросов накопителю не нравится, он считает это ошибкой. На графиках прямо видно, как линейно это число ошибок растёт. Никак руки не доходят посмотреть, что там в запросе не так.

в другую машину втыкал?

Нет. Кстати, больше года ошибок не было. За этот год я раза два-три прогонял полное чтение.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от grem

Всё так плохо? То есть ssd для ноута, который достают раз в год-два решительно противопоказан?

Один из ноутов лежал пять лет, два MLC диска. Второй два года, TLC.

Проблем не было, но в случае с MLC можно выдвинуть гипотезу bit flip, т.к. ext4 была.
На втором btrfs бы завыла о чексуммах.
Всё поверх LUKS, но я не в курсе, завыл бы LUKS о bit flip в случае когда ext4 такое не могла задетектить.

Ну единственный подтверждённый bit flip у меня был с данными на HDD :)

aidaho ★★★★★
()

Когда ты делаешь dd ты читаешь trim-нутые блоки, которые диск не обновлял и которые вполне могут быть сбойными. Это норма. Вот ошибки при чтении существующих файлов это не норма.

Legioner ★★★★★
()

ну вообще износ ячеек может вполне такие эффекты делать.

не до конца отожженый водород -> горячие электроны, которые летают на плавающий затвор и обратно вышибают водород -> плывут параметры транзистора -> а там еще TLC какое нибудь и разница между уровнями с учетом уплывшего транзистора приводит к сбоям через полгода, когда заряд частично утечет с затвора.

salozar
()
Ответ на: комментарий от int13h

Можешь весь диск сдампить. Или диска тоже нет? :)

Minona ★★☆
()

Думаю, из произошедшего можно сделать, как минимум, следующие выводы

Я не стал изучать ссд, лень, просто как переехал на свой первый такой диск, сразу организовал хранение всех важных данных в облаках(гугл, дропбокс, яндекс), а на диске только хлам: система, кино-домино. Буквально через несколько месяцев был вознагражден, когда этот самый ссд приказал долго жить, с тех пор хожу довольный собой и разбираться во всяких тестах не собираюсь.

papin-aziat ★★★★★
()

Аккумулятор вздулся. Как раз в той секции, что прилегала к SSD. Вряд ли это совпадение.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от anonymous

fix

Не спеши его выкидывать

он ещё способен позажигать

anonymous
()

В итоге сделал дамп через ddrescue, а потом записал этот дамп обратно. Последующие попытки прочитать накопитель целиком уже никаких ошибок не давали. Сижу вот теперь как на пороховой бочке. Пользоваться дальше немного боязно, но и выбрасывать накопитель, который вроде работает, как-то жалко.

Нужно было после ddrescue накатить туда под вендой NTFS и запустить посекторную проверку. Вроде бы chkdsk /F /R. Только вот температуру под 80 градусов гарантирует, посекторно верифицирует даже пустой раздел. Я так спасал один винтчестер (оказывается питание было плохо подключено, вот и записалось немного сбойных секторов).

bhfq ★★★★★
()
Последнее исправление: bhfq (всего исправлений: 1)
Ответ на: комментарий от i-rinat

Недоверие к линуксовым nvme драйверам всего лишь!

bhfq ★★★★★
()

полгода без чтения страницы на SSD достаточно для последующих ошибок чтения;

*смотрит на SSD A-DATA SU900 на котором установлен Linux и который не включался уже 2 года*

e000xf000h
()
Ответ на: комментарий от i-rinat

какое же дерьмо эти ваши ноутбуки. прилегать там должен был только радиатор

anonymous
()
Ответ на: комментарий от greenman

Аккумулятор вздулся из-за тепла от SSD?

Да, я думаю, что из-за нагрева от SSD. Они практически вплотную находятся, между ними 3-5 мм. Больше всего вздулась ближайшая к SSD часть. Но это всё гипотезы, утверждать ничего нельзя. Разве что купить несколько новых аккумуляторов и соорудить тестовые стенды с нагревателями в разных местах.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от fornlr

. Вот его качество у меня сомнения вызывает, может он не тянул те старые жрущие модели на определённых линиях, а новые меньше

Не знаю как там в ssd, но в hdd было так, что потребление мощности хдд зависело от кол-ва и интенсивности чтения/записи. Поэтому вылет дисков из того же рейда, был достаточно частым явлением в системах с плохим бп. Т.е. сервак стартует начинает крутить диски мощности хватает, потом в час пик, нагрузка увеличивается и начинается большое кол-во рандомной записи/чтения мощности перестаёт хватать - контроллер определяет ошибки и диски выкидывает из рейда. В ssd, возможно, что-то похожее существует.

vtVitus ★★★★★
()
Ответ на: комментарий от papin-aziat

А всего-то надо использовать софтварный рейд миррор. И можно жить без облаков и тестоф.

vitus@vthome:~$ cat /proc/mdstat | grep md
md1 : active raid1 sda2[2] sdb2[3]
md2 : active raid1 sda3[2] sdb3[3]
md0 : active raid1 sda1[2] sdb1[3]
vitus@vtwork:~$ cat /proc/mdstat | grep md
md1 : active raid1 sda3[0] sdb3[1]
md0 : active raid1 sda2[0] sdb2[1]
vtVitus ★★★★★
()
Последнее исправление: vtVitus (всего исправлений: 2)
Ответ на: комментарий от vtVitus

софтварный рейд миррор

Плохо понимаю, что это такое. Я когда-то юзал рейд на фряхе, там удобно было: два диска с одинаковыми характеристиками тупо синхронизированы, вероятность поломки сразу двух нулевая. Учитывая, что я генерирую файлы небольших объёмов (даже сохранность аудиофайлов меня не беспокоит, так как я легко их сконвертирую, если потеряю), этот метод мне кажется совершенно избыточным, в старые времена было проще скидывать на флешки и тд. А с появлением кучи бесплатных облаков, всякие локальные решения вообще потеряли смысл.

papin-aziat ★★★★★
()
Ответ на: комментарий от vtVitus

софтварный рейд миррор. И можно жить без облаков и тестоф.

Бекапы это защита не только от поломок оборудования, но ещё и от ошибок пользователей. От последнего RAID не спасает.

i-rinat ★★★★★
() автор топика
20 февраля 2022 г.

Прошло почти два года. Время жизни темы подходит к концу. И как-то так совпало, что почти что ровно через два года я всё-таки отправил накопитель на пенсию.

Вот «финальный» вывод smartctl:

=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        45 Celsius
Available Spare:                    98%
Available Spare Threshold:          10%
Percentage Used:                    3%
Data Units Read:                    499 556 475 [255 TB]
Data Units Written:                 186 242 672 [95,3 TB]
Host Read Commands:                 2 125 910 783
Host Write Commands:                1 862 984 936
Controller Busy Time:               9 192
Power Cycles:                       1 948
Power On Hours:                     8 215
Unsafe Shutdowns:                   284
Media and Data Integrity Errors:    2 780
Error Information Log Entries:      1 678 893
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0
Temperature Sensor 1:               45 Celsius
Temperature Sensor 2:               52 Celsius
i-rinat ★★★★★
() автор топика

Все эти проблемы от протекания абстракций. Физически диск устроен совсем иначе, чем интерфейс к нему. Было бы лучше если вместо аппаратного контроллера распределением блоков занимался бы драйвер диска ОС или хотя бы был специальный протокол между аппаратным контроллером и драйвером диска (информация о времени последней саписи блока, инициация и мониторинг процесса обновления и т.д.).

X512 ★★★★★
()
Ответ на: комментарий от X512

Было бы лучше если вместо аппаратного контроллера распределением блоков занимался бы драйвер диска ОС

С SMR-дисками в итоге так и сделали, но только для датацентров (Host-managed SMR).

… Оказывается, для флэш уже тоже сделали:

The extensibility of the specifications encourages the development of independent command sets like Zoned Namespaces (ZNS) …

Key NVMe 2.0 Features:

  • The ZNS specification provides a zoned storage device interface that allows the SSD and host to collaborate on data placement. ZNS permits data to be aligned to the physical media of the SSD, improving overall device performance and cost while increasing the media capacity that can be made available to the host.

NVM Express Announces the Rearchitected NVMe(r) 2.0 Library of Specifications (03.06.2021)

… Instead of emulating the traditional block device model that SSDs inherited from hard drives and earlier storage technologies, the new NVMe Zoned Namespaces optional feature allows SSDs to implement a different storage abstraction over flash memory. This is quite similar to the extensions SAS and SATA have added to accommodate Shingled Magnetic Recording (SMR) hard drives, with a few extras for SSDs. …

The Next Step in SSD Evolution: NVMe Zoned Namespaces Explained (06.08.2020)

(информация о времени последней саписи блока, инициация и мониторинг процесса обновления и т.д.)

[жж] словил сбойные сектора на nvme ssd (комментарий)

gag ★★★★★
()

Upd. 20 февраля 2022. Накопитель отправился на пенсию.

Откровенно говоря, я бы побоялся брать большие объемы еще тогда. Слишком уже выглядит эта замануха - откровенным налипаловом денег на пальцы вендоров.

От силы там в цене 50$ на производство, будем считать что память дорогая. Но годами и пятилетками в гипермаркетах электроники висят флешки, пока уже сами от времени не разваливаются из-за внутренних процессов. А так ли дорога память?

anonymous
()
Ответ на: комментарий от greenman

почитал по ссылке, но реально не понял.

какой-то очередной маркетинговый маразм. лишний раз указывающий на то, что в контролерах ссд далеко все не радужно и прошивка так будь здоров как работает по анализу проходящих данных на диск.

anonymous
()
Ответ на: комментарий от greenman

в поддержку Самсунга обратиться

В том смысле, чтобы попытаться заменить?

Во-первых, не хочется отдавать накопитель со своими данными. Там вроде бы не должно быть ничего секретного в открытом виде, но полным шифрованием я с самого начала не озаботился. А во-вторых, даже если получится заменить, придётся либо сразу брать что-то на замену, пока сбойный накопитель тестируют, либо сидеть без основного накопителя, пока в поддержке не закончат разбираться.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от X512

Было бы лучше если вместо аппаратного контроллера распределением блоков занимался бы драйвер диска ОС

Уже пару десятилетий как существует. В Linux есть как минимум три файловых системы, которые могут работать поверх сырого NAND Flash: JFFS2, YAFFS и UBIFS.

От этого наоборот уходят, к eMMC, где есть flash translation layer, потому что работа поверх сырого NAND сопряжена с болью. Но в потребительских домашних роутерах вполне себе используют jffs2. Размеры флеша там совсем небольшие, поэтому время монтирования тоже маленькое, так что не так заметно.

i-rinat ★★★★★
() автор топика

Чёт как-то грусно. Было, пока у себя не проверил. Имею два: один OEM версию на 512 гб (вместе с ноутбуком шло) и 970 EVO 2TB. Первому диску 2 года 4 месяца, второму — 11 месяцев. На первом имеется покрытая пылью винда. Оба работают в одном ноутбуке. Поискал у себя в журнале (записи сохранились с апреля 2021). Ни одного такого сообщения

blk_update_request
для nvme не замечено.

Сейчас прогнал тупое чтение для обоих в /dev/null — ошибок нет.

По нагреву большой диск бьёт все рекорды. Первый датчик 81.8 градуса, второй — 100.8. Устройство из ада. На этих температурах стал скидывать скорость с 1860 (видимо делает паузы чтоб не нагреться сильнее).

Потом я понял, что диск может больше, у меня частота процессора была зарезана до 1.8 ГГц (забыл поднять после кина). Оказывается, они умеют быстрее.

По ходу прогрел PCH до 80 градусов. Радиатор ему действительно не нужен, потому что так сильно его прогреть надо постараться.

Кстати, к концу ssd немного остыл и разогнался до 2,2 ГБ/с. Вероятно, начало считываться неутилизированное пространство nvme.

Пишу это чтобы было. Брак не исключён. Не повезло. Но у меня флеш, правда, поменьше записывал, так что скорее всего не показатель.

UPD: второй всё-таки evo plus, но он тоже 970.

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

Кстати, насчёт поддержки. Я тут подумал, а что будет делать техподдержка в первую очередь? Наверное, сделает TRIM на всю доступную область и сделает тестовую запись. Возможно, на весь объём. Ну и попробовал сделать так. Стёр, записал весь объём, прочитал весь объём. Контрольные суммы совпали. Сегодня ещё раз прочитал — тоже совпали. Ошибок чтения не было, счётчики ошибок в «smart» остались на прежних уровнях.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Slavik763

Поискал у себя в журнале

NVMe накопители считают ошибки доступа к самому флешу; числа видно в выводе smartctl.

i-rinat ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.