RAID (vytvoření nového pole)

Z DCEwiki
Skočit na navigaci Skočit na vyhledávání

Pro vytvoření nového RAID pole se používá režim --create (lze použít i zkrácenou verzi parametru -C). Tento režim se nikdy nesmí použít, pokud pracujeme s disky již existujícího pole! Tj. pokud chceme do nového pole přidat blokové zařízení, které již bylo součástí nějakého RAID pole, je nezbytné provést nejprve u tohoto zařízení vynulování superbloku ( viz část Vyhození disku z pole )

Upozornění Raidová pole lze skládat pouze z logických oddílů stejné velikosti. Pokud chcete zkombinovat disky o různé kapacitě, musíte raidové pole poskládat z diskových oddílů, které velikostí odpovídají diskové kapacitě nejmenšího z disků.

Nemá také valný smysl skládat raidové pole z diskových oddílů na jednom disku, přestože to lze udělat. Dosáhli byste tím pouze další degradace výkonu při diskových operacích.

Bloková zařízení a RAID

RAID pole lze sestavit rovnou z celých disků, většinou je však lepší RAID pole sestavit z logických oddílů. A to z následujících důvodů:

  • v případě že má být nad RAID polem umístěn i systémový disk, umožní tabulka rozdělení disku (ve které jsou adresovány logické oddíly) umístit zavaděč. Viz tabulka
  • když je RAID pole sestaveno z logických disků, lze použít disky rozdílné velikosti
Upozornění Pokud jsou logické oddíly, ze kterých je RAID pole sestaveno, označeny jako typ Linux raid autodetect ( kód fd), pak se pole při startu jádra automaticky sestaví - to je důležité v případě, že kořenový souborový systém je také v RAID poli. Každopádně však musí být příslušné moduly jádra buď zakompilované rovnou v jádře, nebo přítomny v initrd obrazu, který jádro používá při svém zavedení do paměti počítače při startu systému.

Po každé změně RAID polí je tedy žádoucí aktualizovat ramdisk příkazem:

update-initramfs -u

S - spare disk

Disk, který je součástí RAID zařízení, ale není používaný dokud z něj některý disk nevypadne. Pak přestane být označen [S] a začnou se na něj replikovat data.

Upozornění V případě že zhavaruje disk na kterém byly uloženy informace potřebné pro replikaci, dojde ke ztrátě dat. To je důvod proč upřednostnit RAID-6 před RAID-5.

F - faulty disk

Když nějaké blokové zařízení, které je součástí RAID pole zkolabuje, zůstane dále jeho součástí, ale je označeno jako faulty [F]. V poli je takový disk nahrazen prvním dostupným spare diskem, na který se automaticky začne pole rekonstruovat. Pokud není spare disk k dispozici, může pole fungovat dál, pokud mu to dovolí jeho typ, ovšem v degradovaném režimu.

Poznámka Pokud chceme nějaké diskové zařízení z RAID pole vyjmout, musíme ho nejprve označit jako faulty (přestože je v pořádku), jinak nám ho nedovolí mdadm odstranit, protože s ním bude stále pracovat.
Upozornění V případě SATA disků (podporují hotswap) se může v případě problémů s napájením stát, že vypadnou a systém je znovu najde jako nové zařízení. V takovém případě se RAID pole přepne nejenom do degradovaného režimu, ale také do stavu read-only. Systém zůstane běžet pouze s tím co má aktuálně nataženo v paměti. Po restartu by se mělo pole normálně obnovit. Každopádně takové chování signalizuje vážný hardwarový problém, který je nutno bezpodmínečně vyřešit.

Vytvoření RAID pole typu 0 z blokových zařízení /dev/hda3 a /dev/sda3

Poznámka
 stroj~# mdadm -C /dev/md1 -l0 -n2 /dev/hda3 /dev/sda3
  • Parametr -C je zkrácená forma pro parametr --create, operaci, kterou vytvoříme nové RAID pole /dev/md1
  • Parametr -l nastaví typ raidového pole (0, 1, 5, 6 apod.)
  • Parametr -n určí z kolika disků (či diskových oddílů) se má pole sestavit. Je-li pole sestaveno z více disků nežli je třeba, nastavení nepoužívaným diskům příznak [S] (spare - záložní disk)
Upozornění RAID pole lze vytvořit a provozovat i bez toho, že by se při jeho vytvoření specifikovalo jméno. V takovém případě se však můžete dočkat nemilých překvapení. Obzvlášť tehdy, když nad tímto polem je vytvořená ještě LVM skupina.

Nástroj mdadm totiž při vytvoření pole použije pro jeho pojmenování hostname a aktuálně přiřazené číslo md zařízení. Tyto hodnoty však mohou být za určitých okolností jiné. Např. tehdy, když přehodíme disky pole do jiného stroje, nebo když na stroji spustíme nějaké Live CD, které si detekuje a sestavuje RAID zařízení nějakým skriptem.

Vytvoření pojmenovaného RAID pole

Poznámka
 stroj~# mdadm -C /dev/md1 --name=pojmenovanepole --homehost=jmenohosta -l0 -n2 /dev/hda3 /dev/sda3
  • Parametr --name vytvoří štítek RAID pole /dev/md1
  • Parametr --homehost nastaví jméno domény

Ostatní parametry jsou shodné jako u výše uvedeného příkladu

Stav RAID pole

Linuxový RAID vytváří zařízení v rámci MD subsystému, proto systém tato zařízení vidí pod jejich pořadovými čísly v rámcio adresáře /dev/md. Informace o aktuálním stavu MD subsystému udržuje jádro v souboru /proc/mdstat, ze kterého lze získat podrobnosti o aktuálně spuštěných RAID polích pouhým výpisem:

Poznámka
user@stroj:~$ cat /proc/mdstat
 Personalities : [raid1]
 md0 : active raid1 sda1[0] hda1[1]
       19542976 blocks [2/2] [UU]
 
 unused devices: <none>

Výše uvedený příklad poskytuje informaci o tom že v systému běží jedno spuštěné RAID pole typu 1 (mirror), které je dostupné jako blokové zařízení /dev/raid1. Je složené ze dvou diskových oddílů - /dev/sda1, který je na SATA disku a /dev/hda1, který je na IDE disku. Pole je plně funkční - má příznak [UU], který signalizuje že oba z disků jsou ve stavu U (z angl. up - nahozené).

Neúplné ( degradované) RAID pole

V případě že by některý z disků vypadnul, běželo by RAID pole dál, ovšem v degradovaném stavu. Data by nadále zůstala dostupná, ovšem pouze z jednoho disku. Ovšem v případě selhání i tohoto druhého disku by mohla být ztracena, proto by bylo zapotřebí do RAID pole urychleně přidat náhradní disk.

U běžícího pole, kterému vypadlo či selhalo některé z blokových zařízení by příznak vypadal buď [U_] nebo [_U], v závislosti na tom, který z disků nelze použít.}}

Poznámka Za určitých okolností je neúplné RAID pole výhodné. Pokud chceme tedy pole záměrně vytvořit jako degradované je třeba při jeho vytvoření místo chybějících blokových zařízení uvést parametr missing. Mějte však stále na paměti, že v případě selhání degradovaného pole (nebo pole vytvořeného s příznakem --assume-clean) mohou být data - v případě že selže zrovna disk na němž jsou uložena - nenávratně ztracena.

S výjimkou RAID 0 se nové pole vždy vytvoří v degradovaném stavu, s tím, že pokud je přítomen plný počet blokových zařízení, začne automaticky proces synchronizace. Znamená to, že se ukládaná data primárně ukládají na jeden z disků a teprve z něj se postupně rozhazují na další disky v RAID poli. Tento proces synchronizace - nazývaný také "rekonstrukce" - raidového pole je poměrně zdlouhavý. Pokud na nově vytvořený RAID, který se teprve synchronizuje, začnete ihned sypat data, může trvat ještě déle. Proto máte několik možností

  • Nechat dojet synchronizaci a teprve pak začít RAID používat
  • Manuálně zastavit synchronizaci, dokud neskončí všechny ostatní operace s polem (ovšem pak ji nesmíte zapomenout spustit)
  • Nové pole vytvářet rovnou s parametrem --assume-clean, a synchronizaci spustit manuálně až po nakopírování dat.
  • Nové pole vytvořit jako degradované, nasypat do něj data a teprve poté do něj přidat další disky, které se začnou automaticky synchronizovat.Tato možnost se hodí obzvlášť tehdy, když nemůžeme nebo nechceme použít rovnou všechny diskové oddíly.