Linux: Kniha kouzel, vanilková příchuť 2.14 (15. července 2022)
Veškerá moc příkazové řádky/příkazového řádku přehledně, pro začátečníky i pokročilé

4.3. Diskové oddíly / Softwarový RAID

Řada 2.x vanilkové příchuti Linuxu: Knihy kouzel je od 15. července 2022 do 1. března 2025 ve stavu dlouhodobé pasivní údržby; nahlášené chyby budou opravovány, ale aktivní vývoj se již věnuje jiným projektům. Máte-li zájem pokračovat v tvorbě Linuxu: Knihy kouzel pro novější verze linuxových operačních systémů, kontaktujte autora nebo rovnou vytvořte odnož.

1. Úvod

Tato kapitola se zabývá softwarovým RAID (prokládání, zrcadlení a RAID s paritou).

2. Definice

  • Pole (array) je skupina disků nebo jejich oddílů skombinovaná softwarovým RAID do jednoho blokového zařízení.
  • Dílem pole (device) se v RAIDu rozumí jednotlivý oddíl disku či celý disk tvořící pole spolu s dalšími takovými díly. Obvykle se každý díl nachází na jiném fyzickém disku.
  • Díly pole jsou dvou druhů — základní díly (active devices) tvoří pole a jsou aktivně používány; záložní díly (spare devices) nejsou používány, ale v případě výpadku některého ze základních dílů se jeden záložní díl stane základním a RAID na něj postupně „nasynchronizuje“ data. Díl pole může být také ve stavech „F“ (selhavší), „R“ (k nahrazení) a možná i dalších.
  • Pole je v degradovaném stavu, pokud je počet jeho fungujících základních dílů nižší než deklarovaný.

V této kapitole budou pokryty tyto režimy softwarového RAID: prokládání (stripe, RAID0), zrcadlení (mirror, RAID1) a RAID s paritou (RAID5).

Kde máte v zaklínadlech zadat md-pole, můžete svoje pole identifikovat těmito způsoby:

  • Pomocí UUID (např. „/dev/disk/by-uuid/ec2c7d38-“ atd.). Ve skriptech doporučuji preferovat tento způsob.
  • Názvem pole (např. „/dev/md/mujraid“). Tento způsob označování doporučuji pro ruční použití; většinou je spolehlivý, ale může způsobit problémy, pokud při vytváření zapomenete parametr „--homehost=any“ nebo pokud dojde ke konfliktu názvů (typicky po připojení výměnných médií s RAID-polem).
  • Číslem md-zařízení (např. „/dev/md127“). Toto číslo se může změnit při každém připojení pole, ale může být potřeba v případě práce s neúplně sestaveným polem.
  • Jakýmkoliv symbolickým odkazem na jednu z výše uvedených cest.

3. Zaklínadla

3/1 Všechny typy polí: zjišťování údajů

@dynamické informace o připojených polích#1
cat /proc/mdstat
@podrobné statické informace o některém poli#2
sudo mdadm --detail md-pole
@statické informace o dílu pole (stručné/podrobné)#3
sudo mdadm --query /dev/díl
sudo mdadm --examine /dev/díl
@seznam připojených polí (pro skript)#4
find /dev/disk/by-uuid -type l -xtype b -printf '%f %l\n' | sed -nE '/\/md[0-9]+$/s!(\.\.\/){2}!/dev/!;T;p'
@seznam dílů připojeného pole (pro skript)#5
@zjistit UUID pole#6
@zjistit název pole#7
@zjistit číslo pole#8

3/2 Všechny typy polí: změny

@odpojit pole#1
sudo mdadm --stop md-pole
@ručně připojit existující pole#2 (1)
sudo mdadm -A md-pole /dev/oddíl
@označit díl jako selhavší#3 (2)
sudo mdadm --manage md-pole -f /dev/oddíl
@přejmenovat pole#4 (3)
sudo mdadm --detail md-pole
Bezpečně si uschovejte seznam dílů pole.
sudo mdadm --stop md-pole && sudo mdadm -A /dev/md/nový-název --update=name --name=nový-název --homehost=any /dev/všechny-díly

3/3 Prokládané pole (RAID0)

@vytvořit#1
for x in /dev/oddíl; do sudo wipefs -a "$x"; done
sudo mdadm -Cv /dev/md/název --homehost=any -l stripe -n počet-oddílů /dev/první-oddíl /dev/další-oddíl
@smazat#2
Odpojte pole (madm --stop)
for x in /dev/oddíl; do sudo mdadm --zero-superblock "$x"; done

3/4 Zrcadlené pole (RAID1)

@vytvořit#1
for x in /dev/oddíl; do sudo wipefs -a "$x"; done
sudo mdadm -Cv /dev/md/název --homehost=any -l mirror -n počet-zákl-dílů [-x počet-záložních-dílů] /dev/první-oddíl /dev/další-oddíl
@smazat#2
Odpojte pole (madm --stop)
for x in /dev/oddíl; do sudo mdadm --zero-superblock "$x"; done
@přidat záložní/základní díl#3
sudo mdadm --manage md-pole -va /dev/nový-oddíl
sudo mdadm --grow md-pole -va /dev/nový-oddíl -n nový-počet-zákl-oddílů
@odebrat záložní/základní díl#4
sudo mdadm --manage md-pole -vr /dev/nový-oddíl
sudo mdadm --manage -vf /dev/díl -r /dev/díl && sudo mdadm --grow -n nový-počet-zákl-oddílů
@zvýšit počet základních dílů na úkor záložních#5
sudo mdadm --grow md-pole -n nový-počet-zákl-dílů
@učinit z některých základních oddílů záložní#6
@ručně spustit/ukončit kontrolu konzistence pole#7
sudo tee /sys/devices/virtual/block/$(basename $(realpath md-pole ))/md/sync_action <<<check
sudo tee /sys/devices/virtual/block/$(basename $(realpath md-pole ))/md/sync_action <<<idle

3/5 Pole s paritou (RAID5)

@vytvořit#1
for x in /dev/oddíl; do sudo wipefs -a "$x"; done
sudo mdadm -Cv /dev/md/název --homehost=any -l raid5 -n počet-zákl-dílů [-x počet-záložních-dílů] /dev/oddíl
Před dalšími operacemi s polem počkejte, než se uklidní (lze sledovat pomocí „watch -n 1 cat /proc/mdstat“).
@smazat#2
Odpojte pole (madm --stop)
for x in /dev/oddíl; do sudo mdadm --zero-superblock "$x"; done
@přidat záložní/základní díl#3 (4)
sudo mdadm --manage md-pole -va /dev/nový-oddíl
sudo mdadm --grow md-pole -va /dev/nový-oddíl [-a /dev/další-nový-oddíl] -n nový-počet-zákl-dílů
@odebrat záložní díl#4
sudo mdadm --manage md-pole -vr /dev/nový-oddíl
@odebrat základní díl#5
@zvýšit počet základních dílů na úkor záložních#6
sudo mdadm --grow md-pole -n nový-počet-zákl-dílů
@učinit z některých základních oddílů záložní#7
@nahradit díl za běhu jiným oddílem#8
sudo mdadm --manage md-pole -v --replace /dev/díl-k-odstranění -a /dev/nový-oddíl
Počkejte, než se pole uklidní (lze sledovat pomocí „watch -n 1 cat /proc/mdstat“)
sudo mdadm --manage md-pole -vr /dev/díl-k-odstranění

4. Instalace na Ubuntu

Podporu softwarového RAID je nutno doinstalovat:

sudo apt-get install mdadm

5. Tipy a zkušenosti

  • RAID5 nedoporučuji používat na otočných pevných discích s kapacitou nad 1 TB (což je dnes většina). Doba obnovy pole po selhání jednoho z disků je velmi dlouhá (u šestiterabajtových disků víc než 24 hodin, u dvanáctiterabajtových to může být několik dní), což se projevuje dvěma nevýhodami: pravděpodobnost selhání druhého disku během obnovy je relativně vysoká a je tím vyšší, čím víc disků je do pole zapojeno. Druhou nevýhodou je velké množství elektřiny spotřebované během obnovy pole.
  • Prokládaný RAID nemá redundanci, nemá záložní díly a počet jeho dílů není možné měnit. Pokud přijdete o data na kterémkoliv z jeho dílů, přijdete o data v celém poli.
  • Ve všech popsaných druzích RAIDu mají všechny díly pole stejnou velikost. Pokud se je pokusíte umístit na různě velké oddíly, RAID z nich použije jen části odpovídající velikosti nejmenšího z nich.
  • Máte-li v systému zrcadlené RAID pole, pravděpodobně jednou za měsíc se na něm automaticky spustí kontrola konzistence. Možná to dělá i pole typu RAID5, ale nevím jistě.

6. Další zdroje informací

7. Zákulisí kapitoly

V této verzi kapitoly chybí:

  • RAID6
  • RAID10

Tato kapitola záměrně nepokrývá:

  • nic
1 Toto zaklínadlo budete obvykle potřebovat jen po ručním odpojení pole; jinak systém pole připojuje automaticky, jakmile ho zaregistruje, a stejně automaticky ho rozšiřuje, když narazí na nový díl, který do něj patří).
2 Díl označený jako „selhavší“ pole okamžitě přestane používat a bude počítat se ztrátou všech dat na něm uložených.
3 Přejmenováním pole se nezmění jeho UUID, může se však změnit číslo md-zařízení.
4 Po přidání základního dílu neprovádějte další zásadní operace s polem, dokud se neuklidní.
Líbí se vám tento projekt a chcete, aby byl ještě lepší? Můžete mi s tím pomoci. Zmiňte se o něm technicky zdatným přátelům, opravte překlepy a nahlašte nefunkční zaklínadla, aby mohla být opravena; poskytněte mi zpětnou vazbu nebo se zapojte do vývoje nových kapitol. Další informace na GitHubu v dokumentu Jak se zapojit.
[BY-SA]

Veškerý obsah této stránky (text, obrázky, zdrojový kód) je možno upravovat a šířit pod podmínkami licence Creative Commons Attribution-ShareAlike 4.0 International. Upozorňuji, že uvedená licence vyžaduje uvedení seznamu autorů, licence a zdroje a poskytnutí stejné či kompatibilní licence k provedeným změnám, jsou-li nějaké. Příslušné údaje jsou dostupné na stránce „Přehled autorů“. Šíření obsahu bez těchto údajů nebo šíření upravené verze bez poskytnutí adekvátní licence k provedeným úpravám je pravděpodobně porušení licenčních podmínek a může být postihováno. Poskytování zdrojového kódu při šíření není touto licencí vyžadováno.

Pro nové verze, další informace, aktuální zdrojový kód a možnost se zapojit do projektu „Linux: Kniha kouzel“ navštivte jeho repozitář na GitHubu.