Hlavní navigace

O (nejen) softwarových diskových polích (3)

Michal Kára 15. 12. 2003

V posledním dílu seriálu si ukážeme praktický postup, jak vytvořit RAID 1 pole a jak na něj převést existující systém.

Příklad vytvoření RAID pole

Uvažujme následující situaci: Máme počítač s jedním diskem (hda), do kterého jsme se rozhodli přidat další disk (jako hdc) a udělat softwarový mirroring. Disk hda má momentálně následující rozdělení:

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1      1041    524632+  82  Linux swap
/dev/hda2          1042    155061  77626080   83  Linux

Na disku hdc vytvoříme oddíl pro swap a oddíl, ze kterého budeme dělat pole:

   Device Boot    Start       End    Blocks   Id  System
/dev/hdc1             1      1041    524632+  82  Linux swap
/dev/hdc2          1042    155061  77626080   fd  Linux raid autodetect

POZOR! Pokud koupíme větší disk, je nutno dát pozor, aby oddíl hdc2 nebyl větší než hda2! Jinak disk hda2nepůjde v konečné fázi přidat do RAID pole! Může být buď stejně velký (v případě podobné geometrie disku), nebo menší.

Teď se ubezpečíme, že máme RAID podporu přímo zakompilovanou v kernelu. Pokud jej budeme kompilovat, v menuconfigu zaškrtneme v menu  Multi-device support (RAID and LVM) položky Multiple devices driver support (RAID and LVM), RAID support a nakonec RAID-1 (mirroring) mode. Samozřejmě překompilujeme a rebootujeme. Je možné, že vaše distribuce jádro se zakompilovanou podporou již obsahuje.

Nyní nainstalujeme raidtools2 a pak vytvoříme soubor /etc/raidtab s obsahem:

raiddev                 /dev/md0
raid-level              1
nr-raid-disks           2
nr-spare-disks          0
persistent-superblock   1
chunk-size              32
device                  /dev/hdc2
raid-disk               0
device                  /dev/hda2
failed-disk             1

Zde vidíte využití failed-disk. Na hda2 máme současný systém a ten při vytváření pole nesmí být dotčen.

Nyní můžeme pole vytvořit. Zadáme příkaz mkraid /dev/md0:

lemming:/etc# mkraid /dev/md0
handling MD device /dev/md0
analyzing super-block
disk 0: /dev/hdc2, 208845kB, raid superblock at 208768kB
disk 1: /dev/hda2, failed

Nyní by již zařízení mělo být funkční. Můžeme to zjistit příkazem cat /proc/mdstat:

lemming:/etc# cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 ide/host0/bus1/target0/lun0/part2[0]
      208768 blocks [2/1] [U_]

unused devices: <none>

Zde vidíte, že je pole aktivní, ale je funkční pouze jeden disk. Pokračujeme vytvořením ext3 filesystému: mke2fs -J size=32 /dev/md0.

Teď přišel čas zkopírovat RAID pole na současný systém. To není dobré dělat za provozu. (V dalším výkladu budu předpokládat, že se váš bootovací image (to je to, co LILO píše při startu: Loading Linux…) jmenuje Linux. V případě pochybností se podívejte do /etc/lilo.conf, co je tam uvedeno jako parametr default.)

Nejlepší je Linux nabootovat do toho nejminimálnějšího módu – při bootu podržet klávesu shift a LILU zadat parametry Linux init=/bin/sh. (Linux je výše zmiňované jméno image).

Systém se probudí prakticky ihned po spuštění kernelu a detekci zakompilovaných zařízení. Kernel by měl zdetekovat RAID pole.

Připojíme ho: mount /dev/md0 /mnt. Nyní na něj přesuneme celý filesystém. Pokud někdo chce, může si parametry příkazu cp odvodit za domácí úkol, pro ostatní je napíšu: cp -axv / /mnt. Vy máte za domácí úkol alespoň určit, proč jsou právě takovéto :-)

Teď můžeme systém souborů odmountovat (umount /mnt), pro jistotu syncnout disky (sync) a počítač zresetovat. A zkusíme z nového filesystému nabootovat. LILu zadáme parametr Linux root=/dev/md0. Pokud jsme všechno provedli správně, měl by se systém rozjet. Jestliže píše Unable to mount root fs, pravděpodobně se nestartuje RAID zařízení (není v kernelu).

Pokud systém nabootuje, máte za sebou nejtěžší část konverze. Teď už uděláme jen některé dočišťující úkony.

Předně překonfigurujeme LILO, v /etc/lilo.con­fpřidejte nebo změňte řádky:

boot=/dev/md0
raid-extra-boot="/dev/hda,/dev/hdc"
root=/dev/md0

A zapište konfiguraci příkazem: lilo. Dále upravte /etc/fstab, aby se využíval swap oddíl z obou disků (nebo to nemusíte dělat, pokud nepotřebujete, aby swap automaticky běžel i po pádu disku). fstab musí obsahovat řádky:

# <file system> <mount point> <type> <options> <dump> <pass>
/dev/hda1    none       swap   sw        0   0
/dev/hdc1    none       swap   sw        0   0

Udělejte mkswap /dev/hdc1.

Ještě nesmíme zapomenout opravit /etc/raidtab, aby odpovídal skutečnému stavu – řádek:

failed-disk             1

Zaměňte za:

raid-disk               1

Zkuste rebootovat počítač, měl by naběhnout. Ověřte, zda běží z RAIDu:

lemming:~# mount
/dev/md0 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)

Důležité je, že root (/) je namountován na /dev/md0. Jestliže jste konfigurovali swap, ověřte správnou funkci výpisem cat /proc/swaps.

Nyní přišel čas zrušit váš starý filesystém a uvést pole do normálního stavu. Pomocí fdisku změňte typ partitionu /dev/hda2 nafd:

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1      1041    524632+  82  Linux swap
/dev/hda2          1042    155061  77626080   fd  Linux raid autodetect

(Pokud vám nyní fdisk řekne, že musíte rebootovat, učiňte tak.)

A jsme u posledního kroku. Udělejte raidhotadd /dev/md0 /dev/hda2 a ověřte výsledek:

lemming:~# cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 ide/host0/bus1/target0/lun0/part2[2] ide/host0/bus0/target0/lun0/part2[0]
      208768 blocks [2/1] [U_]
      [==========>..........]  recovery = 54.4% (113664/208768) finish=0.5min speed=2920K/sec
unused devices: <none>

Nyní se pole synchronizuje. Za nějakou dobu synchronizace doběhne a pole bude plně funkční:

fw-games:~# cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 ide/host0/bus1/target0/lun0/part2[1] ide/host0/bus0/target0/lun0/part2[0]
      208768 blocks [2/2] [UU]

unused devices: <none>

A je hotovo.

Nyní můžete případně zkusit katastrofické scénáře – počítač vypnout, odpojit jeden z disků a zkusit nabootovat. Jenom upozorňuji, že po takovém experimentu je vždy nutné po opětovném přidání disku „vypadlý“ disk přidat pomocí raidhotadd a počkat na dokončení synchronizace.

Našli jste v článku chybu?

23. 3. 2006 16:28

ahojte, mam distribuciu mandriva a pokusil som sa rozbehat raid1. Postupoval som podla clanku a vytvoril som si md0,md2,md3 na ktore som namountoval /boot,/var,/home. Vytvoril som si aj md1 kde som chcel dat root ale vyskytli sa nasledovne problemy. Na zaciatku mi nevytvorilo zariadenia md1,md2,md3(iba md0?!?) a tak som si ich vytvoril rucne a taktiez som to vlozil do rc.sysinit. Takze ako som hore spomenul potom islo vytvorit md0,md2,md3 ale ked vytvorim md1 tak po reboote mi pri md1 napise md1…

26. 4. 2005 12:17

uživatel si přál zůstat v anonymitě
ak este potrebujes pomoc s tym raidom tak napis na moju adresu rrastik@pobox.sk
120na80.cz: Bojíte se encefalitidy?

Bojíte se encefalitidy?

Lupa.cz: Slevové šílenství je tu. Kde nakoupit na Black Friday?

Slevové šílenství je tu. Kde nakoupit na Black Friday?

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET