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

Linux E X P R E S, Správa linuxového serveru: RAID teoreticky

Správa linuxového serveru: RAID teoreticky

debain_notext.png

Ještě před tím, než se rozhodnete nainstalovat Debian na server, byste měli zvážit, jakým způsobem budete pracovat s pevnými disky. Mít všechno na jednom disku v jednom či více diskových oddílech je sice možné, ale existují i jiné možnosti, a sice RAID a LVM, potažmo ještě dm-crypt/LUKS pro diskové šifrování. V tomto dílu se budeme věnovat RAIDu.


Kam se systémem a daty? RAID

O RAIDu zde již jeden pěkný článek vyšel - Když se řekne RAID... Nerad bych příliš opakoval to, co tu již zaznělo, a proto teorii omezím na nezbytné minimum a spíše se pokusím přidat několik důležitých praktických pohledů.

Co je RAID? Je to způsob práce se dvěma nebo více pevnými disky jako s jednou logickou datovou jednotkou (blokovým zařízením), která na fyzické úrovni poskytuje jistý kompromis mezi odolností proti výpadku jednoho nebo více disků, kapacitou a výkonem.

Odolnost proti výpadkům je zajišťována jistou formou redundance (liší se u jednotlivých typů RAIDu), která ovšem jistým způsobem snižuje úložný prostor (kapacitu) pole. Typů RAIDu je mnoho, já se zaměřím na ty nejtypičtější a nejzajímavější (informace o ostatních typech naleznete v článcích odkazovaných v závěru článku):

RAID 0

Data se rozmisťují střídavě po všech discích z pole, chybí redundance - ztráta jednoho disku znamená ztrátu všech dat z pole. Výkon je ze všech typů RAIDu nejlepší, kapacita pole je rovna počtu disků.

RAID 1

Zrcadlení. Data se zrcadlí na všechny disky z pole. Kapacita pole je rovna velikosti nejmenšího disku. Čtení z pole je rychlejší (lze číst najednou z více disků), zápis je pomalejší (zapisuje se na všechny disky současně). Pole udrží data při selhání n-1 disků (kde n je počet disků v poli).

RAID 5

Minimem jsou tři disky. Data a paritní informace se rozmisťují střídavě po všech discích z pole. RAID 5 má kapacitu n-1 disků a snese selhání jednoho disku. Čtení z pole je podobně rychlé jako u RAIDu 0, zápis je pomalejší a v tomto případě i náročný na výpočetní výkon (k datům se počítá parita).

RAID 6

Minimem jsou čtyři disky. RAID 6 je podobný RAIDu 5 s tím, že paritní blok není jeden, ale dva, takže pole, které má kapacitu n-2 disků, unese selhání kterýchkoliv dvou z nich. Výkon RAIDu 6 je podobný jako výkon RAIDu 5, náročnost na výpočetní výkon je ovšem o něco vyšší (počítají se dva paritní bloky).

RAID 10

RAID 10 je kombinací RAIDu 1 a 0 v tomto pořadí. Tj. nejprve se vytvoří dvě RAID 1 pole, a poté se nad nimi postaví RAID 0. Výhodou je dobrý poměr mezi odolností a výkonem.

RAID 15 (nebo RAID 51)

RAID 15 (nebo RAID 51) je kombinací RAIDu 1 a 5. Bývá označován jako RAID pro paranoidní, neb poskytuje poměrně velkou odolnost, za kterou se ovšem platí drastickým úbytkem kapacity.

Ilustrační obrázekIlustrační obrázek

Praktické poznámky k RAIDu

Jaký RAID vybrat?

Záleží na tom, co máte k dispozici (počet disků/rozpočet) a co chcete získat (rychlost, odolnost proti výpadkům, apod.). Na menších serverech se velmi často používají typy 1, 5 a 10. Podstatným kritériem výběru je počet disků - u dvou použijete nejspíše typ 1, u třech a více budete vybírat mezi typy 5 a 10. Při větším počtu disků (nad 10) stojí za uváženou nahradit RAID 5 RAIDem 6, popřípadě zvolit pro vyšší odolnost RAID 51 nebo 61. Pro náš LAMP servřík plně postačí typ 1 (zrcadlení).

Více disků = větší pravděpodobnost selhání

Je jasné, že při propojení více pevných disků do diskového pole postupně vzrůstá pravděpodobnost selhání některého z disků. Z tohoto důvodu musíte při velkém počtu disků počítat s rizikem selhání více disků krátce po sobě, a upravit volbu typu RAIDu podle toho.

Disky od různých výrobců

Ideální je dávat do RAIDu různé disky (stejné kapacity) od různých výrobců (nejlépe ještě různě staré, ale to už bych asi chtěl trošku moc). Snížíte tak pravděpodobnost kritického selhání, pokud byste měli smůlu a nakoupili disky ze série, která má výrobní vadu (a kde by disky selhaly současně nebo krátce po sobě). Čas od času se každému výrobci disků "poštěstí" vydat sérii s nějakou více či méně kritickou vadou. Pokud nebudete kupovat disky od různých výrobců, je dobré koupit alespoň disky z různých sérií.

Hardwarový, nebo softwarový RAID?

Kvalitní hardwarový řadič s baterií zálohovanou vyrovnávací pamětí může být dobrým důvodem, proč nepoužít linuxový softwarový RAID. Levným RAID řadičům (zejména pak těm, které naleznete na desktopovém hardwaru) bych se raději vyhnul ve prospěch sofwarového RAIDu. V případě hardwarového RAIDu je dobré pamatovat na to, že RAID řadiče od různých výrobců spolu obvykle nejsou kompatibilní - vaše data tedy mohou být vázána na příslušný typ hardwarového řadiče od jistého výrobce (s tím, že pokud by se řadič rozbil, už byste se k datům bez náhradního řadiče nemuseli dostat).

RAID není náhradou záloh!

Redundance svádí k tomu považovat RAID za jistý typ zálohování. To je však velmi špatný přístup. Selhat může ledacos, počínaje více disky, než kolik vám kryje redundance, přes řadič či softwarový RAID až po operační systém, aplikaci, uživatele či administrátora. RAID je vhodným prostředkem pro zajištění odolnosti serveru proti výpadku pevného disku, ale zálohování nemůže nahradit.

Co po výpadku disku?

Při použití RAIDu je vhodné nejenom počítat s možným selháním disku, ale také zauvažovat o tom, co se stane pak. Mnohé typy RAIDů se používají tak, že sice snesou výpadek jednoho disku, ale pokud se tak stane, celé pole pak obvykle visí na vlásku - stačí selhání dalšího disku k tomu, abyste přišli o data.

Dovolte mi tento problém demonstrovat na příkladu. Řekněme, že jste si zvolili RAID 5 o třech discích a jeden vám selhal. V této situaci máte pole sice funkční, ale degradované, bez jakékoliv redundance. Pevné disky už za sebou nějaký čas mají, takže riziko dalšího selhání tu je, a ne úplně nepatrné. Výměna disku a opatření náhrady vám zabere nějaký čas. Ale ani po tom, co disk seženete a vyměníte, není vyhráno. Dokonce lze říci, že v té chvíli to nehorší teprve začne - bude třeba pole rekonstruovat, což obnáší přečtení všech nebo velké části dat ze zbývajících disků. Pokud při tomto procesu vypadne další disk, je po všem. Teprve ve chvíli, kdy bude nový disk zapojen a synchronizován se zbytkem pole, si můžete opravdu oddechnout.

Z tohoto hlediska nemusí být úplně od věci provést po selhání a těsně před vložením nového disku rozdílovou zálohu (pokud tedy používáte přírůstkové zálohování). O zálohování pojednává článek Zálohujeme pomocí Dump/Restore.

Ilustrační obrázekIlustrační obrázek

Spare disky

Jednou z možností, jak zkrátit dobu mezi selháním disku, jeho výměnou a zařazením nového disku do pole, je použití náhradních (spare) disků. To jsou disky, které jsou sice zařazené v diskovém poli, ale nepoužívají se, alespoň do doby, než nějaký disk z pole selže. Poté se ihned spustí rekonstrukce pole s pomocí tohoto náhradního disku.

Dodávám, že vzhledem k předchozímu bodu to nemusí být to pravé ořechové úplně ve všech situacích.

Integrita RAIDů 5 a 6

Po výměně defektního disku za nový začíná rekonstrukce pole. To obnáší přečtení všech sektorů ze všech disků. Disky si ovšem někdy usmyslí, že některý sektor z nějakého důvodu nepřečtou (o tomhle pojednává lehce katastrofický článek Why RAID 5 stops working in 2009, který zmiňuji především kvůli zajímavým komentářům). Pokud se na takový sektor natrefí během rekonstrukce, vypadne obvykle příslušný disk z pole, a máme velký problém.

Důvodů, proč některý sektor nepůjde přečíst, může být celá řada, počínaje výpadkem proudu, když zrovna probíhá zápis, nebo prostě vznik špatného sektoru. Ano, moderní pevné disky mají oblast záložních (spare) sektorů, kam špatné sektory realokují. Jenomže, realokace špatného sektoru se provádí při zápisu, nikoliv při čtení (čtení se totiž může podařit některým z opakovaných pokusů). Tudíž nás realokace v tomto směru nezachrání.

Dalším možným problémem je situace, kdy se vlivem softwarové chyby či výpadku proudu při zápisu ztratí konzistence mezi daty a paritní informací. To sice nevyvolá chybu čtení či výpadek dalšího disku, dokonce i rekonstrukce úspěšně proběhne, ale zapíšou se špatná data (a co je horší - vy se nic nedozvíte).

Abyste těmto problémům do jisté míry předešli, je vhodné RAID 5 i RAID 6 podrobit čas od času kontrole. Některé hardwarové řadiče to provádí automaticky (doporučuji zkontrolovat), v případě softwarového RAIDu v Linuxu je to zatím záležitost, která vyžaduje trošku manuální práce - umístění následujícího příkazu do cronu a jeho periodické opakování v řádu dní až jednoho týdne:

echo "check" > /sys/block/raid_zarizeni/md/sync_action

Data corruption (poškození dat)

V rámci RAIDu se nijak neverifikují zapsaná data. To znamená, že RAID je zranitelný vůči poškození dat (třeba vlivem špatného kabelu nebo řadiče, chyby v RAM modulu, apod.).

S takovou situací už jsem se jednou setkal - u jednoho levného SATA řadiče docházelo k bitovým chybám při čtení/zápisu, následkem čehož v delším období došlo ke rozsáhlému poškození dat na (softwarovém) RAIDu 1, který jsem na něm provozoval. I proto zdůrazňuji, že RAID není náhradou zálohování.

Poškození dat je to nejhorší, s čím se lze setkat - je totiž obvykle nepostřehnutelné. V době, kdy se váš systém začne chovat divně nebo dojde k nějaké jiné události, která vás donutí dívat se tímto směrem, může být již pozdě (a co je horší - chyby v datech se mohou promítnout i do záloh). Tohle třeba pěkně řeší ZFS (souborový systém od Sunu), který, na rozdíl od tradičních linuxových souborových systémů jako ext3 či reiserfs, dohlíží na integritu dat. Bohužel, ZFS v Linuxu není a z licenčních důvodů asi ani nebude. Máme pouze BTRFS, který zatím, soudě podle projektové wiki, stále není určený pro produkční nasazení.

Z tohoto důvodu nelze než doporučit alternativní postupy - Tripwire, md5sum nebo podobné nástroje pro kontrolu integrity vybraných souborů.

Monitorování pole

Chcete-li být zodpovědní, RAID nemůžete nechat běžet bez nějaké formy monitorování, které vás informuje v případě nějaké významné události (zejména pak výpadku pevného disku). Měli byste si tedy vytvořit nějaký systém monitorování diskového pole, abyste byli včas varováni, že máte vyměnit disk nebo (v horším případě) obnovit data ze záloh.

V Linuxu existuje nástroj mdadm, který umožňuje nejenom provádět správu softwarového RAIDu, ale je schopen fungovat i jako démon, dohlížet nad softwarovým RAIDem a informovat vás (třeba e-mailem), že došlo k nějaké významné události. Jeho konfiguraci se budu věnovat po instalaci Debianu. V tuto chvíli vám postačí vědět, že diskové pole je třeba nějakým způsobem monitorovat.

Pokračování příště

Bohužel, na LVM a dm-crypt/LUKS v tomto dílu už místo nezbylo, a proto se jim budu věnovat příště. Samotné problematice RAIDu z pohledu linuxového správce, tedy práci se softwarovým RAIDem v Linuxu, se budu věnovat v některém z dílů po instalaci Debianu.

Další díl můžete očekávat přespříští pondělí.

Nahoru

Odkazy

Příspěvky

Jiří Eischmann Správa linuxového serveru: RAID teoreticky
Jiří Eischmann 3. 12. 2009, 00:27:13
Odpovědět  Odkaz 
Super, od serialu Milana Kozaka mi tu takovy serial chybel. Doufam, ze se muzu tesit na hodne pokracovani.
Správa linuxového serveru: RAID teoreticky
martin 3. 12. 2009, 08:41:55
Odpovědět  Odkaz 
Co si myslite o vytvoreni RAID1 s tremi disky?

vyhoda by mela byt, ze po vypadku jednoho z disku a behem jeho vymeny porad zustava zachovana redundance,
nevyhoda by mela byt jenom asi jeste nizsi rychlost ukladani a naklady
Re:Správa linuxového serveru: RAID teoreticky
Michal Dočekal 3. 12. 2009, 16:03:09
Odpovědět  Odkaz 
Možné to jistě je, výsledkem bude lepší redundance vykoupená vyšší cenou. Čtení z pole by mohlo být teoreticky o něco málo rychlejší, zápis by měl být přibližně stejný jako u RAIDu 1 se dvěma disky, respektive bude tak rychlý, jako zápis na nejpomalejší z disků.

Něco takového nabízí pro pole s více disky RAID 6, který zachovává taktéž dvojí redundanci, jen kapacita pole není jeden disk, ale n-2 disky.

Je nutné dodat, že jsou problémy, před kterými vás neochrání ani pětinásobná redundance (data corruption na úrovni řadiče, vyhoření serveru, chyba uživatele, administrátora nebo softwaru, atd.). Proto raději znovu připomínám, že RAID nemůže být náhradou zálohování.
Martin Šín Re:Re:Správa linuxového serveru: RAID teoreticky
Martin Šín 3. 12. 2009, 16:53:40
Odpovědět  Odkaz 
Nevím proč, ale vždycky jsem si myslel, že RAID 1 na 3 diskách znamená 2 aktivní disky a jeden záložní (spare) disk, nebo se pletu? Jeden disk vypadne a záložní disk ho nahradí, tak k čemu nějaké 3 "aktivní" disky ..?
Re:Re:Re:Správa linuxového serveru: RAID teoreticky
martin 4. 12. 2009, 08:22:24
Odpovědět  Odkaz 
ja to tak mam na serveru nastavene proto, ze kdyz jsou aktivni tri disky, pri vypadku jednoho disku jsou ty dva zbyvajici uz v provozu
takze tam neni mezicas, kdy jsou data na jedinem disku a na spare se teprve zacina kopirovat
Re:Re:Správa linuxového serveru: RAID teoreticky
martin 4. 12. 2009, 07:58:11
Odpovědět  Odkaz 
ok, dekuji za potvrzeni ;-)
Správa linuxového serveru: RAID teoreticky
James_Scott 3. 12. 2009, 09:16:41
Odpovědět  Odkaz 
Díky za tyto články, moc se mi líbí. Jen tak dál ! :)
Správa linuxového serveru: RAID teoreticky
Vojta 3. 12. 2009, 23:22:07
Odpovědět  Odkaz 
Jak vypadá a chová se zmíněný RAID5 s více než třemi disky? S právě třemi to chápu. Znamená to, že když mám 4 x 2 TB disky, tak s RAID5 mohu dosáhnout kapacity 6 TB? (místo jen 4 TB s RAID6 nebo RAID5+spare) To se mi nějak nezdá...
Martin Šín Re:Správa linuxového serveru: RAID teoreticky
Martin Šín 4. 12. 2009, 07:43:45
Odpovědět  Odkaz 
Jestli se nepletou, tak odpověď je tu: http://www.pcguide.com/ref/hdd/perf/raid/levels/singleLevel5-c.html ... Osobně jsem to ale nezkoušel a v kombinaci 8 disků jsem raději volil 2 disky v RAID 1 a pak 2 x 3 disky v RAID 5 ... Nevím jak teď, ale při nejmenším dřív Linux z RAID 5 nebootuje.
Re:Re:Správa linuxového serveru: RAID teoreticky
Michal Dočekal 4. 12. 2009, 11:55:23
Odpovědět  Odkaz 
Nebootování z RAIDu 5 jde vyřešit snadno - disky rozdělíte na dva oddíly, přičemž na jednom postavíte RAID 1, kde bude /boot oddíl, a na druhý oddíl nasadíte RAID 5. Sice tím mírně ubyde kapacita pole, ale /boot oddíl zase není tak velký, aby to vadilo nějak zásadně.
Martin Šín Re:Re:Re:Správa linuxového serveru: RAID teoreticky
Martin Šín 4. 12. 2009, 12:13:55
Odpovědět  Odkaz 
Zřejmě záleží na distribuci a dalších parametrech (zavaděči, initrd,...), ale problémy jsem měl i při nastavení / na raid 5 (distribuce Debian).
Re:Re:Re:Re:Správa linuxového serveru: RAID teoreticky
Michal Dočekal 4. 12. 2009, 16:09:18
Odpovědět  Odkaz 
Zajímavé, zkusil jsem to nyní nastavit na Debianu Lenny za pomoci KVM/Qemu a s bootováním problémy nejsou (/boot na RAID 1, /root na LVM na RAIDu 5). Fungovat by to podle mého mělo, a pokud ne, je někde nějaký bug, který by se měl určitě nahlásit.
Re:Správa linuxového serveru: RAID teoreticky
Michal Dočekal 4. 12. 2009, 11:51:24
Odpovědět  Odkaz 
Proč se vám to nezdá? Přesně tak to je. RAID 5 má kapacitu n-1 disků a data je možné rekonstruovat v případě selhání kteréhokoliv z nich. V poli můžete mít tři disky nebo třeba třicet, i když u třiceti by RAID 5 dával snad jen sebevrah...

Data se na pole zapisují v blocích (podobně jako u RAIDu 0), přitom v n-1 blocích jsou data a v n-tém je parita spočítaná ze všech datových bloků. To znamená, že při výpadku kteréhokoliv bloku je možné chybějící blok dopočítat z dostupných hodnot (buď jsou k dispozici všechny datové bloky nebo se z parity a ostatních datových bloků dopočítá chybějící datový blok). Je jedno, kolik je datových bloků - proto je možné sestavit RAID 5 z libovolného počtu disků. Jakmile ale přijdete o více než jeden blok z daného řetězce (jinými slovy více než jeden disk z pole), je po všem.

RAID 6 má dva paritní bloky, takže snese výpadek dvou disků, a zase nezáleží na tom, kolik disků v poli je. Matematický základ RAIDu 6 může posloužit pro libovolné množství paritních bloků/disků (tzn. je možné na stejném matematickém základě sestavit RAID, který bude mít třeba tři nebo více paritních bloků), ale v tuto chvíli se používá pouze u RAIDu 6 pro jeho dva paritní bloky. Osobně bych docela uvítal nový typ RAIDu založený na RAIDu 6 s uživatelsky voleným počtem paritních bloků/disků. Ale to už se dostáváme trošku jinam. :-)
Správa linuxového serveru: RAID teoreticky
Azachiel 24. 12. 2011, 02:35:59
Odpovědět  Odkaz 
Mám spíše dotaz. Mohu pro vytvoření RAID 1 použít disky různé kapacity?
Re: Správa linuxového serveru: RAID teoreticky
tla 8. 10. 2012, 11:42:05
Odpovědět  Odkaz 
Samozřejmě. Ale kapacita RAID-u se pak bude odvíjet od nejmenšího disku a na těch větších zůstane nevyužitý prostor (u SW RAID-u ji lze použít mimo RAID).

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