Softwarový RAID v Linuxu

Konečně jsem se donutil něco udělat se svým multimediálním centrem. Původní plány byly mít z toho přehrávač videa s možností nahrávání ze satelitu, nicméně tento cíl jsem nesplnil. To proto, že laborování se satelitní technikou bylo tak časově náročné, že mi prostě vytekly nervy, koupil jsem krabičku TechniSat s možností nahrávání a multimediální kompík rozmontoval na součástky. Věci, které nebudu potřebovat (case, grafika, satelitní karta) šly na Aukro a ze zbytků si postavím NAS.

Inu dokoupil jsem tedy dva nové 1,5 TB disky Samsung F2, novou case s možností rozšiřování, vzal si do konce týdne dovolenou a vrhl se na stavbu NASu. Na stroj jsem hodil Ubuntu Server v minimální instalaci a začal jsem nejprve ladit spotřebu. Základní deska s notebookovým Core2 procesorem, 2 GB RAM, třemi disky a zdrojem Fortron si vezme v zátěži max 70 wattů, v klidu je to cca 50 wattů a když odpojím klávesnici, vypnu USB a disky se uspí, tak se pod tu padesátku dostanu. Není to ideální, ale špatné to rozhodně není - na to, že jsem stavěl "ze zbytků".

Softwarový RAID jsem si vytvořil jednoduše - disky jsem rozdělil na třetiny, z čehož dvě třetiny na každém disku bude v konfiguraci RAID-0 a jedna třetina pak v RAID-5. Svazky jsem vtipně pojmenoval bigdata a safedata. Začal jsem tedy dělením disku. Otázka byla - jak naprosto přesně rozdělit tři disky? Použil jsem - světe div se - nástroj fdisk, který umožní vytvářet oddíly přesně po jednotlivých blocích (sektorech). Za pomocí kalkulačky (první disk je totiž jiné velikosti - F2 0,5 TB) jsem tedy vytvořil tři oddíly o velikosti cca 490 GB a dva oddíly o 1500 GB. Začneme.

apt-get install mdadm ssmtp mailx

Ty dva balíčky použijte pouze v případě, že nemáte nainstalován žádný poštovní server. Například v Ubuntu Server se neinstaluje v základní instalaci ani Postfix, u Desktopu však ano. Součástí mého zápisku nebude konfigurace ssmtp a mailx nástrojů pro odesílání e-mailů. Pokud používáte jiný MTA (např. Postfix), tak jej použijte.

Jak dál? Jádro v Ubuntu je na vše připraveno, takže stačí nainstalovat pouze balíček mdadm a začít s vytvářením pole. Nejprve vytvořím pole md0 (safedata) v RAID-5.

mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdc3 /dev/sda1 /dev/sdb1

Vytvoření RAID pole v Linuxu je opravdu hračka - příkaz netrvá ani chvilku a s nově vytvořeným zařízením md0 můžete ihned začít pracovat - tedy formátovat ho a používat. Nicméně na pozadí probíhá prvotní synchronizace pole, takže je dobré na nově vytvořené pole nahrávat jen data, o které zatím nechcete přijít. Pokud by se vyskytl nějaký problém během prvotní synchronizace, mohli byste o data přijít.

Při synchronizaci tedy v podstatě jde o test disků. Každopádně ji můžete sledovat příkazem

watch cat /proc/mdstat

V mém případě trvala slabé 2 hodiny. Já jsem nelenil a ihned se pustil do vytvoření souborového systému. Jelikož jsem nezadal velikost chunku, implicitně je 64kB. To jsem ostatně ověřil pomocí příkazu mdadm -D /dev/md0. Takže pro vytvoření souborového systému ext4 použiji následující parametry:


  • chunk size = 64kB (pro oddíl do 2 TB stačí)
  • block size = 4kB
  • stride = chunk / block = 64/4 = 16kB
  • stripe width = stride * (n data disks in raid5) = 16kb * (3 - 1) = 32kB

Vytvoření souborového systému jsem tedy provedl pomocí


mkfs.ext4 -v -m .1 -b 4096 -E stride=16,stripe-width=32 /dev/md0

Ze souboru /etc/mke2fs.conf je patrné, že implicitní volby pro vytváření souborového systému ext4 jsou vyhovující, proto jsem je neměnil. V mém případě (Ubuntu) to jsou volby has_journal, extent, huge_file, flex_bg, uninit_bg, dir_nlink a extra_isize.


Ještě k výběru souborového systému - zvolil jsem ext4, protože do NASu budu ukládat všemožné informace, od fotek přes zálohy až po velké soubory. Systém ext4 je dostatečně univerzální, přičemž poskytuje solidní výkon i pro velké soubory (podobně jako například XFS). Jelikož použiji UPS, tak neočekávám časté pády souborového systému - ext4 mi prostě bude stačit.

Podobným způsobem jsem vytvořil druhé pole v RAID-0 (strippingu):

mdadm --create --verbose /dev/md1 --level=stripe --raid-devices=2 /dev/sda2 /dev/sdb2

Zbývá ještě upravit soubor /etc/mdadm/mdadm.conf a nastavit v něm e-mailovou adresu (volba MAILADDR), na kterou bude odeslána zpráva v případě neočekávané události. Součástí balíčku mdadm je totiž démon, který provádí kontrolu všech diskových polí. Alespoň v Ubuntu to tak je, v ostatních distribucích to nebude jinak.

Ještě zbývá přidat definice jednotlivých polí do mdadm.conf souboru. Stačí přidat na konec výstup programu mdadm.

mdadm --detail --scan --verbose >> /etc/mdadm/mdadm.conf

V mém případě je to:


ARRAY /dev/md0 level=raid5 num-devices=3 metadata=00.90 spares=1 UUID=98224fe9:89d8b099:63b77ed5:ad3dee98
   devices=/dev/sda1,/dev/sdb1,/dev/sdc3
ARRAY /dev/md1 level=raid0 num-devices=2 metadata=00.90 UUID=30612513:244f79b8:63b77ed5:ad3dee98
   devices=/dev/sda2,/dev/sdb2


Samozřejmě je potřeba také vytvořit adresáře pro připojení a editovat /etc/fstab. Na úplný konec jsem vzal propisku a samolepicí papírek, napsal na něj jednotlivá pole a jejich oddíly (tj výstup programu mdadm). To celé pak přilepil dovnitř stroje. Může se to hodit.

Pokud mi zbude čas, napíšu něco o konfiguraci Samby a dalších služeb, které mi na mém novém NASu poběží.
08 July 2010 | linux | nas | ubuntu
twitter.com linkedin.com
google.com/+ facebook.com
flickr.com youtube.com