Причиной потери данных в накопителях samsung оказалась ошибка в linux

Реабилитация Samsung

Обстоятельством утраты данных на автомобилях с Linux была неточность в ядре ОС — в частности, в неправильном сотрудничестве между драйвером RAID и драйвером SCSI/ATA, растолковали в компании Samsung Electronics, которую изначально посчитали виновной в происхождении неприятности.

В июне 2015 г. калифорнийская Algoli сказала, что нашла проблему в SSD-накопителях Samsung SM843TN и PM853T, моделях серии Samsung SSD 840 Pro и модели серии Samsung SSD 850 Pro емкостью 512 ГБ.

Обнаружение неприятности

Эксперты Algoli распознали проблему по окончании того, как в их дата-центре начал срабатывать механизм защиты от утраты данных, и кое-какие серверы стали переходить в режим лишь чтения. В ходе проверки данных на SSD-накопителях стало известно, что последние 512 байт файлов были заменены последовательностями нулей, а файлы размером менее 512 байт были заменены нулями всецело.

В конечном итоге эксперты Algoli узнали, что сбои происходят на серверах с определенной конфигурацией аппаратного обеспечения — в частности, оснащенных SSD-накопителями одного и того же производителя — Samsung. Виновной в замещении актуальных данных на нули была признана команда TRIM, которая разрешает ОС уведомить SSD-накопитель о том, какие конкретно блоки уже не содержат информации и их можно считать безлюдными.

Причиной потери данных в накопителях samsung оказалась ошибка в linux
SSD-накопители Samsung были ни при чем

Отрицание вины

В июле 2015 г. инженеры компании Samsung сказали, что в данной ситуации нет вины компании, и что неприятность находится в ядре Linux. Тогда же вендор дал обещание выпустить патч для ядра, ликвидирующий проблему.

Сущность неприятности

В компании пояснили сущность неприятности. Дело в том, что в то время, когда драйвер RAID в ядре Linux приобретает задачу выполнить последовательность операций чтения либо записи, он формирует отдельные буферы в памяти для каждой из операций. При исполнении же команды TRIM драйвером SCSI/ATA употребляется лишь один буфер.

В теории это не должно вызывать неприятностей, но на практике при некоем стечении событий появляется неточность «race condition» («состояние гонки») — в то время, когда конечное значение начинает зависеть от последовательности неконтролируемых событий. При появлении очереди команд TRIM, первая команда выполняется верно, но одна из последующих может случайно очистить буфер перед тем, как будет закончена прошлая операция. Именно это и стало причиной появлению нулей вместо данных на SSD-накопителях в дата-центре компании Algoli.

Патч

Samsung передала патч сообществу Linux и, пока он не будет включен в очередную сборку, советовала пользователям с линейной, RAID 0 либо RAID 10 конфигурациями, применяющими SSD-накопители с интерфейсом SATA, всецело отключить работу TRIM. Конфигурации с RAID 1 неприятность не затрагивает.

Совместное расследование

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

Увлекательные записи:

РЕШЕНИЕ ПРОБЛЕМЫ ТИРИНГА В LINUX


Комментарии и уведомления в настоящее время закрыты..

Комментарии закрыты.