Návody
Přechod na softwarový RAID 1
Postup vytvoření RAID 1 na běžícím systému Linux.
Situace:
Máme běžící systém s jedním diskem bez RAIDU a chceme se zabezpečit proti výpadku disku. Oproti vyšším úrovním RAIDu je vyšší redundace - stejná data se ukládájí na všechny disky v poli, pro jeho provozování je třeba minimálně dvou disků. Máme jeden malý disk se systémem a chceme ho převést na 2 větší zapojené do RAID 1.
Postup:
-
Zkontrolujeme, zda je v jádře zakompilována podpora pro softwarový RAID a nainstalujeme si balíček mdadm.
-
Zapojíme disk, který chceme použít a rozdělíme ho na oblasti buď ručně pomocí fdisk nebo automaticky.Přidaný disk musí být stejně velký nebo větší než disk původní.
sfdisk -d /dev/sda | sfdisk /dev/sdb
-
Vytvoříme náš oblíbený souborový systém (například
mkreiser /dev/sdb2
), swap oddíl (mkswap /dev/sdb3, swapon /dev/sdb3) přimountujeme nový filesystém (mount /dev/sdb2 /nejaky_adresar
) a přeneseme data (stále za běhu systému):rsync -avx --delete /* /mnt/nejaky_adresar
Následuje podobná operace pro všechny další partition, pokud jich máme víc.
-
Nyní musíme nastavit bootloader. Já používám grub, pro něj bude záznam v
/boot/grub/grub.conf
vypadat zhruba takto - (hd1,0) musí odpovídat nově přidanému disku, později to změníme na (hd0,0), protože v případě havárie jednoho z disků bude bootloader ukazovat na disk hd0. (Jiná možnost je použít volbu "e" při startu grubu a upravit hodnoty dočasně při startu ):root (hd1,0)
kernel /vmlinuz root=/dev/sdb1 (chceme nabootovat už z nově přidaného disku)
bootZkontrolujeme nastavení v /boot/grub/device.map nového disku, kde bychom mělí mít
(hd0) /dev/sdbNainstalujeme GRUB do MBR bootovacího disku:
grub-install --no-floppy --root-directory /boot /dev/sdb
1 nebo :#grub
grub> root (hd1,0)
grub> setup (hd1,0)
grub> quit
-
Pro kontrolu bychom z nového disku měli být schopni nabootovat.
-
Pokud jsem schopni z nového disku nabootovat, odpojíme původní disk a přidáme další (bude opět sdb) a opakujeme kroky 1-5.
-
Změníme typ diskových partitions na fd
na disku, z kterého jsme nebootovali a je tedy umounted.
Já přidávám disk sdb a rozdělení vypadá např takto:
Device Boot Start End Blocks Id System/dev/sdb1 * 1 16 128488+ fd Linux raid autodetect
/dev/sdb2 17 140 996030 fd Linux raid autodetect
/dev/sdb3 141 264 996030 fd Linux raid autodetect -
Vytvoříme pole md0, disk sdb musí být "umounted":
mdadm --create /dev/md0 -c 128 -l 1 -n 2 /dev/sdb1 missing
Parametr -c určuje velikost bloku (můžeme vynechat pro standardních 64
kiB), -l (level)typ RAIDu (pro RAID 5 bychom zadali 5), -n počet zařízení
v něm a slovem missing řekneme, že zařízení zatím chybí (a RAID tedy
bude v degradovaném režimu).RAID 5 ze 4 disků bychom např. vytvořili takto:
mdadm --create /dev/md3 -l 5 -n 4 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1
a následně vytvořili požadovaný filesystém např. mkfs.ext4 /dev/md3 -
Stav vytvořeného pole můžeme ověřit takto:
mdadm --detail /dev/md0 -
Do souboru mdadm.conf zapíšeme aktuální údaje o poli a vytvoříme zálohu konfigurace:
cp /etc/mdadm.conf /etc/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm.conf -
Nyní nastavíme bootloader, abychom nabootovali už z degradovaného pole
:
root (hd1,0)
kernel /vmlinuz root=/dev/md0 (chceme nabootovat už z nově přidaného disku)
Upravíme fstab, aby root oddíl ukazoval na md0:
fstab:
/dev/md0 /boot reiserfs defaults 1 2 -
Po rebootu zbývá jen dotvořit RAID na prvním disku:
mdadm /dev/md0 -a /dev/sda1
Kernel nyní začne synchronizovat disky, v
/proc/mdstat
můžeme sledovat průběh operace:md0 : active raid1 sdb1[0] sda1[1]
128384 blocks [2/1] [U_]
[=============>.......] recovery = 69.1% (88713/128384) \
finish=3min speed=4773K/sec -
Opravit konfiguraci grubu, měl by ukazovat na root (hd0,0) nastavit správně fstab a zkontrolovat mdadm.conf:
fstab:
/dev/md0 /boot reiserfs defaults 1 2
/dev/sda2 none swap sw 0 0
/dev/sda3 / reiserfs defaults 0 1
/dev/dvd /media/dvd auto user,defaults 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0Příklad mdadm.conf:
DEVICE partitions
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=ed82a91b:c48fc2ba:3fa17ff1:df643a1c
devices=/dev/sda2,/dev/sdb2
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=90981134:3625ace0:70fc083c:c11c5043
devices=/dev/sda1,/dev/sdb1
MAILADDR root -
Stejným postupem vytvoříme RAID i na ostatních částech disku, pokud to potřebujeme, včetně swapu.
-
Pokud už doběhla synchronizace disků, máme vše hotovo a úspěšně za sebou. V souboru
/proc/mdstat
si nyní můžeme ověřit stav nového RAIDu:Personalities : [linear] [raid0] [raid1]
md1 : active raid1 sda2[0] sdb2[1]
995904 blocks [2/2] [UU]
md2 : active raid1 sda3[0] sdb3[1]995904 blocks [2/2] [UU]
md0 : active raid1 sdb1[0] sda1[1]128384 blocks [2/2] [UU]
-
Pokud chceme odstranit vadný disk z raid, tak je potřeba ho za vadný označit:
mdadm /dev/md0 -f /dev/sdb1
pak je potřeba vadný disk odebrat:
hdadm /dev/md0 -r /dev/sdb1
V této situaci se buď diskové pole nachází v degradovaném stavu (pokud jste neměli přidaný spare disk), nebo začala obnova dat na spare disk.
-
Pro jistotu zkusíme ještě reboot za normální situace a po odpojení každého disku.
-
Jako další kroky je vhodné nastavit monitorování disků pomocí S.M.A.R.T. (balíček smartmontools) a RAIDu pomocí
mdadm -F
.
A jak na připojení disku z RAID 1 v případě potřeby manipulace s daty na něm? Pokud se pokusíme disk připojit jako /dev/sda1 dostaneme se k hlášce "mount: neznámý systém souborů „mdraid“".
- Na druhém PC je zapotřebí nainstalovat podporu pro RAID do jádra, nainstalovat a spustit mdadm, zkontrolovat jaké pole máme vytvořeno :
cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md3 : active raid1 hdb1[0]
521984 blocks [2/1] [U_]
md4 : active raid1 hdb2[0]
153701760 blocks [2/1] [U_]
md5 : active raid1 hdb3[0]
2064256 blocks [2/1] [U_]
unused devices: <none> - Připojit kýžený oddíl pomocí mount /dev/md4 /mnt/něco