Správa linuxového serveru: S.M.A.R.T. a zdraví pevných disků
Pevné disky obsahují obvykle to nejcennější - vaše data. Ať už využíváte linuxového softwarového RAIDu nebo ne, hlídat zdraví disků je určitě velmi důležité, stejně jako mít možnost odhadnout, v jakém stavu je disk, který se vám zrovna dostal pod ruku. A tomu se budu věnovat v tomto a v následujících dílech.
Pevné disky jsou v dnešní době relativně uzavřené systémy s vlastní vnitřní logikou, ale také vnitřním monitorováním a diagnostikou, a to je právě S.M.A.R.T. (Self Monitoring, Analysis and Reporting Technology). Původní myšlenkou této technologie byla schopnost předpovědět selhání disku a varovat uživatele ještě před tím, než k tomu dojde.
Realita je taková, že S.M.A.R.T. dokáže předpovědět blížící se selhání pevného disku jen v některých případech. Přesné procento případů udávají různé zdroje různě (Wikipedie udává 64 %, ale zdroj, ze kterého byla tato informace převzata, udává 30 %). Je jasné, že už jen z podstaty věci může S.M.A.R.T. předpovědět jenom takové typy poruch, které se projevují časem, pozvolna, nikoliv poruchy, které nastanou okamžitě a bez varování. To ale neznamená, že nemá cenu tuto technologii využít, naopak - i když není dokonalá, dokáže nám v řadě případů pomoci.
S.M.A.R.T. dělá tři věci. Jednak shromažďuje řadu údajů, které mají větší či menší vypovídací hodnotu o možném budoucím selhání. Pokud zjistí nějakou chybu při práci s diskem, pak ji zaznamená do svého vnitřního logu. Poslední věc, kterou S.M.A.R.T. umí, je testování disků na povel, tedy jakási vnitřní samodiagnostika.
Balíček, který umožňuje využívat technologii S.M.A.R.T. v GNU/Linuxu se nazývá smartmontools
. Naleznete ho v repositářích Debianu, ale i mnoha jiných distribucí.
To nejjednodušší, co můžete udělat, je přečíst údaje z konkrétního pevného disku, což provedete příkazem:
smartctl -a /dev/sda | less
Výpis vás asi na první pohled odradí, protože bude velmi dlouhý (proto také doporučuji použít less
nebomore
). Výpis nemusíte číst celý, stačí se zaměřit na ty nejpodstatnější části. První takovou částí je výpis hodnot atributů, které S.M.A.R.T. měří:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 200 200 051 Pre-fail Always - 0
3 Spin_Up_Time 0x0003 187 186 021 Pre-fail Always - 1616
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 577
5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
7 Seek_Error_Rate 0x000e 100 253 051 Old_age Always - 0
9 Power_On_Hours 0x0032 097 097 000 Old_age Always - 2716
10 Spin_Retry_Count 0x0013 100 100 051 Pre-fail Always - 0
11 Calibration_Retry_Count 0x0012 100 100 051 Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 514
192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 146
193 Load_Cycle_Count 0x0032 199 199 000 Old_age Always - 4787
194 Temperature_Celsius 0x0022 112 098 000 Old_age Always - 35
196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0
197 Current_Pending_Sector 0x0012 200 200 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 253 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0009 200 200 051 Pre-fail Offline - 0
Tento výpis vypadá sice na první pohled značně komplikovaně, ale jeho čtení není až tak těžké. Vlevo je název atributu, ten je ve většině případů samovysvětlující. Konkrétní hodnota daného atributu je zobrazena ve sloupci RAW_VALUE
("surová" hodnota). Surová hodnota není u některých atributů vždy zcela reprezentativní, protože disky od různých výrobců mohou zaznamenávat trošku jiná čísla (bohužel, technologie S.M.A.R.T. není standardizována, takže z části platí "každý pes, jiná ves").
Kupříkladu, výše uvedený výpis pochází z disku od firmy Western Digital. Povšimněte si, že první atribut (raw read error rate) má nulovou "surovou" hodnotu. Naopak jiný disk od firmy Seagate mi hlásí hodnotu177587740
, která je nepoměrně vyšší, což ale neznačí, že by disk měl nějakou poruchu - pro disky od tohoto výrobce je to běžné a neznamená to nic znepokojivého. Podobně vysoká hodnota je u Seagatu běžná i u atributu hardware ECC recovered (jak je patrné z výpisu, tento disk od Western Digital tento atribut nemá). Samsungy hlásí podobně vysoké hodnoty u hardware ECC recovered, ale už ne u raw read error rate. Řada důležitých údajů má však reprezentativní a porovnatelnou hodnotu napříč disky od různých výrobců.
V některých případech se může hodit pro referenci použít interpretované hodnoty (value, worst, treshold). Interpretovaná hodnota funguje následovně: Firmware disku umí každý atribut přepočítat do reprezentativní, normalizované hodnoty. Pro každý atribut je určen práh (treshold), jehož přetečení indikuje vážný problém. Tento problém může být dvojího rázu, a to podle typu atributu - jedná-li se o atribut pre-fail, pak překročení daného prahu značí hrozící akutní selhání disku. Jedná-li se o atribut old age, pak přetečení prahu značí, že disk je již příliš starý a opotřebovaný.
Aktuální interpretovaná hodnota se nachází ve sloupci "value", ve sloupci "worst" naleznete nejhorší dosaženou hodnotu (nejblíže prahu) za celý život pevného disku, a samotný práh naleznete ve sloupci "tresh" (jako treshold - práh).
Mezi ty nejdůležitější údaje, na které byste se měli zaměřit, patří:
Read error rate indikuje počet hardwarových chyb při čtení z disku (pro některé výrobce je typická extrémně vysoká hodnota, která ovšem neznamená problém - viz výše).
Reallocated sector count udává počet realokovaných sektorů. Moderní pevné disky již nenechávají správu špatných sektorů na operačním systému, řeší si ho sami. Mají totiž zásobu rezervních sektorů, takže jakmile firmware pevného disku zjistí, že se zápisem do nějakého sektoru je problém, označí jej jako vadný a přesune data do rezervní oblasti. Disk se tak nadále pro operační systém chová jako disk bez špatných sektorů. Zvyšující se počet realokovaných sektorů značí problém s povrchem disku.
Reallocation event count je počet úspěšných i neúspěšných pokusů přesunout data do rezervní oblasti.
Current pending sector count označuje počet "problémových" sektorů, kde došlo k chybě čtení (takový sektor není přemapován, neboť se následné čtení ještě může podařit). Pokud se následný zápis nebo čtení tohoto sektoru podaří, tato hodnota se sníží.
Uncorrectable sector count je počet neopravitelných chyb při čtení nebo zápisu. Zvýšení této hodnoty indikuje problém s povrchem disku.
Spin retry count je počet neúspěšných pokusů o náběh disku na provozní otáčky - zvyšující se hodnota značí problém s mechanikou disku.
Další atributy jsou popsány podrobně v anglické Wikipedii, nicméně výše uvedené mají obvykle dostatečnou vypovídací schopnost.
Hodnoty jednotlivých atributů je třeba vhodně interpretovat, a k tomu vám bohužel přímé vodítko neposkytnu. Zvyšující se hodnoty klíčových atributů uvedených výše značí možný problém, tedy možné selhání disku v blízké budoucnosti, ale pouze s jistou pravděpodobností. To, že máte na disku třeba jeden realokovaný sektor, ještě nemusí vylučovat možnost, že disk bude spolehlivě fungovat ještě roky. Stejně tak fakt, že veškeré "klíčové" atributy mají nulové hodnoty, neznamená, že disk nemůže během hodiny katastrofálně selhat.
Mohu vás nicméně odkázat na studii o poruchovosti disků (PDF), kterou provedl Google, a která zohledňuje některé S.M.A.R.T. atributy a jejich vztah k pravděpodobnosti selhání disku. Tato studie je poměrně komplexní a zahrnuje i další faktory, jako je například teplota.
Tím bych tento díl ukončil. Příště se budu věnovat S.M.A.R.T. logům a jejich interpretaci v kontextu hodnot S.M.A.R.T. atributů.