Softwarový RAID prakticky
Co je to RAID, jaké jsou jeho typy a pro který byste se měli rozhodnout, jste se již dozvěděli v minulých dílech. Nyní se na něj podíváme z praktického hlediska. Vytváření nového a modifikace stávajícího pole pro vás bude hračkou.
O RAIDu teoreticky: Správa linuxového serveru: RAID teoreticky
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
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í.
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.