O RAIDu teoreticky: Správa linuxového serveru: RAID teoreticky
Průzkum existujícího pole
Informace o všech diskových polích spravovaných Linuxem naleznete v souboru /proc/mdstat
. Výpis tohoto souboru může vypadat třeba takto:
debian:~# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sdb2[0] sda2[1]
975763866 blocks super 1.2 [2/2] [UU]
bitmap: 5/466 pages [20KB], 1024KB chunk
md0 : active raid1 sdb1[0] sda1[1]
995904 blocks [2/2] [UU]
unused devices: &ls;none>
V tomto výpisu jsou vidět dvě pole, RAID 1 pole md0
o přibližné velikosti 1GB složené ze zařízení sdb1
a sda1
a RAID 1 pole md2
o přibližné velikosti 1TB složené ze zařízení sdb2
a sda2
. Obě dvě pole jsou aktivní se dvěma ze dvou zařízení (viz [2/2]
).
Zkusme se podívat na jiný výpis:
debian:~# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hda1[0] hdd1[3](F) hdb1[1]
1172608 blocks [3/2] [UU_]
unused devices: &ls;none>
Zde je patrný problém se zařízením hdd1
, které bylo označeno jako poruchové. Proto je u něj písmeno F (f jako faulty). Pole je aktivní, ale pouze se dvěma ze tří zařízení (viz [3/2]
). Povšimněte si ve výpisu posloupnosti označující stav jednotlivých zařízení seřazených podle jejich pořadí v poli - [UU_]
. Zde značí písmeno U
aktivní zařízení v poli a podtržítko značí chybějící aktivní zařízení.
V momentě, kdy chybné zařízení vyřadíme z pole a zařadíme jeho náhradu, začne rekonstrukce pole:
debian:~# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hdd1[3] hda1[0] hdb1[1]
1172608 blocks [3/2] [UU_]
[=====>...............] recovery = 28.0% (328768/1172608) finish=0.7min speed=18264K/sec
unused devices: &ls;none>
Detailnější výpis informací o diskovém poli můžeme získat pomocí nástroje mdadm
:
debian:~# mdadm -D /dev/md2
/dev/md2:
Version : 01.02
Creation Time : Mon Nov 9 13:53:36 2009
Raid Level : raid1
Array Size : 975763866 (930.56 GiB 999.18 GB)
Used Dev Size : 1951527732 (1861.12 GiB 1998.36 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 2
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Sat Jan 9 16:07:04 2010
State : active
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : 'debian':2
UUID : 2e2fd27c:aa6c8143:b3829f5b:2e325dd8
Events : 12
Number Major Minor RaidDevice State
0 8 18 0 active sync /dev/sdb2
1 8 2 1 active sync /dev/sda2
Pomocí nástroje mdadm
můžeme zkoumat i jednotlivá zařízení v poli:
debian:~# mdadm -E /dev/sda2
/dev/sda2:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 2e2fd27c:aa6c8143:b3829f5b:2e325dd8
Name : 'debian':2
Creation Time : Mon Nov 9 13:53:36 2009
Raid Level : raid1
Raid Devices : 2
Avail Dev Size : 1951527733 (930.56 GiB 999.18 GB)
Array Size : 1951527732 (930.56 GiB 999.18 GB)
Used Dev Size : 1951527732 (930.56 GiB 999.18 GB)
Data Offset : 272 sectors
Super Offset : 8 sectors
State : clean
Device UUID : 998eca59:96570811:c1661b8e:93707a76
Internal Bitmap : 8 sectors from superblock
Update Time : Sat Jan 9 16:09:05 2010
Checksum : 3860e005 - correct
Events : 12
Array Slot : 1 (0, 1)
Array State : uU
Vytvoření nového pole
Veškerá správa linuxového softwarového RAIDu se provádí pomocí nástroje mdadm
. Pokud byste chtěli vytvořit RAID 5 pole se třemi zařízeními (sda1
, sdb1
a sdc1
) a jednou náhradou (spare) v podobě zařízení sdd1
, můžete použít následující příkaz:
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1 --spare-devices=1 /dev/sdd1
Může se stát, že při sestavování pole nebudete mít hned k dispozici všechny disky, v takovém případě můžete místo chybějícího disku použít klíčové slovo missing
(chybějící):
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sda1 missing /dev/sdc1 --spare-devices=1 /dev/sdd1
Ačkoliv je možné sestavit pole v degradovaném režimu (s chybějícími redundantními aktivními zařízeními), tento postup se nedoporučuje. Zejména pak, pokud potřebujete na takové pole přesunout data ještě před tím, než doplníte zbývající zařízení.
Modifikace existujícího pole
Zařízení lze z pole odebírat a nová zařízení do pole vkládat. Vložení nového zařízení do pole je velmi jednoduché:
mdadm --manage /dev/md0 --add /dev/sde1
Každé pole má určitý definovaný počet aktivních zařízení (raid devices). Tento počet se nastavuje při vytvoření pole. Pokud je tento počet vyšší než momentální počet aktivních zařízení v poli (tj. nějaké aktivní zařízení v poli chybí, a pole je tudíž degradované), použije se nově přidané zařízení jako aktivní zařízení v poli, tedy jako náhrada za chybějící aktivní zařízení. V takové situaci dojde po zařazení daného zařízení do pole k zahájení jeho rekonstrukce.
Pokud je aktuální počet aktivních zařízení roven počtu aktivních zařízení v poli (žádné aktivní zařízení nechybí, pole tedy není degradované), pak se použije jako náhrada (spare). Náhradní zařízení sice v poli figurují, ale nejsou aktivní (nejsou na nich data). Teprve pokud některé z aktivních zařízení selže, pak bude náhrada automaticky zařazena do pole jako aktivní zařízení a začne jeho rekonstrukce.
Průběh rekonstrukce můžete sledovat třeba příkazem:
watch -n 1 'cat /proc/mdstat'
Odebrání zařízení z pole je trošku složitější. Záleží na tom, jestli je příslušné zařízení aktivní nebo ne. Pokud není aktivní (bylo označeno jako vadné nebo se jedná o náhradní zařízení), pak jej lze odebrat rovnou. Pokud se jedná o aktivní zařízení, je třeba jej nejdříve vyřadit z pole, což lze provést tak, že jej označíte jako vadné:
mdadm --manage /dev/md0 --set-faulty /dev/sde1
A následně je možné jej odebrat:
mdadm --manage /dev/md0 --remove /dev/sde1
Tím bych tento díl ukončil. Příště se podíváme na pokročilejší témata správy diskových polí jako řešení krizových situací, monitorování pole, atd.