Správa linuxového serveru: 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

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 sda1a 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.