Miért mennek tönkre most a HP SSD-k?

Most olvastam egy friss hírt az Androgeek-en, hogy bizonyos HP SSD-k pontosan 32 768 óra (3 év 270 nap és 8 óra ) működés után tönkremennek.

A cikkben leírják, hogy a HP arra figyelmeztet, hogy bizonyos SSD típusok firmware-jét frissíteni kell, mivel azok ennyi használat után tönkremehetnek. Konkrétan az alábbi típusokról van szó:

HPE ProLiant, Synergy, Apollo, JBOD D3xxx, D6xxx, D8xxx, MSA, StoreVirtual 4335 és StoreVirtual 3200 szériás SSD-k

Az elérhető frissítés innen letölthető, azok számára, akiket ez érint. A HP nem reagált a hírre érdemben, nem kötötte az emberek orrára a probléma okát.

Bennem viszont megszólalt valamiféle belső csengő. Két dolog volt gyanús a hír olvasása után: miért ennyire pontos a szám, és hogyan lehet ezt egy firmware update-tel orvosolni?

A válasz valószínűleg az, hogy 16 bites előjeles integeren tároltak egy vagy több változót a firmware-ben. Ilyen esetben a tárolható értékek -32 768 és 32 767 között lehetnek. Ha egy változó átlépi az értékhatárt, és nincs megfelelően lekezelve, akkor ún. unhandled exception-t fog dobni a program, vagyis olyan hibát, amit nem tud lekezelni, és így a működése leáll. Ezt a jelenséget nevezzük integer overflow-nak. Az IT történelemben nem először fordul ilyen elő: az Ariane-5 első rakétáját is egy ilyen túlcsordulás semmisítette meg, de a Boeing is hasonló problémáktól szenvedhet a 737 Max 8 típusú repülőgépeinél.

A firmware frissítés során három dolgot tehettek meg:

  • egyszerűen előjel nélkülivé tették a 16 bites integert, így a maximáis érték már 65 535, így gyakorlatilag megduplázták az SSD-k életkorát,
  • levédték a változókat, így már azelőtt resetelhették őket, vagy állíthattak be értéket, hogy túlcsordukás történjen,
  • vagy a kettő kombinációja.