Správa linuxového serveru: S.M.A.R.T. testy a monitorování
V tomto díle završím problematiku S.M.A.R.T. a zdraví pevných disků. Podívám se na využití S.M.A.R.T testů a prozradím vám, jak lze S.M.A.R.T. údaje monitorovat.
Třetí a poslední funkcionalitou, kterou S.M.A.R.T. poskytuje, je testování pevného disku (tedy jakási samodiagnostika). Tyto testy probíhají na pozadí, lze je tedy použít i na běžícím systému. Je jasné, že intenzivní práce s diskem průběh příslušného testu pozdrží.
Testy jsou celkem tři, krátký (short), dlouhý (long) a "přepravní" (conveyance). Každý z těchto testů dělá něco malinko jiného, krátký testuje základní funkčnost disku, dlouhý provádí totéž, ale trošku důkladněji (a kromě toho testuje i povrch disku) a conveyance test je schopen určit poškození disku způsobené přepravou (ne všechny pevné disky jej ale umí provést).
Délka testů se liší model od modelu, přičemž očekávanou délku testu se dozvíte už z celkového výpisu (smartctl -a /dev/disk
):
Short self-test routine
recommended polling time: ( 1) minutes.
Extended self-test routine
recommended polling time: ( 235) minutes.
Testy je možné zadávat a vyhodnocovat opět pomocí nástroje smartctl
a přepínače -t
. Krátký test se spustí příkazem:
smartctl -t short /dev/sda
U dlouhého testu se u parametru -t
použije hodnota long
, a u přepravního testu se použije hodnotaconveyance
. Pokud test tímto způsobem zadáte, objeví se vám podobný výpis:
debian ~# smartctl -t short /dev/sda
smartctl version 5.38 [x86_64-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Tue Jan 12 15:47:26 2010
Use smartctl -X to abort test.
Z výpisu se dozvíte očekávanou dobu trvání testu i očekávaný čas jeho dokončení. Nástroj smartctl
vám také radí, že test lze zrušit pomocí parametru -X
.
Výsledek testu se dozvíte opět z výpisu smartctl -a /dev/disk
:
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed without error 00% 2290 -
# 2 Extended offline Completed without error 00% 302 -
# 3 Short offline Completed without error 00% 83 -
# 4 Extended offline Completed without error 00% 70 -
# 5 Extended offline Interrupted (host reset) 40% 65 -
# 6 Extended offline Completed: read failure 90% 27 14566144
# 7 Extended offline Completed: read failure 90% 26 14566144
Zde vidíte celkem sedm testů, jsou seřazeny inverzně dle doby, kdy byly provedeny. Všechny typy testů kromě třetího jsou "dlouhé" (long), čtyři naposledy prováděné testy (1-4) nevykazují žádný problém, pátý test byl přerušen restartem počítače zhruba v 60% průběhu, přičemž šestý a sedmý skončil s chybou. U těchto dvou testů vidíte i číslo bloku (14566144), kde k chybě došlo.
Tento výpis náleží disku Hitachi, kterého se týkal onen problém s výpadkem napájení a následné nekonzistenci mezi ECC záznamem a daty v osmi sektorech, která vyvolala chybu čtení. Srovnejme to nyní s výpisem ze S.M.A.R.T. logu:
Error 36 occurred at disk power-on lifetime: 27 hours (1 days + 3 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 51 08 00 43 de e0 Error: UNC 8 sectors at LBA = 0x00de4300 = 14566144
...
Jak je vidět, číslo bloku se shoduje (14566144). Z výpisu testů je jasně patrné, že tato chyba byla odstraněna (pozdější testy proběhly bez chyby) a nulová hodnota S.M.A.R.T. atributu "reallocated sectors count" potvrzuje, že se nejednalo o špatné sektory, které by bylo nutné přemapovat. Tento disk je tedy zcela v pořádku.
Hodnoty S.M.A.R.T. atributů je možné sledovat prostřednictvím démona, který bude zachytávat změny hodnot a ve výchozí konfiguraci zapisovat změny do systémového logu. Tento démon je součástí balíčkusmartmontools
, tudíž pokud máte nainstalován ten, stačí démona jen povolit.
V Debianu je za tímto účelem třeba upravit konfigurační soubor /etc/default/smartmontools
a odkomentovat následující řádku:
start_smartd=yes
Démona je možné konfigurovat i poněkud precizněji, a to prostřednictvím konfiguračního souboru/etc/smartd.conf
. V něm je možné nastavit mj. kupříkladu zasílání varování o změnách na zadaný e-mail.
Jedním z atributů, jehož hodnoty S.M.A.R.T. sleduje, je i počet zaparkování hlaviček disku (load cycle count) za celou dobu jeho života. Toto množství je totiž svým způsobem omezené - výrobci disků udávají vždy pouze určitý počet parkování, které by disk měl zvládnout. Desktopové a serverové disky obvykle zvládnou podstatně méně než disky určené pro notebooky (kde je parkování vítaným prostředkem jednak pro ochranu pevného disku před poškozením daným manipulací s notebookem, a jednak jako součást procesu řízení spotřeby).
Pevné disky mají obvykle vlastní systém řízení spotřeby (power management), který lze u řady disků ovlivňovat parametrem -B
nástroje hdparm
, jehož hodnoty jdou od 1 do 255 s tím, že u jedničky dochází k maximálnímu šetření energie, zatímco u 254 by měl být maximálně zohledněn výkon (na úkor spotřeby). Hodnota 255 by měla řízení spotřeby vypnout (ne všechny disky ji bohužel podporují). Hodnoty od 1 do 127 povolují zastavení disku (spindown), hodnoty od 128 výše nikoliv. Nastavení hodnoty režimu řízení spotřeby by se u konkrétního pevného disku provedlo příkazem:
hdparm -B 128 /dev/disk
Pokud byste chtěli disku zabránit v parkování hlaviček a parametr -B
by nepomohl, můžete ještě disku nařídit, ať neprovádí zastavení disku:
hdparm -S 0 /dev/disk
V případě domácích serverů byste asi řekli, že se jich tato problematika netýká. To jsem si myslel také, dokud jsem nenarazil na jednu sérii úsporných disků jisté značky, u kterých docházelo k příliš častému parkování hlaviček, a aby to nebylo tak jednoduché, příslušné disky nereagovaly na adekvátní příkazyhdparm -B
a hdparm -S
. Jediné, co zbývalo, byla úprava firmwaru (já jsem se do ní nepouštěl a disk raději rovnou vyměnil).
Bohužel, snaha o úsporu energie, související marketing a možná laxní přístup některých výrobců k testování svých pevných disků pod více operačními systémy, může vést k podobným nepříjemným situacím.
Z tohoto důvodu nebývá úplně od věci kontrolovat u pevných disků i počet parkování hlaviček (load cycle count):
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
193 Load_Cycle_Count 0x0032 199 199 000 Old_age Always - 4789
Pevné disky obvykle snesou hodnoty v řádu desítek až set tisíců, u notebookových disků tato hodnota může být i 500000. Záleží na konkrétním modelu. Příliš rychle rostoucí hodnotu load cycle count je vhodné řešit způsobem naznačeným výše. Debian nastavuje hodnoty hdparm
při bootu, a tyto hodnoty lze upravovat i pro jednotlivé disky v konfiguračním souboru /etc/hdparm.conf
.
Statistická pravděpodobnost selhání pevného disku není po dobu jeho existence stejná. Vzhledem k přepravě a výrobnímu procesu je zvýšená pravděpodobnost selhání disku během prvních měsíců jeho užívání (proto se také vyplácí provádět zátěžové testy). Poté pravděpodobnost selhání klesne, a s rostoucím časem opět roste (disk stárne).
Z toho vyplývá jediné - příliš mladému a příliš starému disku byste neměli bezvýhradně věřit. I proto se vyplatí diskové pole obměňovat postupně v delším rozmezí, spíše než naráz. Kandidáty na vyloučení vybírejte s ohledem na S.M.A.R.T. údaje (disky s realokovanými sektory nebo s nenulovou hodnotou u některých kritických atributů by měly být vyměněny v první řadě).
Pokud si u pevného disku nejste jisti jeho zdravím, a nemáte na něm důležitá data, můžete S.M.A.R.T.u trošku pomoci použitím programu badblocks
a jeho read/write testu. Ten můžete spustit příkazem:
badblocks -s -w /dev/disk
Pozor - tímto příkazem přepíšete všechna data na daném pevném disku! Pokud si nemůžete dovolit data přesunout, můžete použít dlouhý S.M.A.R.T. test, který povrch disku prověří.
Tím bych problematiku S.M.A.R.T. uzavřel. Příště se budu věnovat praktické stránce LVM, a poté dm-crypt/LUKS.