Как стать автором
Обновить

HP опубликовала патч для своих SSD, который исправляет проблему с полной потерей данных после 32768 часов работы

Время на прочтение2 мин
Количество просмотров20K
Всего голосов 27: ↑27 и ↓0+27
Комментарии36

Комментарии 36

Хм… то есть количество отработанных часов обрабатывается как переменная со знаком… хм… Зато быстро и дёшево разработали, быстро выкатили патч. Интересно, через ~3 года и 9 месяцев не придётся ли снова патчить?

Счётчик, который переполнится через 3 года. Ошибка, которую легко допустить, и сложно найти. Скорее всего, это что-то историческое, пришедшее из 20 века; вряд ли в том контроллере имеет смысл использовать 16-битные переменные. Тестирование ее не выявит, анализатор кода тоже.

Статический анализатор может найти. А вообще вот зачем код счётчика часов работы настолько тесно связан с остальным кодом, что сбой в этом счётчике влияет на данные. И как можно написать прошивку, что фикс такой ошибки не позволяет получить данные на жестком диске.
Проблема современных ssd — умный контроллер, который держит полную карту блоков, с указанием где какие данные лежат. Если сломалась запись этой карты — мы получаем вместо наших данных просто мешанину секторов в случайном порядке.
Умный контроллер — это не проблема, это просто отлично. Он позволяет равномерный износ, быструю работу, прозрачность для остального железа и уйму всяких печенек в дополнение.
Но проблема в неумении писать прошивку для этого умного контроллера, которая надёжно разделяет разные блоки кода. И когда второстепенная печенька ломает логику всей системы это беда. А когда выход из строя печеньки ещё и портит данные, то есть не реализованы простейшие функции реакций на исключительные ситуации — это катастрофа.

Существуют FS, разработанные для использования на flash памяти.
Умные контроллеры со своими кривыми прошивками, собственным CPU и остальной периферией — костыль для того, чтобы не пользоваться такими FS.

Существуют FS, разработанные для использования на flash памяти.


Угу.

Умные контроллеры со своими кривыми прошивками, собственным CPU и остальной периферией — костыль для того, чтобы не пользоваться такими FS.


Иногда почти всегда вместе с SSD нужна файловая система, которая умеет разные плюшки типа журналирования, квот, снапшотов… У jffs2 (например) с этим никак.

Это вопрос к MS :)
Умные контроллеры и появились как раз из-за их нежелания что-либо делать. По этой же причине специализированные FS в обычном ПК и не разрабатываются. Слишком много софта и желания сохранения обратной совместимости.

Мучаться осталось недолго — новый тренд в лишении SSD мозгов и передаче управления ОС.
Так давно уже. Например контроллер SM2263XT где часть функций переложена на ОС — технология Host Memory Buffer. Такая SSD работает только в Windows 10 (но это не точно).
Чем-то напоминает dial-up модемы, где перед вымиранием оных все функции переложили на драйверы, оставив в железе только ЦАП-АЦП.
Хм… то есть количество отработанных часов обрабатывается как переменная со знаком… хм…
И что такого? Unixtime вон тоже знаковое, хотя казалось бы, зачем. Я довольно часто в сишных исходниках и в схемах БД SQL встречаю такие ситуации, что кажется само существование unsigned типов для программистов является тайной за семью печатями.

Если минус, то можно дату до 1970 года использовать, наверное.

Имхо в знаковости этой переменной проблемы как раз нет, проблема в том, что она 16-битная.
Была бы она беззнаковая — ну окей, 65536 часов не сильно лучше.

Если не поставили проверку на переполнение, то ещё столько же времени пройдет и счётчик обнулится.

возможно, "патч" просто сбрасывает счётчик в ноль, тем самым отодвигая ещё на 32768 часов (~3 года и 9 месяцев)

Скорее там
42,42c42,42
<     short int time;
---
>     unsigned short int time;

с тем же эффектом. А там и все гарантийные сроки истекут.
Тоже так подумал. Зачем байты зря тратить.
Я вообще не представляю, как можно криво реализовать не просто SMART, а один из его стандартных (не vendor-specific) атрибутов?! Тут же не только «всё уже написано до нас», но и ещё оттестировано десятилетиями на миллионах устройств хранения.

А кто вам сказал, что дело в смарте?

Ну с реализацией смарта производители налетали ещё в до-ssd эпоху.

Классический пример того, как cluster превращается в cluster fuck. Причина очевидна — если в кластере все узлы работают на одном и том же ПО одной и той же версии, то и баги в них одни и те же. Поделили на ноль на 32768 час работы, обнаружили високосную секунду, досчитали до 42, обнаружили, что год, месяц и день — простые числа. Не важно что, важно, что одновременно.


Единственным решением в такой ситуации может быть использование двух разных реализаций. И я говорю не про фирмварю конкретного диска, а про ПО на серверах. СХД неуязвимая и супернадёжная? С одной и той же версией ПО на каждом узле, ПО, в котором, в этот раз, наконец-то, не будет багов. Почему? Потому что верьте нам.

32768 часов хватит каждому
не всегда можно выбирать, иметь с ними дела или нет, к сожалению

p.s. хотя лично я довольно хорошо к их серверной продукции относился, правда давно это было
НЛО прилетело и опубликовало эту надпись здесь
Хорошо, что хоть 16битный знаковый факап, а не 8битный беззнаковый.
Такой бы обнаружился скорее всего еще до поступления в продажу.
Ну так гарантийный срок отработало, какие претензии? Имеет право рассыпаться на атомы и улететь в атмосферу: )
Вот подгорит у адептов 'никогда не ставлю апдейты, работает — не трогай', когда начнёт всё разваливаться на глазах из-за этого бага

Пойду, пожалуй, бекапы сделаю

А гарантия на эти SSD небось 3 года и 6 месяцев. При производстве просто немного перестарались с «искусственным устареванием» устройства.

За все перечисленные модели не скажу, но обычно 3 года ровно. Умеют же!

на то и похоже
Это PM1633, PM1633a, PM1635 and PM1643, но пока не ясно проблема в кривой брендированной прошивке от HPE или оригинальной от Samsung.
Если SSD подключены к контроллеру Smart Array, то остановка сервера во время обновления не потребуется: его можно будет провести «на горячую».

— Неправда!
HP Prolinat BL 460c G9 с блэйдовой дисковой полкой HP D2220sb потребовал ребутнуть систему (Win12) и только во время ребута контроллер перепрошил диски. Внутри дисковой полки стоит Smart Array P420i.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий