Softwarový RAID v linuxu

Softwarový RAID v Linuxu

Tento clanek je kratkym vycucem toho, jak se v Linuxu vytvari diskova pole ruznych typu (RAID1, RAID5, RAID6...). Podrobnejsi informace o tom, co to RAID je a k čemu slouží si musí každý dohledat sám.
Příprava na vytvoření RAIDU

Před tím, než se pustím do vytváření samotného dikového pole, se chci zmínit o přípravě diskových oddílů (partisen) tak, aby linux ihned vedel, ze se jedná o část diskového pole. Pro rozdělení disku můžeme použít program fdisk nebo cfdisk, které se nachází prakticky v každé linuxové distrubuci. Predpokladejme, ze mame 3 fyzicke disky a chceme vytvorit diskove pole typu RAID5. Na vsech discich si tedy pripravime stejně velké oddíly a přiřadíme nastavíme jim typ "Linux raid autodetect (fd)". Tento typ je nutné nastavit z toho důvodu, aby se nám pole při startu systému automaticky sestavilo. Pokud jsme s prací s programem cfdisk hotovy, mame nyni např. nasledujici diskove oddily:
/dev/sda5 - typu Linux raid autodetect
/dev/sdb5 - typu Linux raid autodetect
/dev/sdc5 - typu Linux raid autodetect
Nastavení typu na Linux raid autodetect má význám hlavně tehdy, máme-li v jádře linuxu zakompilovanou podporu pro příslušný typ RAIDU. Pokud bychom ji v jádře neměli, nedošlo by při startu systému k inicializaci vytvořeného diskového pole. Vše potřebné je možné nalézt v položce "Device Drivers" po spuštění programu "make menuconfig" před kompilací linuxového jádra.


Sestavení diskového pole (RAID5)

Zařízení, která používá RAID jsou v linuxu nejčastěji označována /dev/mdX. Pokud taková zářízení v systému nemáme, musíme je před samotným sestavením diskového pole vytvořit. To provedeme pomocí následujícího příkazu:
mknod /dev/md0 b 9 0
Tímto jsme vytvořili potřebné blokové zařízení a můžeme přistoupit k samotnému sestavení RAIDU. To provedeme pomocí příkazu:
mdadm --create -l 5 -n 3 /dev/md0 /dev/sda5 /dev/sdb5 /dev/sdc5
Parametr "l" udává, že se jedná o RAID5, "n" říká, že se pole skládá ze 3 oddílů (sda5, sdb5, sdc5). V tomto okamžiku se začalo pole sestavovat. Jeho průběh můžeme sledovat pomocí příkazu:
cat /proc/mdstat
Jakmile je sestavování dokončeno, vytvoříme na nově vzniklém diskovém prostoru (/dev/md0) souborový systém (ext3) a následně můžeme zařízení přimountovat (např. do složky data v kořenovém adresáři):
mkfs.ext3 /dev/md0
mount -t ext3 /dev/md0 /data
Tímto máme sestavené nové diskové pole typu RAID5.



Ruční nastartování již sestaveného pole

Pokud se nám stane, že jsme sestavili diskové pole a po restartu serveru neni vidět, můžeme ho jednoduše zapnout pomocí následujícího příkazu:
mdadm --assemble /dev/md0 /dev/sda5 /dev/sdb5 /dev/sdc5
Nyní by mělo být pole inicializované a připravené k dalšímu použití.



Vyřazení vadného disku z RAIDU

Pokud bychom chtěli z pole vyřadit např. partisnu s odznačením /dev/sdc5, učinili bychom to následovně. Nejdříve je nutné uvedený diskový oddíl označit za vadný a až poté jej z RAIDU odstranit. Použijeme k tomu tyto příkazy:
mdadm --fail /dev/md0 /dev/sdc5
mdadm --remove /dev/md0 /dev/sdc5
Nyní funguje pole v degradovaném režimu, protože běží pouze ze dvou zbylých disků.



Přidání dalšího disku do již existujícího pole

V praxi může také často nastat situace, kdy potřebujeme přidat další disk do již existujícího pole. Předpokládejme situaci, že máme funkční RAID5, který se zkládá z /dev/sda5, /dev/sdb5, /dev/sdc5 a chceme do přidat další oddíl označený /dev/sdd5. U RAIDU typu 5,6... mamé dvě možnosti. Buď přidat další disk jako SPARE nebo jako další diskový prostor, který rozšíří stávající pole o svoji velikost. SPARE znamená, že disk nerozšíří diskovou kapacitu pole, ale je použit jako náhrada v případě výpadku jednoho z používaných diskových oddílů. Pokud bychom chtěli přidat oddíl /dev/sdd5 jako SPARE, stačil by k tomu pouze tento příkaz:
mdadm --add /dev/md0 /dev/sdc5
V případě, že bychom chtěli přidat disk jako aktivní (rozšiřuje kapacitu současného pole) museli bychom použít příkazy dva. Konkrétně se jedná o tyto:
mdadm --add /dev/md0 /dev/sdc5
mdadm --grow /dev/md0 --raid-devices=4
První příkaz přidá nový oddíl do pole jako SPARE a druhý přinutí systém k přepočítání diskového pole a nastavení nového oddílu, jako aktivního.