Automatické sledování disků a diskových polí
Monitorování disků a diskových polí - způsob jak odhalit většinu
problémů s disky dříve, než vás na ně upozorní vaši uživatelé.
27.5.2012 14:00 |
Petr Bravenec
| Články autora
| přečteno 7816×
Ve svém posledním článku zde na Linuxsoftu jsem se rozepsal o svých
zkušenostech s opravami disků pomocí technologie smart. Možná vás při čtení
onoho staršího článku napadlo, že pokud disk sám pozná, že je některá část media
vadná, bylo by možné využít technologii smart i pro monitorování disků.
I když udělaly disky v loňském roce nepříjemný cenový skok směrem nahoru a ceny
se dosud nedostaly na původní úroveň, je cena disků stále poměrně nízká ve
srovnání s cenou dat vaší firmy. Zodpovědný správce serveru se proto asi bude
snažit zabezpečit data ve svých serverech co nejlépe. Běžným a obvykle
dostačujícím opatřením je umístění dat na diskové pole a samozřejmě každodenní,
poctivé zálohování.
Data nestačí pouze uložit do diskového pole. Technika není ani všemocná, ani
spolehlivá. Diskové pole i disky samotné je nutné neustále monitorovat a hlídat
jejich fungování. Kterýkoliv disk může kdykoliv a zcela bez varování odejít do
věčných lovišť. Ani diskové pole nemusí být zcela bezproblémové - i když je to
celkem vyjímečná událost, může se vám stát, že disk vypadne z pole bez
viditelných příčin (vibrace? špatně zasunutý kabel? disk se nestačí roztočit?
kdo ví...) A v neposlední řadě jsou to chyby samotného správce serveru, které
mohou vést k rozpadu diskového pole. Stačí, když zapomenete označit oblast na
disku typem fd (raid autodetect) a zůstane vám tam defaultní 83 (linux). Z
takto označené oblasti sice diskové pole poskládáte, ale pohromadě vydrží pouze
do prvního restartu, který může přijít klidně až po několika měsících. A ruku
na srdce, kontrolujete své servery po každém restartu opravdu tak pečlivě,
abyste na podobnou závadu přišli, zvlášť pak v případě, že vše zdánlivě funguje
zcela bez problémů? No a hádejte, který disk odejde, když přijde na lámání
chleba - myslíte si, že to bude ten, který nebyl do diskového pole připojen a
několik měsíců zahálel?
Diskové pole i disky je proto nutné neustále monitorovat a veškeré problémy co
nejdříve hlásit.
Monitorování disků
Pro monitorování disků můžete v Linuxu využít program smartd z balíku
smartmontools. Balík by měl být prakticky v libovolné distribuci, která
připadá v úvahu na serveru. Program by se měl startovat automaticky při startu
systému. Program smartd má velmi široké možnosti nastavení a umožňuje vám
automaticky testovat a sledovat prakticky jakýkoliv parametr disku, problémy
pak dokáže program nahlásit mailem (při napojení pošty na sms bránu se tak
můžete o dozvědět o potenciálním problému v rámci několika minut).
I když disky dokáží o své činnosti reportovat poměrně široké množství
parametrů, v praxi si pravděpodobně vystačíte s celkem jednoduchým nastavením.
O discích vydal velmi rozsáhlou statistickou studii Google, v originále ji
můžete najít zde:
http://research.google.com/archive/disk_failures.pdf
V češtině vyšlo na českém internetu množství různých rozborů této studie.
Pokud si studii pročtete, pravděpodobně dospějete k názoru, že disk může umřít
kdykoliv a bez varování. Stejně tak disk, který hlásí množství různých
problémů, může vydržet běžet ještě dlouhá léta. Rozhodně je však ze studie
patrné, že už první problém s diskem zvyšuje pravděpodobnost jeho kompletního
selhání. Proto může být pro pečlivého správce serveru důležité vyměnit disk už
při prvních projevech technických problémů, které by nechaly kohokoliv jiného
chladným (pět realokovaných sektorů? to ještě vydrží...), a nečekat na celkové
selhání disku.
Program smartd lze nastavit tak, že periodicky testuje disk a veškeré změny
nahlásí. V článku se nehodlám zabývat podrobným popisem konfigurace, zájemci
nechť si najdou detaily v manuálové stránce. Ukážu pouze na obvyklá, užitečná
nastavení.
Konfigurační soubor najdete v /etc/smartd.conf.
Základní nastavení
Pokud chcete v serveru sledovat disky, musíte v prvé řadě programu smartd sdělit,
jaké disky v systému máte. Každý konfigurační řádek v smartd.conf začíná označením
disku, kterého se řádek týká. Pro každý disk v systému tedy musíte mít nejméně
jeden řádek:
/dev/sdx -další-parametry
Místo konkrétního disku můžete napsat i slovo "DEVICESCAN". Potom se bude
smartd starat o veškeré disky, které v systému objeví, a to včetně těch, které
jsou připojené dodatečně. U serveru to nemusí být na závadu, protože disky se
zde asi příliš často za provozu nemění, ale používáte-li například na
zálohování disk připojený přes sběrnici ESATA, může docházet k nedorozuměním:
DEVICESCAN -další-parametry
Chyby si můžete nechat posílat mailem, slouží k tomu parametr -M
/dev/sdx -M komu@kam.cz
Patametrů, které si můžete nechat posílat, je celá řada. Základní kontrolou by
mohl být status disku: dobrý/špatný. Přijde-li vám mail s varováním, měli
byste okamžitě disk vyměnit, protože smart předpovídá kompletní havárii disku
do 24 hodin:
/dev/sdx -M komu@kam.cz -H
Další kontrolou, kterou byste mohli prověřovat své disky, je zvýšení počtu chyb
od poslední kontroly:
/dev/sdx -M komu@kam.cz -l error
Do této kontroly se však zahrnují veškeré parametry, takže disk by vám hlásil
i zvýšení teploty o pouhý jeden stupeň. Proto je dobré teplotu ze sledování vyloučit:
/dev/sdx -M komu@kam.cz -l error -I 194
K parametrům můžeme přidat i sledování výsledků testování disku:
/dev/sdx -M komu@kam.cz -l error -l selftest -I 194
Různých testů existuje celá řada, zajemce mohu odkázat na manuálovou stránku
smartd.conf. Chcete-li zapnout všechny vhodné kontroly, použijte přepínač -a.
Vhodné je i doplnění kontroly realokovaných sektorů a jakoukoli změnu jejich
počtu považovat za kritickou (parametr -R 5!):
/dev/sdx -a -R 5! -m komu@kam.cz
Sledování teploty u disků vyžaduje trochu složitější přístup.
Studie Google překvapivě říká, že mírně vyšší teploty diskům neškodí, ba
naopak se ukazuje, že škodlivé může být přílišné chlazení - setkal jsem se však
na internetu s názorem, že vyšší chybovost disků při nižší teplotě je způsobená
méně kvalitnější eletřinou (usilovně chladící klimatizace vytváří rušení), ale
v originální studii jsem to nenašel. Takže i když jsme v předchozím příkladu
teplotu ze sledování vyloučili, v každém případě je užitečné teplotu sledovat a
hlásit, pokud vystoupá nad určitou mez, například 40 °C, případně hlásit
i příliš rychlý vzestup teploty (může ukazovat na závadu klimatizace).
V následujícím příkladu se kromě ostatních hodnot kontroluje i teplota - hlášení se
posílá při změně teploty o 5 °C, informační zpráva se posílá při teplotě
45 °C a za kritickou se považuje teplota 53 °C:
/dev/sdx -a -I 194 -W 5,45,53 -m komu@kam.cz
Disky se při běžné práci programu smartd kontrolují automaticky, bez spouštění
rozsáhlejších testů. Pro podrobnější kontrolu můžete využít některý ze tří
standardních testů, které technologie nabízí: short (zběžný test s trváním
několika minut), long (podrobný test povrchu s trváním několika hodin) a
conveyance test (určený pro vyhledávání škod způsobených transportem disku).
Ručně můžete testy spustit z povelové řádky:
smartctl -t short /dev/sdx
smartctl -t long /dev/sdx
smartctl -t conveyance /dev/sdx
Úspěšně provedený test vás samozřejmě nezajímá, ale můžete si nechat
posílat hlášení o testu neúspěšném, ať už byl spuštěn ručně, nebo
automaticky (kontrola je samozřejmě obsažena i v parametru -a):
/dev/sdx -l selftest -M komu@kam.cz
Testy nemusíte spouštět pouze ručně, v konfiguračním souboru smartd.conf
si můžete jejich provádění naplánovat například takto:
/dev/sdx -s L/../../7/08 -m komu@kam.cz
Parametry vyžadují trochu bližší komentář, detaily si můžete opět vyhledat
v manuálové stránce smartd.conf. Pro naplánování slouží parametr -s. Jeho argumentem
je regulární výraz - argumenty tedy můžete řadit takto: (PARAM1|PARAM2|PARAM3).
Každý argument má pak tento tvar: T/MM/DD/d/HH a význam zkratek je tento:
- T - typ testu: S znamená short, L znamená long
- MM - číslo měsíce uvozené nulou (na dvě místa)
- DD - číslo dne v měsíci uvozené nulou (na dvě místa)
- d - číslo dne v týdnu (1=Pondělí, 7=Neděle)
- HH - hodiny uvozené nulou (na dvě místa)
V časových údajích lze uvést tečky (nahrazují jakoukoliv hodnotu).
Kompletní nastavení smartd
I když vypadají výše uvedené parametry složitě, ve svých serverech mám
uvedené pro každý disk pouhé dva řádky:
/dev/sdx -a -I 194 -R 5! -W 5,45,53 -m komu@kam.cz
/dev/sdx -s (L/../../7/08|S/../.././07) -m komu@kam.cz
Pokud si chcete práci ještě více zjednodušit, uveďte místo výčtu konkrétních
disků pouze slovo DEVICESCAN. Vystačíte si tak s pouhými dvěma řádky na celý
server.
Monitorování diskového pole
Moje zkušenosti s hardwarovými raid řadiči v linuxu nejsou příliš aktuální, ani
příliš příznivé. V článku se proto budu věnovat pouze softwarovému raidu
spravovanému utilitou mdadm.
Ve srovnání se smartd je program mdadm při sledování disků na parametry nenáročný
a stačí mu zadat pouze adresu, na kterou má odesílat chybová hlášení, případně program,
který se při chybě spouští.
Program hlásí poštou několik různých událostí:
- DeviceDisappeared - událost se hlásí, pokud zmizelo celé diskové pole.
- Fail - událost se hlásí, pokud v diskovém poli havaroval, nebo byl označen
jako špatný některý aktivní disk.
- FailSpare - událost se hlásí, pokud v diskovém poli havaroval, nebo byl označen
jako špatný některý náhradní disk.
- DegradedArray - událost se hlásí, pokud při startu systému nebo diskového pole
nebylo diskové pole kompletní, pokud chyběl některý aktivní disk.
- SparesMissing - událost se hlásí, pokud při startu systému nebo diskového pole
nebylo diskové pole kompletní, pokud chyběl některý náhradní disk.
Disková pole se často chovají jinak, než by nezkušený správce serveru očekával.
Pokud se dostane některý disk v poli do problémů, zůstane v diskovém poli a
snaží se před svým skonem vytvořit co nejvíce dalších problémů. Disk totiž
obvykle neumře znenadání, v posledních chvílích se snaží číst nečitelné sektory
a zapisovat na nezapisovatelná místa a celý server tak především neskutečně
zdržuje. V tuto chvíli byste už ale měli obdržet zprávu od smartd. Na vás pak
je, abyste disk označili jako špatný:
mdadm /dev/md1 --fail /dev/sdx1
nebo jej rovnou odpojili od sběrnice, což už je stav, se kterým se mdadm dovede
vypořádat mnohem lépe, než s neochotně umírající bestií.
Teprve po odpojení disku vám diskové pole nahlásí problém. Což už je sice pozdě, ale
s předstihem vám zahlásí potenciální problémy obvykle smartd.
Velmi užitečná je však zpráva, že pole nebylo nastartované kompletní. Někdy se
totiž stává, že disk, který doposud se zaťatými zuby pracoval, vypnutí už
nerozchodí a z pole vypadne. Podobnou situaci si můžete vyrobit snadno i sami,
pokud zapomenete označit oblast na disku jako automaticky rozpoznatelný oddíl
diskového pole.
Aby vám mdadm hlásil nalezené problémy poštou, musíte jej nastavit. To můžete
udělat v zásadě dvěma způsoby: v konfiguračním souboru /etc/mdadm.conf nebo
parametry na povelové řádce v init skriptu.
V konfiguračním souboru nastavte parametr MAILADDR:
MAILADDR komu@kam.cz
Nebo v init skriptu nastavte tyto parametry:
mdadm --monitor --scan --mail=kudy@kam.cz
Nastavení parametrů v init skriptech i umístění mdadm.conf se může lišit napříč
distribucemi. V Gentoo nastavují mdadm v konfiguračním souboru /etc/mdadm.conf,
ale mohu doplnit i jeden parametr navíc do /etc/conf.d/mdadm.conf:
MDADM_OPTS="--syslog --mail=komu@kam.cz"
Ostatní potřebné parametry doplní samotný startovací skript. Aby mdadm disková
pole kontroloval, samozřejmě musí být init skript spouštěný při startu systému.
Co říci nakonec? Máte-li svá data rádi, rozhodně používejte disková pole a
především zálohujte. Diskové pole je pouze prostředkem, který dokáže zkrátit
případné výpadky v činnosti serveru, ale ani při sebelepším monitorování
nemusí diskové pole zachránit ani bajt dat. Pomocí monitorování disků
však můžete většinu závad odhalit dříve, než vaši uživatelé.
Verze pro tisk
|
Nejsou žádné diskuzní příspěvky u dané položky.
Příspívat do diskuze mohou pouze registrovaní uživatelé.
|
|