Ne každý den vytváříte RAID 50 na Ubuntu-server 20.04 LTS, rozhodl jsem se tuto velmi příjemnou zkušenost sdílet dalším z vás.
Zatímco první pole mi běhá na debianu 10, druhé pole jsem si chtěl s novějším kernelem a novějšími balíčky zkusit na ubuntu-server 20.04 LTS.
Můj případ:
8x 2TB HDD
4 disky = RAID5
4 disky = RAID 5
RAID 5 + RAID 5 v RAID0 = RAID 50
Výhody oproti RAID 6
Větší výkon zápisu, větší výkon zápisu i během degradovaného pole.
Nevýhody oproti RAID 6
Mohou vypadnout pouze 2 specifické disky. Pouze 1 v každém RAID 5. Pokud ztratíte 2 disky v jednom RAID 5, tak se raid rozpadne.
Pokud chcete větší redundanci disků, tak rozhodně běžte buď do RAID51 (rozpad jednoho RAID 5 znamená, že máte ještě druhý raid 5), nebo RAID 6 (výpadek kterýchkoliv 2 disků) či RAID 60 (výpadek 2 disků v jednom raidu a výpadek 2 disků ve druhém raid 6), anebo RAID 61 (výpadek jednoho RAID 6 nic neznamená a máte k dispozici ještě druhý raid 6, u kterého mohou vypadnout 2 disky). Já možnost RAID 50 zvolil kvůli lepšímu výkonu a současně jsem nechtěl přijít o tolik kapacity, kterou bych ztratil tím, kdybych šel do RAID 10.
V jiném z mých článků „Jak přidat disk do raid5“ postupujte stejně. Pokud děláte větší disk, tak u možnosti fdisk -> t <- místo fd zvolíte 29 enter a máte GPT disk pro raid.
1. RAID 5 (4x hdd)
Pokud se vám jako mě stane, že vám stroj řve, že disky už mají v minulosti příznak raidu v superblocku, tak to můžete promazat:
mdadm --zero-superblock /dev/sde1 /dev/sdg1 /dev/sdi1 /dev/sdh1
No a potom vytvoříme RAID 5 ze 4 disků. Tedy v tomto raidu může vypadnout 1 disk.
mdadm --create --level=5 --raid-devices=4 /dev/md1 /dev/sde1 /dev/sdg1 /dev/sdi1 /dev/sdh1
2. RAID 5 (4x hdd)
Totéž, co v předchozím případě. Prostě jsem na těch discích měl předtím vytvořený RAID6 a napadlo mě, že bych získal víc výkonu, kdybych z toho udělal RAID 50, ale disky mají v superblocku informaci o RAID 6. Tu je nutné odstranit.
mdadm --zero-superblock /dev/sdf1 /dev/sdd1 /dev/sdc1 /dev/sdb1
No a pak vytvoříme druhý raid5 ze 4 disků. Může vypadnout 1 disk. Ve stejné konfiguraci by šel i RAID 60, jen bych měl méně místa a disky by mohly vypadnout 2 v každém raidu, celkem 4 ze všech disků, bylo by patrně rychlejší čtení, ale pomalejší zápis a hlavně méně místa.
mdadm --create --level=5 --raid-devices=4 /dev/md1 /dev/sde1 /dev/sdg1 /dev/sdi1 /dev/sdh1
3. RAID 0 nad 2x RAID 5 = RAID 50
Tento příkaz vytvoří RAID 0 ze 2 zařízení /dev/md1 a /dev/md0, který se bude jmenovat /dev/md2
mdadm –create –level=0 –raid-devices=2 /dev/md2 /dev/md1 /dev/md0
No a potom máte na výběr 2 možnosti.
A. BEZ LVM
Pro začátečníky asi OK. Přijdete o možnost dělat snapshoty. Pokud nevíte, co to je a nepotřebujete to, tak vám to je jedno.
mkfs.ext4 /dev/md2
A pak už stačí jen mountovat, vytvoříme si adresář /data a do něj namountujeme vytvořené RAID 50 pole
mkdir -p /data ; mount /dev/md2 /data
hotovo
Jak zjistím UUID md zařízení.
Po rebootu se mi z /dev/md2 stalo /dev/md125
~# mdadm –detail /dev/md125
/dev/md125:
Version : 1.2
Creation Time : Sat Jul 17 19:40:15 2021
Raid Level : raid0
Array Size : 11720024064 (11177.09 GiB 12001.30 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Sat Jul 17 19:40:15 2021
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Layout : -unknown-
Chunk Size : 512K
Consistency Policy : none
Name : nas2:2 (local to host nas2)
UUID : a1322d4c:1b0bdb26:894f421f:2027fa64
Events : 0
Number Major Minor RaidDevice State
0 9 126 0 active sync /dev/md/nas2:1
1 9 127 1 active sync /dev/md/nas2:0
Proto je důležité, aby jste do /etc/fstab psali UUID nebo ID zařízení, protože to se obvykle napříč restarty nemění. Zatímco /dev/md2 se může následující restart změnit, tak jako např. v mém případě na /dev/md125.
Což zjistím snadno takto:
# ls -laht /dev/disk/by-id/md-name-nas2\:2
lrwxrwxrwx 1 root root 11 Jul 17 20:46 /dev/disk/by-id/md-name-nas2:2 -> ../../md125
Co bych tedy přidal do /etc/fstab:
/dev/disk/by-id/md-name-nas2:2 /home ext4 defaults 0 0
(nas2 je v mém případě název stroje :0 je první raid5 , :1 je druhý raid5, :2 je RAID0) viz -> Name : nas2:2 (local to host nas2)
B. S LVM (Logical Volume Manager)
Vytvoříme si lvm:
pvcreate /dev/md2 Vytvoříme volume group, které pojmenuji raid50 a do volumegroup raid50 vložím zařízení /dev/md2
~# vgcreate raid50 /dev/md2 Volume group "raid50" successfully created ~# vgdisplay --- Volume group --- VG Name ubuntu-vg System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 1 Act PV 1 VG Size 28.67 GiB PE Size 4.00 MiB Total PE 7340 Alloc PE / Size 5120 / 20.00 GiB Free PE / Size 2220 / 8.67 GiB VG UUID 81OGcT-gTbW-SjfK-3PoM-pPFF-qf8j-3WbtNK
— Volume group —
VG Name raid50
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <10.92 TiB
PE Size 4.00 MiB
Total PE 2861333
Alloc PE / Size 0 / 0
Free PE / Size 2861333 / <10.92 TiB
VG UUID czA2sQ-iArw-Y4jB-pcfo-gtgw-2VGo-BA2Vfb
Potom by se hodilo vytvořit Logical Volume, které pojmenuji lvhome uvnitř volume group raid50:
# lvcreate -L 8.4T raid50 -n lvhome
Rounding up size to full physical extent 8.40 TiB
WARNING: atari signature detected on /dev/raid50/lvhome at offset 466. Wipe it? [y/n]: y
Wiping atari signature on /dev/raid50/lvhome.
Logical volume „lvhome“ created.
Nevím proč mě to hlásilo, že tam mám atari signature, ale jak jsem to googli, našel jsem to na bugzille. 😉
No a teď už stačí jen naformátovat na ext4 následujícím příkazem za #:
# mkfs.ext4 /dev/mapper/raid50-lvhome mke2fs 1.45.5 (07-Jan-2020) Creating filesystem with 2254858240 4k blocks and 281858048 inodes Filesystem UUID: 8e254a19-f570-4e2f-a0d4-cd9bf8dddcd2 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848, 512000000, 550731776, 644972544, 1934917632 Allocating group tables: done Writing inode tables: done Creating journal (262144 blocks): done Writing superblocks and filesystem accounting information: done
/home adresář při startu OS v /etc/fstab
v mém /etc/fstab jsem přidal řádek: /dev/disk/by-id/dm-name-raid50-lvhome /home ext4 defaults 0 0
Pokud nevíte název zařízení, tak:
ls -laht /dev/disk/by-id/
a najděte v seznamu zařízení to vaše.
Pokud to chcete vyzkoušet, můžete zkusit:
mount -a
Pokud to neproběhne, mrkněte do syslogu:
tail /var/log/syslog
Výsledek
# df -Th /home/
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/raid50-lvhome ext4 8.4T 88M 8.0T 1% /home