Moje současná myšlenka je vytvořit jedno softwarové pole, třídy RAID-6, se 4 členskými disky, pomocí mdadm
.
Konkrétně by disky byly 1 TB HDD na SATA v malém serveru Dell T20.
Operační systém je GNU/Linux Debian 8.6 (později upgradovaný:Jessie ⟶ Stretch ⟶ Buster)
V mém případě by to znamenalo 2 TB místa na disku s paritou 2 TB.
Také bych to chtěl mít s tabulkou oddílů GPT, aby to fungovalo, nejsem si jistý, jak konkrétně postupovat, pokud bych to raději udělal čistě přes terminál.
Protože jsem nikdy nevytvářel pole RAID, mohl byste mi poradit, jak bych měl postupovat?
Poznámky:
-
Toto pole bude sloužit pouze pro jediná data. Není na něm boot ani OS.
-
Rozhodl jsem se pro RAID-6 kvůli účelu tohoto pole. Dvě selhání disku musí být pole schopno přežít. Vzhledem k tomu, že jsem hardwarově omezen na 4 disky, neexistuje žádná alternativa k RAID-6, o které vím. (Jakkoli se zpomalení RAID-6 může zdát ošklivé, v tomto poli na tom nezáleží.)
Přijatá odpověď:
V této odpovědi ať je jasné, že všechna data budou zničena na všech členech pole (discích), proto je nejprve zálohujte!
Otevřete terminál a staňte se root
(su
); pokud máte sudo
povoleno, můžete také provést například sudo -i
; viz man sudo
pro všechny možnosti):
sudo -i
Nejprve bychom měli vymazat disky, pokud tam předtím byla nějaká data a souborové systémy. Předpokládejme, že máme 4 členy:sdi
, sdj
, sdk
, sdl
. Pro účely vizuální zpětné vazby tohoto procesu pv
(Prohlížeč potrubí ) byl použit zde:
pv < /dev/zero > /dev/sdi
pv < /dev/zero > /dev/sdj
pv < /dev/zero > /dev/sdk
pv < /dev/zero > /dev/sdl
Alternativně, abyste jen zkontrolovali, zda po vás nic nezůstalo, můžete nahlédnout pomocí GParted na všechny disky, a pokud existuje nějaký oddíl s jakýmkoli souborovým systémem nebo bez něj, může stačit jeho vymazání, i když já sám preferuji výše uvedené vynulování všech zúčastněné jednotky, nezapomeňte před tím odpojit všechny oddíly, lze to provést podobně jako tyto jednoduché:
umount /dev/sdi?; wipefs --all --force /dev/sdi?; wipefs --all --force /dev/sdi
umount /dev/sdj?; wipefs --all --force /dev/sdj?; wipefs --all --force /dev/sdj
umount /dev/sdk?; wipefs --all --force /dev/sdk?; wipefs --all --force /dev/sdk
umount /dev/sdl?; wipefs --all --force /dev/sdl?; wipefs --all --force /dev/sdl
Poté inicializujeme všechny disky pomocí tabulky oddílů GUID (GPT) a potřebujeme rozdělit všechny disky, ale nedělejte to s GParted, protože by to vytvořilo souborový systém v procesu, což nechceme, použijte gdisk
místo toho:
gdisk /dev/sdi
gdisk /dev/sdj
gdisk /dev/sdk
gdisk /dev/sdl
Ve všech případech použijte následující:
o
Zadejte pro novou prázdnou tabulku oddílů GUID (GPT)y
Zadejte pro potvrzení vašeho rozhodnutín
Zadejte pro nový oddíl
Enter pro výchozí nastavení prvního oddílu
Enter pro výchozí nastavení prvního sektoru
Enter pro výchozí nastavení posledního sektorufd00
Zadejte pro Linux typ RAIDw
Zadejte zapsat změnyy
Zadejte potvrdit své rozhodnutí
Nyní můžete prozkoumat disky:
mdadm --examine /dev/sdi /dev/sdj /dev/sdk /dev/sdl
Mělo by tam být:
(type ee)
Pokud ano, prozkoumáme nyní oddíly:
mdadm --examine /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1
Mělo by tam být:
No md superblock detected
Pokud ano, můžeme vytvořit pole RAID6:
mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1
Měli bychom počkat, až bude pole plně vytvořeno, tento proces můžeme snadno watch
:
watch cat /proc/mdstat
Po vytvoření pole bychom se měli podívat na jeho detail:
mdadm --detail /dev/md0
Mělo by tam být:
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Nyní vytvoříme souborový systém na poli, pokud použijete ext4
, níže skryté Příkazu je lepší se vyhnout kvůli ext4lazyinit
by v případě velkého pole zabralo značné množství času, odtud název „lazyinit “, proto vám doporučuji vyhnout se tomuto:
mkfs.ext4 /dev/md0
Místo toho byste měli vynutit úplnou okamžitou inicializaci (s 0 % vyhrazenou pro root
protože se jedná o datové pole):
mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0 /dev/md0
Zadáním těchto voleb budou inody a žurnál inicializovány okamžitě během vytváření, což je užitečné pro větší pole.
Pokud jste zvolili zkratku a vytvořili jste ext4
souborový systém pomocí „příkazu lepšímu se vyhnout“, všimněte si, že ext4lazyinit
inicializace všech inodů bude trvat znatelně dlouho, můžete to sledovat, dokud to nebude hotové, např. pomocí iotop
nebo nmon
.
Ať už se rozhodnete provést inicializaci souborového systému, měli byste jej připojit po dokončení inicializace.
Nyní vytvoříme nějaký adresář pro toto pole RAID6:
mkdir -p /mnt/raid6
A jednoduše jej připevněte:
mount /dev/md0 /mnt/raid6
Protože jsme v podstatě hotovi, můžeme znovu použít GParted k rychlé kontrole, zda ukazuje linux-raid
souborový systém spolu s raid
příznak na všech jednotkách.
Pokud ano, správně jsme vytvořili pole RAID6 s oddíly GPT a nyní do něj můžeme kopírovat soubory.
Podívejte se, jaké UUID je md
souborový systém má:
blkid /dev/md0
Zkopírujte UUID do schránky.
Nyní musíme upravit fstab
, s vaším oblíbeným textovým editorem jsem použil nano
, ačkoli sudoedit
by bylo lepší použít:
nano /etc/fstab
A přidejte do něj položku:
UUID=<the UUID you have in the clipboard> /mnt/raid6 ext4 defaults 0 0
Sám nedoporučuji používat defaults
sadu příznaků, chtěl jsem pouze, aby řádek nebyl příliš složitý.
Zde jsou uvedeny příznaky připojení, které používám na datovém RAID zálohovaném UPS (místo defaults
):
nofail,nosuid,nodev,noexec,nouser,noatime,auto,async,rw,data=journal,errors=remount-ro
Po uložení změn můžete zkontrolovat, zda je to správné:
mount -av | grep raid6
Mělo by tam být:
already mounted
Pokud ano, uložíme konfiguraci pole; v případě, že nemáte žádné md
zařízení dosud vytvořené, můžete jednoduše:
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
V případě, že již existují pole, stačí spustit předchozí příkaz bez přesměrování do konfiguračního souboru:
mdadm --detail --scan
a přidejte nové pole do konfiguračního souboru ručně.
Související:Čas zahájení procesu s časovým pásmem?
Nakonec nezapomeňte aktualizovat initramfs
, protože jinak se vaše nové pole automaticky sestaví pouze pro čtení, pravděpodobně jako /dev/md127
nebo podobně:
update-initramfs -u -k all
Zkontrolujte, zda jste udělali vše podle plánu, a pokud ano, můžete restartovat:
reboot