В конце прошлой недели HP опубликовала патч прошивки своих твердотельных накопителей HPE, который решает критическую проблему потери данных и отказа диска после 32768 часов (~3 года и 9 месяцев) работы.

Речь идет о накопителях HPE SAS SSD с прошивками вплоть до версии HPD8. Проблема касается 20 моделей SSD, которые, например, поставляются вместе с серверами и хранилищами HPE ProLiant, Synergy, Apollo, JBOD D3xxx, D6xxx, D8xxx, MSA, StoreVirtual 4335 и StoreVirtual 3200.

Пока патч был опубликован только для части проблемных устройств. Остальные прошивки ожидаются 9 декабря.

Полный список уязвимых продуктов
HPE Synergy 480 Gen9 Compute Module, HPE Synergy 660 Gen9 Compute Module, HPE 400GB 12G SAS Mixed Use-3 SFF 2.5-in SC 3yr Wty MO0400JFFCF Solid State Drive, HPE 800GB 12G SAS Mixed Use-3 SFF 2.5-in SC 3yr Wty MO0800JFFCH Solid State Drive, HPE 1.6TB 12G SAS Mixed Use-3 SFF 2.5-in SC 3yr Wty MO1600JFFCK Solid State Drive, HPE 3.2TB 12G SAS Mixed Use-3 SFF 2.5-in SC 3yr Wty MO3200JFFCL Solid State Drive, HPE 480GB 12G SAS Read Intensive-3 SFF 2.5-in SC 3yr Wty VO0480JFDGT Solid State Drive, HPE 960GB 12G SAS Read Intensive-3 SFF 2.5-in SC 3yr Wty VO0960JFDGU Solid State Drive, HPE 3.84TB 12G SAS Read Intensive-3 SFF 2.5-in SC 3yr Wty VO3840JFDHA Solid State Drive, HPE Synergy 620 Gen9 Compute Module, HPE Synergy 680 Gen9 Compute Module, HPE ProLiant XL270d Gen9 Server, HPE D6020 Disk Enclosure, HPE StoreVirtual 3000 Storage, HPE D8000 Disk Enclosures, HPE ProLiant SL230s Gen8 Server, HPE ProLiant BL460c Gen8 Server Blade, HPE ProLiant BL465c Gen8 Server Blade, HPE ProLiant DL160 Gen8 Server, HPE ProLiant BL420c Gen8 Server Blade, HPE ProLiant DL320e Gen8 Server, HPE ProLiant WS460c Gen8 Graphics Server Blade, HPE ProLiant BL660c Gen8 Server Blade, HPE ProLiant DL560 Gen8 Server, HPE D6000 Disk Enclosure, HPE StoreEasy 1000 Storage, HPE D2220sb Storage Blade, HPE ProLiant SL210t Gen8 Server, HPE StoreVirtual 4335 Hybrid Storage, HPE ProLiant DL580 Gen8 Server, HPE D3000 Disk Enclosures, HPE ProLiant DL160 Gen9 Server, HPE ProLiant DL180 Gen9 Server, HPE ProLiant DL360 Gen9 Server, HPE ProLiant BL460c Gen9 Server Blade, HPE ProLiant DL380 Gen9 Server, HPE ProLiant ML350 Gen9 Server, HPE ProLiant XL230a Gen9 Server, HPE ProLiant DL388 Gen9 Server, HPE ProLiant DL120 Gen9 Server, HPE ProLiant WS460c Gen9 Graphics Server Blade, HPE ProLiant DL580 Gen9 Server, HPE ProLiant BL660c Gen9 Server Blade, HPE ProLiant DL560 Gen9 Server, HPE Apollo 4200 Gen9 Server, HPE Apollo 4500 System, HPE ProLiant XL450 Gen9 Server


Обновление является критическим и обязательно для раскатки, если вы хотите сохранить свои данные. От потери не спасет даже RAID-массив, если оба SSD в нем были введены в эксплуатацию одновременно и имеют одно и то же время работы.

Определить время работы SSD и оценить, сколько у вас осталось времени на апдейт, можно с помощью этого официального руководства HP (суть в проверке параметра Power-on Hours через Smart Storage Administrator). Если SSD подключены к контроллеру Smart Array, то остановка сервера во время обновления не потребуется: его можно будет провести «на горячую».

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

Комментарии (35)


  1. JerzyEx
    27.11.2019 10:29
    +3

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


    1. iig
      27.11.2019 10:57
      +1

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


      1. Goron_Dekar
        27.11.2019 11:01
        +1

        Статический анализатор может найти. А вообще вот зачем код счётчика часов работы настолько тесно связан с остальным кодом, что сбой в этом счётчике влияет на данные. И как можно написать прошивку, что фикс такой ошибки не позволяет получить данные на жестком диске.


        1. DaemonGloom
          27.11.2019 11:03

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


          1. Goron_Dekar
            27.11.2019 13:28
            +1

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


            1. Temtaime
              27.11.2019 14:14

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


              1. iig
                27.11.2019 14:44

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


                Угу.

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


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


              1. JerleShannara
                27.11.2019 16:34

                А не подскажите такую ФС для MS Windows 2012?


                1. Temtaime
                  27.11.2019 18:20

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


              1. navion
                28.11.2019 17:30

                Мучаться осталось недолго — новый тренд в лишении SSD мозгов и передаче управления ОС.


                1. Mur81
                  28.11.2019 17:58

                  Так давно уже. Например контроллер SM2263XT где часть функций переложена на ОС — технология Host Memory Buffer. Такая SSD работает только в Windows 10 (но это не точно).
                  Чем-то напоминает dial-up модемы, где перед вымиранием оных все функции переложили на драйверы, оставив в железе только ЦАП-АЦП.


    1. DreamingKitten
      27.11.2019 13:52

      Хм… то есть количество отработанных часов обрабатывается как переменная со знаком… хм…
      И что такого? Unixtime вон тоже знаковое, хотя казалось бы, зачем. Я довольно часто в сишных исходниках и в схемах БД SQL встречаю такие ситуации, что кажется само существование unsigned типов для программистов является тайной за семью печатями.


      1. tmin10
        27.11.2019 15:32

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


    1. Amomum
      27.11.2019 16:05

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


  1. Kvento
    27.11.2019 10:40
    +1

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


    1. justmara
      27.11.2019 13:53

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


      1. mobi
        27.11.2019 14:13

        Скорее там

        42,42c42,42
        <     short int time;
        ---
        >     unsigned short int time;

        с тем же эффектом. А там и все гарантийные сроки истекут.


        1. Treviz
          27.11.2019 14:36

          Тоже так подумал. Зачем байты зря тратить.


  1. antiBILLotic
    27.11.2019 10:57

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


    1. amarao
      27.11.2019 11:13

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


    1. JerleShannara
      27.11.2019 12:08

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


  1. amarao
    27.11.2019 11:16

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


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


  1. Apxuej
    27.11.2019 11:18

    32768 часов хватит каждому


  1. Andrey_Rogovsky
    27.11.2019 11:26
    +1

    Никогда не имейте дел с HP.


    1. DMGarikk
      27.11.2019 12:14

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

      p.s. хотя лично я довольно хорошо к их серверной продукции относился, правда давно это было


  1. diogen4212
    27.11.2019 11:45

    у меня недавно SSD от OCZ сдох, может, тоже по этой причине? 80% оставшегося ресурса, ничто не предвещало беды, а потом раз… и ничего, либо вообще Винда не видит, либо долго загружается и отображает его том в файловой системе RAW с нулевыми секторами. Чистое время работы возможно примерно такое же было


  1. JerleShannara
    27.11.2019 11:59

    Хорошо, что хоть 16битный знаковый факап, а не 8битный беззнаковый.


    1. ferosod
      27.11.2019 12:52

      Такой бы обнаружился скорее всего еще до поступления в продажу.


  1. genuimous
    27.11.2019 12:13
    +3

    Ну так гарантийный срок отработало, какие претензии? Имеет право рассыпаться на атомы и улететь в атмосферу: )


  1. DMGarikk
    27.11.2019 12:13
    +1

    Вот подгорит у адептов 'никогда не ставлю апдейты, работает — не трогай', когда начнёт всё разваливаться на глазах из-за этого бага


  1. polyakov_andrey
    27.11.2019 12:36

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


  1. akuzmin
    27.11.2019 13:29
    +1

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


    1. StSav012
      28.11.2019 08:37

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


    1. EvGenius1900
      28.11.2019 16:15

      на то и похоже


  1. navion
    28.11.2019 16:59

    Это PM1633, PM1633a, PM1635 and PM1643, но пока не ясно проблема в кривой брендированной прошивке от HPE или оригинальной от Samsung.