Softwarový RAID

raidTento článek bude určen spíše pokročilejším uživatelům, kteří mají představu, jak se pracuje s terminálem. Nicméně i méně zkušení se mouhou něčemu přiučit, či se alespoň dozvědět o existenci něčeho, co by se mohlo v budoucnu hodit.

Na úvod by se slušelo zmínit, jaké možnosti nám raid poskytuje a k čemu rozhodně neslouží.

 

RAID 0

RAID 0 se většinou používá v režimu prokládání, kdy se soubor rozhazuje na více disků. Výsledkem je potom rychlejší čtení i zápis dat. Minimální počet zařízení, ze kterého lze sestavit RAID 0 je jeden HDD. Ovšem značnou nevýhodou je obnova dat z degradovaného pole (v případě RAID 0 naprosto nefunkční). Selhání byť jediného disku znamená okamžitou ztrátu dat. Viditelná velikost prostoru je stejná jako součet velikostí všech disků.

 

raid0

 

RAID 1

RAID 1 je naopak nejrobustnější ze všech variant raidu. Ale nic není zadarmo a tak se celková viditelná velikost rovná velikosti zrcadleného disku. Například RAID 1 na čtyřech 4TB discích zpřístupní k použítí pouze 4 TB. Pole může degradovat až na jediný funkční disk.

Ačkoliv by se mohlo zdát, že RAID 1 je vhodný k zálohování, není tomu tak. Pouze snižuje riziko ztráty dat zaviněnou závadou na jednom z disků, proto by disky neměly být ze stejné série, jinak mohou kleknout všechny najednou a o data stejně přijdeme. Stejně tak se mohou všechny disky odporoučet vinou přepětí. Správná záloha se provádí ideálně na jiný hodně vzdálený stroj.

 

raid1

 

RAID 5

RAID 5 se snaží kombinovat dobré vlastnosti obou výše zmíněných řešení. Z RAID 0 si bere distribuci dat na více disků a z RAID 1 možnost obnovy dat při selhání jednoho disku. Celková velikost je vždy o jeden disk menší. Neznamená to ale, že se kapacita jednoho disku někam ztrácí, jen je využita k zápisu paritních bloků, díky kterým lze data obnovit do původního stavu. Parita je stejně jako data rovnoměrně distribuována mezi všechny disky.

 

raid5

 

RAID 6

RAID 6 je ve svém principu stejný s pětkou. Narozdíl od ní počítá dva paritní bloky, každý jiným způsobem. Díky tomu mohou selhat až dva disky a data jsou stále obnovitelná. Daní za tento lucus je opět snížení celkové kapacity tentokrát o dva disky. K sestavení RAIDu 6 je potřeba minimálně čtyř disků.

 

Praktické sestavení raidu

Nyní již víme základní rysy běžně používaných polí a můžeme si svičně sestavit vlastní raid. POkud se o to pokoušíte poprvé, doporučuji testovat své počínání na Virtualboxu, kde nehrozí přepsání vašich dat.

Příprava virtuálního stroje

Ve Virtualboxu nejprve vytvoříme nový virtuální stroj kliknutím na nový.

 

vbox-main

 

Vyplníme název a typ OS.

 

vbox-new

 

Přidělíme adekvátní množství paměti.

 

vbox-ram

 

Přidáme pevný disk.

 

vbox-hdd
vbox-hdd
vbox-hdd
vbox-hdd

 

V nastavení přidáme další disky, se kterými budeme testovat naše konfigurace.

 

vbox-hdd
vbox-hdd

 

Do virtuální mechaniky vložíme libovolné Live iso. Nyní můžeme testovací stroj spustit a přepnout se do terminálu.

Abychom se neusudovali, změníme uživatele na roota a zkoukneme dostupné disky:

Příkazy terminálu:
$sudo su
#fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000Disk /dev/sda doesn’t contain a valid partition table

Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn’t contain a valid partition table

Disk /dev/sdc: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdc doesn’t contain a valid partition table

Disk /dev/sdd: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdd doesn’t contain a valid partition table

Vidíme, že na virtuálních discích nejsou tabulky oddílů. Vytvoříme ji stiskem n a potvrzením. Další volby ponecháme na výchozích hodnotách (stisk enter). Typ oddílu změníme na fd (RAID) Na konec se vše zapíše na disk stiskem w.

Příkazy terminálu:
#fdisk /dev/sda
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x5e365133.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won’t be recoverable.Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-16777215, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-16777215, default 16777215):
Using default value 16777215

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): L

0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 Ext’d (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 Hidden FAT16 3 61 SpeedStor ab Darwin boot f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
1e Hidden W95 FAT1 80 Old Minix

Hex code (type L to list codes): fd

Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): w

#sfdisk -d /dev/sda | sfdisk /dev/sdb
#sfdisk -d /dev/sda | sfdisk /dev/sdc
#sfdisk -d /dev/sda | sfdisk /dev/sdd

Tabulků oddílů rozkopírujeme na ostatní stejné disky příkazem sfdisk. Pak přichází na řadu tvorba raidu samotného. Příkazem mdadm –create /dev/md0 -l6 -n4 /dev/sd[abcd]1 se vytvoří RAID 6 na čtyřech oddílech, které jsou pak jmenovitě uvedeny na konci příkazu (sda1, sdb1, sdc1 a sdd1).

Překladem do srozumitelštiny: Mdadm, vytvoř zařízení /dev/md0 s raid (level) 6 a použij 4 oddíly /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

Průběh synchronizace disků lze sledovat v souboru /proc/mdstat.

Příkazy terminálu:
#mdadm –create /dev/md0 -l6 -n4 /dev/sd[abcd]1
#watch -n 1 „cat /proc/mdstat“
Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 sdd1[3] sdc1[2] sdb1[1] sda1[0]
16765952 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
[====>…………….] resync = 24.4% (2049760/8382976) finish=0.8min speed=120574K/secPersonalities : [raid6] [raid5] [raid4]
md0 : active raid6 sdd1[3] sdc1[2] sdb1[1] sda1[0]
16765952 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]

unused devices: none

Raid jako takový je hotový a můžeme ho připravit k použití vytvořením souborového systému a namountováním do adresářové struktury.

Příkazy terminálu:
#mkfs.ext4 -L testpartition /dev/md0
mke2fs 1.42.8 (20-Jun-2013)
Filesystem label=testpartition
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
1048576 inodes, 4191488 blocks
209574 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
128 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
#mount /dev/md0 /mnt

Tímto je naše snažení kompletní.

 

Slovníček pojmů

  • degradované pole – pole obsahující vadný disk, pole s chybějícími disky

 

 

Štítky , , , .Záložka pro permanentní odkaz.

2 reakce na Softwarový RAID

  1. KOLEGA říká:

    Škoda, že takovej pěknej článek vyšel zrovna na 1. dubna … :/