Čas od času se v diskusích objeví prosba o prošetření výpisu ze smartu. A co hůř, někteří lidé dokonce doporučují používat různé programy od výrobců disků, které mají nějak odhadnout zdraví jejich výrobků. V tomto článku si ukážeme jak rozeznat zdravý disk od vadného z výpisu smart. Tento článek pojednává o rotačních discích. U SSD jsou další atributy, které nejsou předmětem tohoto článku.
Technologie SMART
Self-Monitoring, Analysis and Reporting Technology – interní systém implementovaný v disku pro včasné varování před jeho selháním. SMART má zajistit, že OS (a sekundárně i uživatel) se včas dozví o selhávajícím disku. Není to samospásné, SMART nevaruje vždy (asi 40% případů nepodchytí), ale když už varuje, tak je potřeba to brát vážně.
Co znamená výpis smart atributů
Pro výpis smart atributů se v linuxu nejlépe hodí příkaz smartctl
. Ve windows je potřeba použít například Crystal Disk Info. Pozor, ne každý program, který tvrdí, že zjistí stav disku jej skutečně zjistí. Jak uvidíme dále, je potřeba umět číst smart atributy včetně RAW hodnot.
Pojdme si tedy vypsat atributy:
# smartctl -A /dev/sda === START OF READ SMART DATA SECTION === SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 200 200 051 Pre-fail Always - 0 3 Spin_Up_Time 178 176 021 Pre-fail Always - 4075 4 Start_Stop_Count 100 100 000 Old_age Always - 103 5 Reallocated_Sector_Ct 200 200 140 Pre-fail Always - 0 7 Seek_Error_Rate 200 200 000 Old_age Always - 0 9 Power_On_Hours 028 028 000 Old_age Always - 53201 10 Spin_Retry_Count 100 100 000 Old_age Always - 0 11 Calibration_Retry_Count 100 100 000 Old_age Always - 0 12 Power_Cycle_Count 100 100 000 Old_age Always - 101 192 Power-Off_Retract_Count 200 200 000 Old_age Always - 39 193 Load_Cycle_Count 200 200 000 Old_age Always - 63 194 Temperature_Celsius 111 097 000 Old_age Always - 36 196 Reallocated_Event_Count 200 200 000 Old_age Always - 0 197 Current_Pending_Sector 200 200 000 Old_age Always - 0 198 Offline_Uncorrectable 200 200 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 200 200 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 200 200 000 Old_age Offline - 0
Nejprve si projdeme sloupce:
ID
– identifikátor atributu (nezajímá nás)ATTRIBUTE_NAME
– asi jasnéVALUE,WORST,THRESH
– viz další text – nezajímá nás, ale většina programů to zobrazujeRAW_VALUE
– jediné hodnoty, které nás skutečně zajímají (v některých programech je těžké je zobrazit – takovým se vyhněte)
Smart hlídá několik atributů, každý výrobce má jinou sadu a jiný počet. Ty důležité atributy (dostaneme se k nim), jsou ale společné pro všechny výrobce.
Teď něco k hodnotám. Hodnota VALUE
by mohla mást názvem, že se jedná o naměřenou hodnotu, že sama o sobě něco znamená (někteří lidé jsou vyděšeni tím, že disk má přes 100°C apod.). Hodnota VALUE
je přepočítaná hodnota dle nějakého vzorce.
Čím vyšší, tím lepší, se zhoršením parametrů by měla klesat.
WORST
je nejhorší dosažená hodnota VALUE
za celou dobu života disku (kromě
toho, že se to dá vymazat). THRESH
je práh, pokud hodnota VALUE
klesne
(zhorší se parametry) pod THRESH,
tak je špatně.
Tolik teorie. Hodnota VALUE
tedy nic neznamená, je to nějak počítaná hodnota, vzorec není veřejný, je to věc firmware disku. Takže úplně k ničemu.
Nehledě na to, že některé disky mají rozsah VALUE
253-0, jiné 200-0, další 100-0. Tenhle disk uvedený v příkladu má některé atributy 200 a jiné 100.
Takže konkrétní hodnota parametru VALUE
je naprosto nezajímavá a nic sama o sobě neříká. Jediná vypovídací hodnota je nenadálé rychlé snížení hodnoty. Ale to stejně poznáme z RAW_VALUE
.
Závěr tedy: Na VALUE, WORST, THRESH
se vyprdněte. A na programy, které neumí zobrazit RAW_VALUE
taky.
RAW_VALUE
je to, co nás zajímá. Skutečné hodnoty, nic přepočítaného. Počet sektorů je zkrátka počet sektorů, teplota je prostě teplota. (Neplatí pro všechny některé atributy, které nás až tak nezajímají, ukazují v RAW_VALUE
hodnoty složené – typicky Raw_Read_Error_Rate
u seagate disků, hodnota bývá extrémě vysoká, ale je to hodnota udávající několik parametrů zároveň).
Takže které jsou ty atributy, které by nás měly zajímat?
Zejména tyto (odstranil jsem nezajímavé sloupce):
ID# ATTRIBUTE_NAME RAW_VALUE 5 Reallocated_Sector_Ct 0 196 Reallocated_Event_Count 0 197 Current_Pending_Sector 0 198 Offline_Uncorrectable 0
Jedná se o vadné sektory.
Offline_Uncorrectable
– vadné neopravitelné sektoryCurrent_Pending_Sector
– sektory, které jsou „divné“ a čekají na další
posouzení. Může se stát, že zmizí a hodnota bude zpět nula, nebo se z nich stane neopravitelný sektor. Takový sektor může vzniknout třeba při výpadku proudu, ale na zdravém běžícím systému jen tak sami od sebe nevzniknou.Reallocated_Sector_Ct
aReallocated_Event_Count
– počet realokovaných sektorů. Každý disk má hromadu (přesné číslo se opět nikde nedočtete), sektorů navíc a je schopen vadný sektor přemapovat na nějakého náhradníka.
Všechny tyhle atributy by měly měly mít hodnotu nula. Já disk vyměňuji a posílám na reklamaci tehdy, pokud je jakákoliv hodnota nenulová. I pending. Protože stroje nevypínám a nemá to jak jinak vzniknout.
Následující hodnoty jsou více méně pro info (opět jsem odstranil nezajímavé sloupce):
ID# ATTRIBUTE_NAME RAW_VALUE 9 Power_On_Hours 53201 194 Temperature_Celsius 36 199 UDMA_CRC_Error_Count 0
Power_On_Hours
– počet naběhaných hodin. Jo, tenhle disk už má něco za sebou (asi tak 6 let nonstop provozu).Temperature_Celsius
– teplota, některé disky ukazují i nejvyšší teplotu za
celou dobu životnosti disku.UDMA_CRC_Error_Count
– chyby CRC při přenosu, většinou to ukazuje na chybu kabelu (nebo elektroniky).
Tehle disk má sice své naběháno, ale jinak je úplně zdravý.
Pravidelné testování
Disk podporující smart umí otestovat sám sebe. Jsou definované dva typy testů, jeden short (měl by běžet asi minutu) a druhý long, který otestuje celý povrch disku (a trvá tedy tak dlouho, kolik času je potřeba k přečtení všech bloků).
Test lze spustit pomocí:
smartctl -t short /dev/sda
Výsledek nebo průběh (pokud test stále běží), vidíme na výpisu:
smartctl -l selftest /dev/sda
Ukázový výstup:
SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Short offline Completed without error 00% 53189 - # 2 Short offline Completed without error 00% 53165 - # 3 Short offline Completed without error 00% 53141 - # 4 Short offline Completed without error 00% 53130 - # 5 Extended offline Completed without error 00% 53098 - # 6 Short offline Completed without error 00% 53094 - # 7 Short offline Completed without error 00% 53070 - # 8 Short offline Completed without error 00% 53046 - # 9 Short offline Completed without error 00% 53022 - #10 Short offline Completed without error 00% 52998 - #11 Short offline Completed without error 00% 52974 - #12 Short offline Completed without error 00% 52951 - #13 Extended offline Completed without error 00% 52930 -
Pečlivý čtenář si všimne, že testy se na tomto disku provádějí pravidelně a že je jistě nepouštím ručně. K pravidelnému testování slouží služba smartd
, a lze jej nastavit v /etc/smartd.conf
:
DEVICESCAN -d removable -n standby -m root -s (S/../.././02|L/../../6/03)
Jedná se o parametr -s
, pro info o nastavení časů viz man smartd.conf
.
Tímto parametrem je zajištěno, že služba smartd bude pravidelně testovat všechny nalezené disky (v tomto případě včetně přenosných disků – za normálních okolností se smartd ukončí po vyjmutí sledovaného zařízení, parametr -d removable
způsobí, že smartd bude pokračovat i po vyjmutí disku nebo jeho opětovného připojení).
Pokud disk testem neprojde, ve výpisu se objeví hláška o chybě (na konkrétním sektoru) a měl by přijít email s varováním (nastavení smartd je mimo rozsah tohoto článku).
badblocks
Další oblíbeným programem na testování disků je badblocks
. Jak již název napovídá program má hledat vadné sektory. Může běžet ve dvou režimech, první je read-only, druhý je write (který zničí data na daném disku, protože jej celý přepíše).
Hodně adminů je po úspěšném průběhu badblocks přesvědčeno, že disk je v pořádku. Ale nemusí být. Jak jsme si již řekli, disk může vadné sektory realokovat (pokud má ještě z čeho brát). Takže disk může během badblocks
(zejména write) testu vadné sektory realokovat a výsledek testu bude OK a přitom je disk vadný.
Po jakémkoliv testu je tedy nutné zkontrolovat smart atributy disku. Samotný badblocks test je sám o sobě nevypovídající (pokud selže, tak je disk opravdu na reklamaci, pokud nikoliv, je potřeba se ještě podívat do smartu).
Díky Michalovi za pěkné doplnění.
Programy od výrobců disků
Nedávno někdo v diskusi na FB doporučoval pro test disku použít program od výrobce disku. Konkrétně SeaTools (od Seagate). Tak jsem se na něj podíval. Mám tu vadný disk od výrobce Seagate:
Výpis z programu Crystal Disk Info (který ukazuje i raw values) jasně ukazuje, že disk je vadný. Má 1720 vadných sektorů, všechny se podařilo realokovat. Rovnou vidíme, že i téměř dva tisíce vadných sektorů disk považuje za běžnou věc, protože hodnota VALUE klesla z 100 na 99. Tedy o jedno procento. Práh je od výrobce nastaven na 10. Pokud by to tedy bylo lineární, tak disk by sám sebe považoval za vadný až po vyčerpání 154800 sektorů. (Ale přesnou funkci počítání VALUE samozřejmě neznáme.)
A co na to říká SeaTools?
Disk prošel.
Moje doporučení je tohle prostě nepoužívat. Na kontrolu smart atributů se nejlépe hodí smartctl
. S programy od výrobců disků mám jen špatné zkušenosti. SeaTools spadne kdykoliv, kdy se chci podívat do sekce advanced test. Na BasicTests zase neukazuje vůbec nic (rozhodně ne raw hodnoty).
U programu od WD se mi stala horší věc. Na doporučení od WD jsem prokazatelně vadný disk (hromada vadných sektorů) projel programem od WD (lifeguard cosi), ten prohlásil, že disk je v pořádku (každý disk je vždycky v pořádku). A co bylo horší, vymazal smart tabulku, takže disk byl po tomto „testu“ čistý jako lilie. Dle smartu byl jako nový.
Kdybych byl svině, tak ten disk jako nový prodám v bazaru (ale svině nejsem), nepochybuji o tom, že to takto lidi i obchody dělají (tzv. „rozbalené“ zboží). Výsledkem tohoto testu tedy bylo, že jsem měl v ruce vadný disk, ale neměl jsem to jak prokázat. Perfektní program.
Díky, jako na zavolanou, dneska jsem spustil smart démona na nové stanici, ale po zběžném čtení konfigurace jsem nastavení odložil (ta syntaxe není hnedka z první jasná). Tak nějak doufám, že ve standardním nastavení to nějak testuje (viděl jsem tam každých pár minut) a pošle to mail. Ověřím později, článek jak to nastavit by se hodil :-)
Můj disk se zdá v pořádku, žádné vadné sektory nejsou, jen vadná čtení.
SSD mám taky, co mě nepřekvapilo je že NVMe toto neposkytuje (není to SATA), což může být bráno jako nevýhoda vůči SSD!?
Tam prakticky není co nastavovat.
Tohle je kompletní nastavení ve smartd.conf v Debianu (jeden řádek, uměle jsem jej rozdělil):
DEVICESCAN – lze použít název konkrétních zařízení (mít 6 řádků pro 6 disků), devicescan zařídí, že to nastavení bude platné pro všechny nalezené disky.
-d removable – (koukám, že ve článku jsem to zmastil, opravím) – smartd bude fungovat i po vyjmutí sledovaného disku. Normálně by se zastavil.
-n standby – nemá kontrolovat device ve stavu sleep nebo standby (když se netočí). Tohle tam asi mít nemusím, disky nezastavuju.
-m root – kam posílat emaily s varováním, v tomto případě na lokálního roota a v /etc/aliases je stejně přesměrování na konkrétního uživatele nebo emailovou adresu.
-M exec – tohle jsem tam měl by defult z debianu (exec PATH – run the executable PATH instead of the default mail command, when smartd needs to send email. PATH must point to an executable binary file or script.) – prostě skritp, který se postará o poslání zprávy. Být to tam nemusí, důležité je zkontrolovat, zda emaily skutečně chodí zavoláním
smartd -m root -M test
-s (S/../.././02|L/../../6/03) – tohle je určení času (asi nějaký regexp nějakého formátu času, nezkoumal jsem to), kdy se mají provádět Short a Long testy. Mám to nastaveno takhle, Short se pouští každý den a Long jednou týdně. Opět, stačí to za pár dnů zkontrolovat (
smartctl -a
), že se ty testy dělají.A to je celé, jeden řádek.
Mělo by stačit:
A ověřit, že chodí maily a že se spouští testy.
Díky, moc pěkné shrnutí. Občas po mě také chce někdo poradit s kontrolou disku, tak v první vlně teď můžu odkazovat sem. :-)
Napadá mě k tomu pár drobností:
– badblocks má i bezpečný read-write režim. To funguje tak, že do sektoru zapisuje, ale nakonec původní hodnota, která tam byla na začátku. Pokud tedy v průběhu nevypadne napájení nebo není povrch tak poškozený, že se sektor už zapsat/přemapovat nepodaří (nebo není disk v průběhu přimountovaný ;-)), budu tam na konci původní data.
– Write mód badblocks používán na mazání disků před vyhozením, protože by default přepisuje několikrát a více vzory, což se hodí.
– Write mód badblocks je dobré pustit na novém disku a skutečně počkat na doběhnutí celé baterie, nedávno jsem potkal nový disk, kde se vadné sektory objevily až ve čtvrtém passu, kdy už jsem měl tendenci to přihlásit za ok a zařadit do provozu.
– Nebyl bych tak přísný na reklamaci při jakékoli nenulové hodnotě v těch vybraných S.M.A.R.T. atributech. Mám několik disků, kde se po pár letech v jeden moment pár vadných sektorů objevilo, ale dál se to nešíří a disky už další řádku let bez problémů slouží. Podstatné je sledovat průběh v čase a posoudit to v kontextu (je/není RAID/Btrfs apod.), může to ušetřit čas s reklamací.
Díky za doplnění.
Ad bezpečný read-write režim – předpokládám, že to ale nelze použít na přimountovaný disk, kde se obsah sektoru může měnit. Že to nemá ošetřeno ve VFS.
Ad před vyhozením. Disky před vyhozením fyzicky rozdělávám, baví mě to. (Sbírám magnety, plotny na okrasu :D). Pokud mám disk někomu dát, tak
dd if=/dev/zero of=disk bs=1M
. Každopádně dobrá připomínka, tohle se může někomu hodit.Co se týče přísnosti na smart hodnoty. Jasně, to už záleží na vkusu každého admina. Taky tu mám disky, které mají podmínku s výstrahou, vím o nich a podle toho je používám.
Potom tu mám disk, který si prošel peklem (přes 70°C), má pár vadných / realokovaných a dál se to nešíří. Ale do kritického nasazení bych jej nedal. Nechávám si ho tu, protože je to je jediný Toshiba disk, co tu mám a chci mu dát šanci.
Taky záleží na tom, jestli je disk ještě v záruce, či nikoliv. Pokud ano, má smysl jej vyměnit zavčas, pokud ne, tak se ještě na méně kritické nasazení může hodit.
Jj, i pro non-destructive read-write režim musí být disk odmountován, integrace tam není. Což je hloupé, protože nechat přejet všechny čtyři průchody na dnešním 4+ TB disku zkrátka trvá dny, ne hodiny. Stejně to ale dělám pro všechny nové disky, z mé zkušenosti je cca 20 % nových (běžných customer disků) při kontrole hned po rozbalení vadných (objeví se vadné sektory, chyby čtení/zápisu apod.).
Ad záruka: Už jsem (ťuk, ťuk) nějakou dobu disk nereklamoval, ale nemají některé obchody/výrobci podmínku v tom smyslu, že disk vezmou jako vadný, pokud to tak vyhodnotí utilita výrobce? Sám jsem na to nenarazil v praxi, ale tuším jsem to tak někde četl. Což by tedy ve spojení s schováním toho WD nástroje byla paráda… ;-)
Já jsem s reklamací nikdy neměl problémy, řekl bych, že to ani nikdo netestuje. (Kupuju hlavně u TSB, CZC a Alza.)
Off-topic: Zdá se, že nefunguje upozorňování na nové komentáře e-mailem. Zvolil jsem, ale žádný mail k žádnému komentáři mi nepřišel.
Díky za oznam, už je to snad ok.