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ěží.