RAID (manipulace s polem)
Ovládáním RAID pole se rozumí:
- jak z pole odstranit disk
- jak do pole přidat chybějící disk
- jak pole správně spustit
- jak zvětšit kapacitu pole
- jak pole zastavit
Kontrola stavu pole - check
Během kontroly pole, která probíhá různě, v závislosti na jeho typu, se neprovádí žádné opravy. Systém pouze v případě chyby navýší hodnotu v md/mismatch_cnt
příslušného pole.
- U pole typu raid 1, se kontrola provádí tak, že se porovnává kontrolní součet bloku z primárního disku, s kontrolním součtem bloku na disku sekundárním.
- U pole typu raid 5, se porovnává kontrolním součet bloku, s informací uloženou v metadatech.
- U pole typu raid 6 je to obdobné, pouze s tím rozdílem že pro každý blok jsou k dispozici dvoje metadata, takže se kontroluje každý blok dvakrát.
Kontrolu pole lze spustit zapsáním příkazu check do souboru md/sync_action
příslušného pole
V případě že hodnota md/mismatch_cnt
není po kontrole nulová, je třeba provést opravu pole.
Oprava pole - repair
Pokud se v souboru md/mismatch_cnt
příslušného pole ojevila jiná hodnota než 0, je třeba provést co nejdříve opravu. Opravu pole lze spustit zapsáním příkazu repair do souboru code>md/sync_action příslušného pole.
- U pole typu raid 1, se kontroluje velikost bloků primárního disku. Pokud neodpovídá, použijí se data sekundárního disku. Jako primární disk se bere ten, který má uvedeno čerstvější časové razítko.
- U pole typu raid 5, se nejdřív porovná velikost bloku s kontrolním součtem uloženým v metadatech. Pokud údaj neodpovídá, je blok zrekonstruován z dat v nich uložených. Postupně se tak překontrolují bloky na všech discích.
- U pole typu raid 6 je to obdobné, pouze s tím rozdílem, že pro každý blok jsou k dispozici dvoje metadata, které by měly vracet stejný výsledek. Takže se kontroluje každý blok dvakrát.
Vyhození disku z pole
Zůstane-li po opravě pole hodnota nenulová, znamená to, že někde vzniká problém. Bohužel nelze s jistotou říct, kde neboť na vině může být všechno možné, počínaje vadným konektorem a poškozeným pevným diskem konče. Pokud je však na vině vadný disk (což lze zjistit kupř. přes SMART), tak jej nejdřív musíme z běžícího pole vyřadit.
Nejprve ho však musíme pomocí mdadm označit jako vadný (failed). Bez toho totiž jádro nedovolí disk z RAID pole odebrat. V případě, že je disk poškozen do té míry, že je vyloučeno jeho další použití, je označen jako vadný přímo jádrem. Jádro označí disk jako vadný v okamřiku, kdy se mu nepodaří z něj data načíst, nebo naopak na něj zapsat. A to už může být občas pozdě.
stroj~# mdadm /dev/md1 -f /dev/sda3
|
Je-li disk označen jako vadný, jede pole dál, ovšem jako degradované, a disk je možné z pole odstranit
stroj~# mdadm /dev/md1 -r /dev/sda3
|
Nechceme-li, aby pole odstraněné blokové zařízení začalo po restartu znovu používat, je nutné odstranit ze superbloku diskového zařízení informaci o tom že bylo součástí nějakého RAID pole.
stroj~# mdadm --zero-superblock /dev/sda3
|
Před nulováním superbloku musí být blokové zařízení z pole již vyřazeno (viz výše), jinak to nebude mít žádný efekt. |
Superblok je nutné vynulovat i u blokových zařízení, které přidáme omylem, protože by se jinak po restartu nemuselo díky tomu pole správně sestavit.
Přidání disku do degradovaného pole
stroj~# mdadm /dev/md1 -a /dev/sda3
|
Pokud se do degradovaného RAID pole, které není v režimu interní bitmapy doplní chybějící disk, spustí se automaticky po jeho přidání rekonstrukce pole. Její průběh lze sledovat výpisem souboru /proc/mdstat
(viz výše).
Přidání nového (náhradního) disku
V případě že původní blokové zařízení v RAID poli selhalo, musíte nové zařízení, které ho má nahradit nejprve připravit. Tj. zajistit aby:
- Neobsahovalo zbytky informací z jiného RAID pole
- Neobsahovalo zbytky dat z jiného souborového systému, které by mohl vyvolávat konflikty
Přidání vypadlého disku
Jak už bylo zmíněno, disk může z nejrůznějších příčin z pole vypadnout
Zastavení RAID pole
RAID pole lze zastavit pouze v případě, že se nepoužívá (tzn. nesmí být připojené a také s ním nesmí pracovat žádný jiný proces, např. LVM):
stroj~# mdadm -S /dev/md1
|
Nové sestavení (spuštění) pole
Chceme-li zastavené pole znovu spustit a přitom zachovat na něm uložená data, musí být sestaveno, nikoliv znovu vytvořeno!!!.
Příklad sestavení raid pole /dev/md1 , identifikovaného záznamem v souboru /etc/mdadm/mdadm.conf
stroj~# mdadm -A /dev/md1
|
Občas je však potřeba, sestavit pole, které nemá záznam v souboru /etc/mdadm/mdadm.conf
. V takovém případě musíme při jeho novém sestavení zároveň předat informaci, podle níž jsou při sestavování příslušného raidu identifikovány jednotlivé disky. U staršího typu raid polí verze 0.90 je to číslo MD zařízení, pod kterým bylo pole původně sestaveno - tzv. Preferred Minor, kdežto u novější verze raid polí 1.20 se používá Array UUID.
Příklad sestavení raid pole /dev/md1 , verze 0.9 identifikovaného hodnotou Preferred Minor
stroj~# mdadm -A /dev/md1 -m1
|
Příklad sestavení raid pole /dev/md1 , verze 1.2 identifikovaného hodnotou Array UUID
stroj~# mdadm -A /dev/md1 -u52f39b28:a84c56aa:c351dded:ed2c7fe4
|
Při přesunu raid pole na jiný stroj je tedy nutno postupovat následovně:
- Nově přidaná bloková zařízení z jiného stroje je nutné nejprve řádně prozkoumat
- Nejjednodušší je výsledek zkoumání rovnou přidat do souboru mdadm.conf
- V něm pak upravíme příslušné číslo, tak aby nemohlo dojít při sestavení pole ke kolizi, a pokusíme se pole sestavit.
V případě že chceme pole pouze přečíslovat, stačí je zastavit, změnit v souboru mdadm.conf číslo a pole znovu sestavit.
Aby se změna projevila i po restartu, musí se po nahození pole aktualizovat ramdisk! Viz výše. |
Hodnotu Preferred minor number resp. Array UUID lze zjistit dotazem na příslušný diskový oddíl, který chceme aktivovat. Následující příkaz vypíše informace z MD superbloku na prvním oddíle prvního disku v systému:
stroj~# mdadm -E /dev/sda1
|
Pole lze znovu spustit (sestavit) i v degradovaném stavu, v takovém případě je však nutné přidat parametr --run
:
stroj~# mdadm -A /dev/md1 -m1 --run
|
Pole byste pochopitelně mohli místo pouhého sestavení (spuštění s parametrem -A ) také znovu vytvořit - parametr -C (viz výše), ovšem automatickou rekonstrukcí byste mohli poškodit rozhozená data.
|
Pokud si nejste po havárii jisti konzistencí dat, sestavujte (spouštějte) raději pole vždy tak, aby nemohlo dojít k poškození nesynchronizovaných dat a synchronizaci spusťe až po ověření, že bylo pole správně sestaveno. (To je důležité zvláště u pole typu RAID 5, kterému zhavarovaly dva disky a vy se pokoušíte zachránit data).