Disková pole se používají již drahnou řádku let. Ze začátku potřebovala nákladný hardware, ale od té doby, co je softwarový RAID součástí linuxového kernelu, si může RAID pole postavit každý, třeba z levných IDE disků. Tento seriál článků vám popíše, jak na to. Důležitou kapitolou bude i návod, jak nakonfigurovat Linux, aby z takovéhoto pole přímo bootoval.
Celý text je rozdělen do třech dílů. První bude obecný úvod do RAID problematiky. Pak bude následovat díl o softwarových raidech v Linuxu a v posledním dílu bude uveden praktický příklad vytvoření softwarového RAID pole.
Něco o RAIDech
Za ledovou horou a černými lesy (pozn. red.: stojí domek bez IP adresy –Johanka) žil byl jeden administrátor. Měl na svém počítači spoustu věcí. Ale ouha. Jednou se jeho disk odpotácel do věčných lovišť. A s ním i mnoho z jeho dat. Některá měl zálohovaná, ale jiná ne. A tak když počítač opravoval, rozhodl se, že si koupí disky dva a bude je zrcadlit. Tedy že na obou dvou bude stále totéž. Když jeden odejde, bude tu ještě druhý. Takže disky nakonfiguroval do RAID 1 pole a šťastně spolu žili až do smrti :-)
Nu, ale dost pohádek a zpátky do praxe. Nejprve si lehce rozebereme terminologii, která se v oblasti diskových polí používá, a podíváme se i na to, jak to v principu funguje. (Zde uvedený výklad je pro názornost silně zjednodušený a z toho důvodu i nepřesný, zvláště u RAIDu 0 a 5. Pokud vás typy RAIDů zajímají detailně, doporučuji například tento přehled.)
Administrátor v naší pohádce nakonfiguroval RAID 1 (nebo přesněji RAID level/úrovně 1) – to je zrcadlení (mirroring) disků. V něm se všechny disky v RAIDu zrcadlí – obsahují stejná data.
Obecně je možno nakonfigurovat jakýkoli RAID s jakýmkoli počtem disků větším než jedna. Pokud bychom nakonfigurovali RAID 1 se třemi disky, měly by všechny tři stejná data a my bychom o ně nepřišli, ani kdyby selhaly dva z těch tří disků. V praxi ale stačí většinou dva a v dalším textu počítám s tím, že RAID 1 pole má dva disky. RAID 1 se většinou používá pro zabezpečení dat proti výpadku disku.
Další možností je udělat RAID 0, kterému se říká také stripping (český ekvivalent neznám). Při něm se disky „spojí“ do jednoho prostoru. Celková kapacita je potom rovna součtu kapacity disků – jako kdybychom je seřadili za sebe. Z výkonových důvodů ale nejsou disky „za sebou“, nýbrž jsou „proložené“ – například u RAID 0 pole ze dvou disků se liché bloky budou ukládat na první disk a sudé na druhý, takže při čtení lineárního bloku dat budou využity oba disky a čtení bude rychlejší.
Tento druh RAIDu se používá pro sestavení prostoru s velkou kapacitou (můžeme mít i několikaterabajtový „disk“) a pro zvýšení výkonu (paralelní čtení a zápisy).
Dále je hodně používaný RAID level 5. Ten má smysl sestavovat od tří disků výše. Kombinuje výhody RAID 0 – velký diskový prostor a RAID 1 – záloha dat. Zkusím zjednodušeně vysvětlit funkci: Na n-1 discích jsou uložena data a na posledním disku XOR (parita) těchto dat. Takže pokud jeden disk vypadne, je možno data stále dopočítat. Buď se ztratí parita, nebo je možno XORem zbylých dat získat data ztracená.
Něco pro pokročilejší: Existují i další úrovně RAIDu, ty se však v praxi příliš nepoužívají, proto jsem od nich upustil. Také se občas používají kombinace RAIDů – RAID nikoli nad disky, ale nad RAID poli. Například mirroring stripovaných polí. Ten se označuje RAID 1+0 (nebo také RAID 10).
Rekonstrukce pole
Pro administrátora je důležité vědět, co se děje, když nějaký disk pole vypadne. U RAID 0 je to jednoduché – pole zhavaruje. U RAID 1 a RAID 5 pole přechází do tzv. degradovaného módu. U RAID 5 se data dopočítávají, u RAID 1 se berou pouze z jednoho disku. Pokud v tomto stavu odejde další disk, data na poli budou ztracena, je tedy nutné havarovaný disk co nejdříve vyměnit! U SW polí v obyčejných počítačích je kvůli tomu nutné počítač vypnout. HW pole (většinou) a lepší počítače umožňují „hot-swap“ – výměnu disku za běhu.
U SW polí ale nastává problém, neboť je nutné kernelu říci, aby vzal nový disk na vědomí. U SCSI se to dá zařídit buď přes /proc/scsi/scsi, nebo můžete zkusit tento skript. U IDE nevím, zda to vůbec jde. Stejně tak mám dojem, že kernel má s pádem IDE disku problémy – snaží se s ním komunikovat a ono to nejde, takže procesy pracující s diskem zatuhnou v D stavu a počítač je zralý na reboot.
Po přidání nového disku (většinou se ještě musí přidat i explicitně do pole) se spustí rekonstrukce pole. Po jejím dokončení je pole opět plně funkční a odolné proti výpadku.
Protože po dobu, než se přidá a zrekonstruuje nový disk, je pole zranitelné, je snaha tuto dobu maximálně zkrátit. Jedním z řešení je pole, které obsahuje další disk, tzv. hot-spare (horkou zálohu). Pokud některý disk z pole odejde, začne se pole ihned rekonstruovat s využitím tohoto disku bez nutnosti lidského zásahu. Vadný disk se pak může vyměnit v podstatně menším časovém tlaku.
Hardwarová RAID pole
I když to není hlavním cílem tohoto seriálu, přeci jenom jsem se rozhodl zmínit se i o alternativě k softwarovým polím – polích vytvářených hardwarově. Takové pole vypadá jako „krabice“, do které se vkládají disky. Dlouhou dobu byla disková pole záležitostí čistě SCSI, ale v poslední době je možno sehnat i pole pro IDE nebo SATA disky. Pole se k počítači může připojovat přes SCSI rozhraní (většinou IDE pole), pak se navenek tváří jako obyčejný SCSI disk. SCSI pole se většinou připojují přes speciální kartu, která se zasune do počítače a musí pro ni být v kernelu ovladač.
Nevýhodou hardwarových polí bývá cena. Jen samotná „krabice“ vyjde na 120 až 150 tisíc. Proto se hodí spíše pro náročnější použití. Výhodou je možnost vytvořit pole z mnoha disků (klidně i šestnácti), které by se do počítače obtížně skládaly.
V poslední době se vynořily i základní desky (nebo karty – bez „krabice“) s „RAID řadičem“. Pozitivem těchto desek bývají čtyři IDE kanály. Nicméně o kvalitách vestavěného HW řadiče mám své pochybnosti, často umí jen RAID 0 a 1, RAID 5 nikoli. Podle mého názoru je lepší v takovém případě použít SW raid, minimálně odpadnou problémy s ovladači těchto polí. Nicméně pokud máte s těmito poli někdo zkušenosti, ozvěte se :-)
A jen pro úplnost chci zmínit, že je dále možno sehnat pole, která se připojují jako síťový disk. To je většinou linuxový počítač se SW polem a spuštěnou Sambou :-)
To by bylo o RAIDech obecně všechno. Příště se budeme detailněji zabývat prací se softwarovými RAIDy v prostředí Linuxu.