RAID (manipulace s polem)

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

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

Upozornění U každého raid pole se mohou objevit poškozené bloky. Takové pole, které není čisté, se označuje jako dirty (angl. "špinavé") a je tedy potřeba co nejdříve vyčistit tj. provést opravu. V případě, že dojde k degradaci špinavého pole, se totiž může stát, že datový blok již nepůjde opravit.

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.
Upozornění Podmínkou úspěšné opravy je, aby pole mělo k dispozici alespoň minimální počet disků, který je nezbytný pro fungování raidu. Pokud je však spuštěna na pole v degradovaném režimu, je mnohem vyšší pravděpodobnost, že se oprava datového bloku nepodaří.

Vyhození disku z pole

Pro správu RAID polí slouží utilita mdadm. Pokud tedy chceme nějaký disk z běžícího pole vyřadit aniž by byl systémem detekován jako vadný, taj jej nejprve musíme pomocí tohoto nástroje jako vadný (failed) označit. Bez toho jádro nedovolí disk z RAID pole odebrat.

Poznámka
stroj~# mdadm /dev/md1 -f /dev/sda3

Je-li disk označen jako vadný, jede pole dál, ovšem jako degradované, ale disk je možné z pole odstranit

Poznámka
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.

Poznámka
stroj~# mdadm --zero-superblock /dev/sda3
Upozornění 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

Poznámka
stroj~# mdadm /dev/md1 -a /dev/sda3
Poznámka Pramater -a je zkrácená varianta pro příkaz --add. Existuje také příkaz --re-add. Ten je určen pro přidání zpět do pole disku, který z něj pouze na chvíli vypad. Při jeho aplikaci by se měla omezit synchronizace pouze na ta data která se změnila výpadku. V praxi je však výsledek chování obou parametrů shodný.

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).

Upozornění Pokud je přidáno blokové zařízení disku na kterém již probíhá rekonstrukce jiného RAID pole, bude spuštění rekonstrukce odložena, dokud předchozí rekonstrukce nedoběhne. U příslušného pole se pak objeví ve výpisu příznak (DELAYED)

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):

Poznámka
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!!!.

Poznámka 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.

Upozornění U starší verze raid polí 0.90, se může stát - v případě kdy jsou disky přehozeny do jiného stroje - že mají stejné Preferred Minor jako disky jiného již běžícího RAID pole. Proto aby při pokusu o sestavení nedošlo k nabourání tohoto běžícího pole, je nutné u přenesených disků hodnotu Preferred Minor změnit. Viz níže.
Poznámka Příklad sestavení raid pole /dev/md1, verze 0.9 identifikovaného hodnotou Preferred Minor
stroj~# mdadm -A /dev/md1 -m1
Poznámka Příklad sestavení raid pole /dev/md1, verze 1.2 identifikovaného hodnotou Array UUID
stroj~# mdadm -A /dev/md1 -u52f39b28:a84c56aa:c351dded:ed2c7fe4
Poznámka Jak je z příkladů zřejmé, pravděpodobnost výskytu stejné hodnoty Array UUID je velmi malá, neboť nejde o pouhé jedno celé číslo, ale řetězec. Přesto to není vyloučeno. K duplicitě může dojít tehdy, pokud bylo původní raid pole "naklonováno" na jiný stroj a po nějakém čase je toto naklonované pole přesunuto zpět na původní stroj.

Při přesunu raid pole na jiný stroj je tedy nutno postupovat následovně:

  1. Nově přidaná bloková zařízení z jiného stroje je nutné nejprve řádně prozkoumat
  2. Nejjednodušší je výsledek zkoumání rovnou přidat do souboru mdadm.conf
  3. 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.

Upozornění 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:

Poznámka
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:

Poznámka
stroj~# mdadm -A /dev/md1 -m1 --run
Poznámka 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).