přejít na obsah přejít na navigaci

Linux E X P R E S, Správa linuxového serveru: S.M.A.R.T. a zdraví pevných disků

Správa linuxového serveru: S.M.A.R.T. a zdraví pevných disků

debain_notext.png

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.

Fungování S.M.A.R.T.

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.

smartmontools

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 nebo more). 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í hodnotu 177587740, 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).

Klíčové údaje

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ů.

Nahoru

Odkazy

Příspěvky

Správa linuxového serveru: S.M.A.R.T. a zdraví pevných disků
Nipo 8. 02. 2010, 11:57:36
Odpovědět  Odkaz 
Pekny clanok, diky!
Správa linuxového serveru: S.M.A.R.T. a zdraví pevných disků
Michal 8. 02. 2011, 17:03:22
Odpovědět  Odkaz 
Super článek, vlastně celá série. Jen mám jeden možná hloupý dotaz. V mém výpisu jsou některé hodnoty VALUE větší než hodnota WORST (viz např. hned první), což trochu nechápu. Jak to?

V další kapitole je zmíněna hodnota
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

která prý udává, že disk je zatím v pořádku a že žádná hodnota nepřekročila práh.

Cituji: "Co tato hodnota znamená? V podstatě pouze to, že nebyl překročen práh (treshold) žádného ze S.M.A.R.T. atributů."

Můje hodnoty jsou divné. Disk PASSED ikdyž je překročena spousta prahových hodnot.

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

..............
.............
............
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 115 099 006 Pre-fail Always - 94192816
3 Spin_Up_Time 0x0003 098 097 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 90
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 100 253 030 Pre-fail Always - 366351
9 Power_On_Hours 0x0032 098 098 000 Old_age Always - 2267
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 45
183 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0
184 Unknown_Attribute 0x0032 100 100 099 Old_age Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
188 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0
189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0022 064 051 045 Old_age Always - 36 (Lifetime Min/Max 27/41)
194 Temperature_Celsius 0x0022 036 049 000 Old_age Always - 36 (0 22 0 0)
195 Hardware_ECC_Recovered 0x001a 021 018 000 Old_age Always - 94192816
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 204543522507095
duvod vysoke hodnoty "raw read error rate" u hdd Seagate
maxtor.cz 30. 11. 2013, 16:51:36
Odpovědět  Odkaz 
Oznacit vysokou hodnotu "raw read error rate" za obvykly stav disku Seagate je ponekud zavadejici.
Astronomicky vysoke raw hodnoty teto polozky spusobuje skutecnost, ze Seagate v udaji uvadi dve hodnoty:
- seek errors v hornich 16 bitech
- pocet seeku v dolnich 32 bitech

Proto pouha 1 chyba seek errors znamena nastaveny 33-ti bit 48-bitove raw hodnoty.

Odpovědět

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz