Ilustrativní obrázek

Diskový RAID a jeho možnosti

Za rohem na nás kdykoliv může čekat selhání disku a nenadálá ztráta důležitých dat. Nebo prostě jenom chceme využít toho, že máme více disků, a zrychlit tak naši práci. RAID může zajistit oboje.

  • coding

Za zkratkou RAID stojí Redundant Array of Independent Disks neboli česky Redundantní pole nezávislých disků. Pokud disponujeme více disky pro ukládání dat, můžeme z nich vytvořit důmyslný systém. Jak systém bude fungovat, určí typ RAIDu. Mezi nejpoužívanější typy patří RAID 0, RAID 1, RAID 5 či RAID 6. Například RAID 0 z více disků udělá jeden masivní disk. RAID 1 zase mezi disky vytvoří kopie pro zálohy a rychlé čtení. RAIDy následně můžeme i kombinovat, například RAID 10 (spojení RAID 0 a RAID 1).

RAID je vhodný jak na jednoduché zálohování, tak i na ochranu proti výpadku disku a zajištění dostupnosti. Pokud například máme čtyři disky plné fotografií, tak za pomoci RAID 5 dokážeme pojistit naše data, pokud náhodou selže jeden z disků. RAID 0 naopak data chránit neumí – je však velmi užitečný pro rychlé čtení, zápis a kombinování RAIDů.

Druhy RAID

Máme tedy nějaké disky spojené dohromady a potřebujeme na nich uchovat data. Jak a v jaké formě data skladovat záleží na tom, jaký druh RAID vybereme. Na výběr máme většinou z následujících RAID:

  • RAID 0
  • RAID 1
  • RAID 10
  • RAID 2
  • RAID 3
  • RAID 4
  • RAID 5
  • RAID 6

RAID 0

Jestliže máme několik disků, nejjednodušší, co s nimi můžeme udělat, je spojení dohromady. To přesně dělá RAID 0. Disky se pak na venek tváří jako jedna velká jednotka. RAID 0 dokáže spojit disky buď „zřetězením“ nebo „proužkováním“.

Zřetězení je naprosto triviální a často se označuje jako „Prostě hromada disků“ („Just a bunch of disks“).

jbod.png

Znázornění uložení dat pomocí RAID 0 (zřetězený)

RAID 0 v proužkovacím módu je daleko efektivnější, a dává smysl jej použít místo zřetězení. Data se při zapisování dělí na malé bloky a místo toho, aby se psalo do jednoho disku, se data zapisují napříč všemi disky “zleva doprava”. Jeden soubor tedy může být zapsaný přes všechny disky. I když se to může zdát jako zbytečná fragmentace, dostaneme daleko rychlejší zápis a čtení, jelikož nad souborem pracujeme pomocí všech disků naráz (tedy znásobíme rychlost počtem disků).

RAID 0.png

Znázornění uložení dat pomocí RAID 0 (proužkovaný)

Shrnuté statistické vlastnosti RAID 0 (zřetězený), kde proměnná „n“ je počet disků, „k“ je kapacita jednoho disku a „r“ je rychlost zápisu/čtení jednoho disku:

  • Kapacita RAIDu: n × k
  • Odolnost proti výpadku disku: žádná
  • Rychlost čtení: r
  • Rychlost zápisu: r

Shrnuté statistické vlastnosti RAID 0 (proužkovaný), kde proměnná „n“ je počet disků, „k“ je kapacita jednoho disku a „r“ je rychlost zápisu/čtení jednoho disku:

  • Kapacita RAIDu: n × k
  • Odolnost proti výpadku disku: žádná
  • Rychlost čtení: n × r
  • Rychlost zápisu: n × r

Pokud máme více disků, vyplatí se nastavit proužkovací RAID 0, jelikož obdržíme rychlejší čtení i zápis. Tato rychlost roste s počtem disků.

RAID 1

RAID 1 dokáže mezi disky vytvořit zrcadlení. Principiálně není nijak složitý. RAIDu stačí nastavit, jaký disk kopírovat a kolik disků obětovat na uchování kopie. Typicky můžeme vidět jeden disk jako originál a jeden disk jako kopii, nicméně pro velmi důležitá data lze mít záložních disků libovolně mnoho.

RAID 1.png

Znázornění uložení dat pomocí RAID 1 (páry kopií)

Kromě zálohy má RAID 1 výhodu v oblasti čtení. Tím, že máme více kopií, můžeme ke čtení dat využít více disků, avšak může se nám zpomalit zápis, pokud používáme malou sběrnici, pomalé zařízení, různé disky apod.

Shrnuté statistické vlastnosti RAID 1, kde proměnná „n“ je počet disků, „k“ je kapacita jednoho disku, „d“ je počet duplicit na jeden disk a „r“ je rychlost zápisu/čtení jednoho disku. RAID rozdělíme na skupiny, obsahující jeden originál a jeho „d“ kopií (tedy po d + 1 discích):

  • Kapacita RAIDu: (n × k) ÷ (d + 1)
  • Odolnost proti výpadku disku: V nejhorším případě zvládneme výpadek d disků (tedy výpadek duplicit jednoho disku), v nejlepším případě zvládneme výpadek až (n ÷ (d + 1)) × d disků (tedy výpadek úplně všech kopií)
  • Rychlost čtení: r × (d + 1) – čteme originál i jeho duplicity
  • Rychlost zápisu: r ÷ (d + 1) – zapisujeme originál i jeho duplicity

Pokud máme více disků, můžeme nějaké z nich označit pro zrcadlení disků jiných. Jedná se o ideální zálohu, a navíc díky kopiím získáme rychlejší čtení.

RAID 10

RAID 10 je kombinace RAID 1 a RAID 0. Data nejprve „rozproužkujeme“ (RAID 0) a následně zrcadlíme (RAID 1). Docílíme tak extra bezpečnosti pomocí kopií a vysokých rychlostí díky RAID 0 „proužkování“.

RAID 10.png

Znázornění uložení dat pomocí RAID 10 (proužkované kopie)

Shrnuté statistické vlastnosti RAID 10, kde proměnná „n“ je počet disků, „k“ je kapacita jednoho disku, „d“ je počet duplicit na jeden disk a „r“ je rychlost zápisu/čtení jednoho disku. RAID rozdělíme na skupiny, obsahující jeden originál a jeho „d“ kopií (tedy po d + 1 discích):

  • Kapacita RAIDu: (n × k) ÷ (d + 1)
  • Odolnost proti výpadku disku: V nejhorším případě zvládneme výpadek d disků (tedy výpadek duplicit jednoho disku), v nejlepším případě zvládneme výpadek až (n ÷ (d + 1)) × d disků (tedy výpadek úplně všech kopií)
  • Rychlost čtení: n × r – díky proužkování můžeme číst všechny disky naráz
  • Rychlost zápisu: (n × r) ÷ (d + 1) – zapisujeme na všechny disky naráz, ale i na kopie

Pokud máme hodně disků, můžeme využít kombinací RAID 0 a RAID 1 k rychlému čtení, rychlejšímu zápisu a extra zálohování. Disků ale potřebujeme daleko více nežli pro samotný RAID 0 či RAID 1.

RAID 2

RAID 2 je proužkován po jednotlivých bitech a data zabezpečuje tzv. Hammingův kód. Hammingův kód je lineární kód schopný detekce dvou chybných bitů a opravy jednoho chybného bitu. K diskům tedy potřebujeme úměrně mnoho záložních disků s opravnými informacemi. Jedná se o složitější verzi RAID 3.

Pokud máme více disků, můžeme některé z nich vybrat jako záložní a pomocí principu Hammingova kódu se pojistit proti výpadku jednoho disku. RAID 2 nepatří mezi často používané, protože máme vyšší verzi RAID s lepšími vlastnostmi.

RAID 3

RAID 3 je proužkován po bytech s vymezením jednoho z disků jako paritní. Parita funguje tak, že na celý jeden proužek je aplikována operace XOR. Výsledek operace je uložen na paritní disk a slouží tím pádem jako záložní disk pro celé diskové pole.

Vzhledem k tomu, že se pohybujeme ve dvojkové soustavě, je operace XOR ekvivalentní k prostému součtu bitů (s ignorováním přetečení). Operace XOR je inverzní, tedy dvojnásobný XOR stejnou hodnotou vrátí původní výsledek. Díky tomu dokážeme při výpadku jednoho disku provést obnovu a to tak, že paritní disk provede operaci XOR se všemi neporušenými disky, a tím pádem nám zbude ztracený disk (ostatní disky se „vyruší“ s informací uložené v paritě). Například mějme blok kódu 00100101 a přičtěme k němu 11011101. Dostaneme výsledek 11111000. Pokud náhodou ztratíme první blok, stačí k výsledku přičíst ten druhý (tedy 11111000 XOR 11011101) a dostaneme opět 00100101.

Problém tohoto RAIDu je v zatížení paritního disku. Vždy, když provedeme zápis, musí se celý proužek bloků opět přepočíst. Paritní disk se tedy stává úzkým hrdlem našeho RAIDu.

RAID 3.png

Znázornění uložení dat pomocí RAID 3 (disky + jeden paritní disk)

RAID 3 recovery.png

Znázornění obnovy dat pomocí RAID 3 (disk 2 selhal)

Pokud máme více disků, můžeme jeden z nich označit jako záložní a zajistit tak ochranu proti výpadku jednoho disku. RAID 3 se však kvůli úzkému hrdlu a vysokému opotřebení záložního disku příliš nepoužívá a vyšší verze RAID mají lepší vlastnosti.

RAID 4

RAID 4 je stejný jako RAID 3, akorát proužky dělí po blocích, nikoliv po bytech. Velikost bloků RAID 4 jde nastavit a většinou jsou 16 kB, 32 kB, 64 kB nebo 128 kB.

RAID 5

RAID 5 je běžně používaný a funguje na velmi podobném, akorát vylepšeném principu, jako RAID 4.

RAID 5 je proužkován po blocích. Pro ochranu proti výpadku se na každém proužku střídavě vyčlení jeden paritní blok (viz. RAID 3), který je zodpovědný za zálohu daného proužku. Zálohová parita je tím pádem rovnoměrně distribuována mezi celé pole disků a můžeme eliminovat úzké hrdlo v podobě paritního disku, který využívá RAID 3. Jinými slovy, vezmeme paritní disk a rozprostřeme jej mezi všechny disky.

RAID 5 dokáže obnovit jeden porušený disk stejným principem, jako RAID 3 nebo RAID 4.

RAID 5.png

Znázornění uložení dat pomocí RAID 5

Shrnuté statistické vlastnosti RAID 5, kde proměnná „n“ je počet disků, „k“ je kapacita jednoho disku a „r“ je rychlost zápisu/čtení jednoho disku:

  • Kapacita RAIDu: (n - 1) × k – odečítáme jeden rozkouskovaný disk vyhrazen na paritu
  • Odolnost proti výpadku disku: Dokážeme obnovit vždy jeden disk, ať už jich máme zapojených, kolik chceme
  • Rychlost čtení: (n - 1) × r – jeden z disků vždy nemůžeme číst, je to parita
  • Rychlost zápisu: (n - 1) × r – ale při menší sběrnici pouze v poměru (n - 1):1, protože jeden z disků musí aktualizovat paritu (zapisovat)

Pokud máme více disků a chceme se pojistit proti výpadku jednoho disku, RAID 5 je ideálním a efektivním řešením které zároveň zlepší výkon při čtení a zápisu.

RAID 6

RAID 6 je stejně jako RAID 5 běžně používaný. Funguje na identickém principu jako RAID 5, akorát místo jednoho paritního bloku na řádek ukládá dva paritní bloky na řádek. Díky tomu dokáže při poruše obnovit dva disky, místo jednoho.

Shrnuté statistické vlastnosti RAID 6, kde proměnná „n“ je počet disků, „k“ je kapacita jednoho disku a „r“ je rychlost zápisu/čtení jednoho disku:

  • Kapacita RAIDu: (n - 2) × k – odečítáme dva rozprostřené disky vyhrazené na paritu
  • Odolnost proti výpadku disku: Dokážeme obnovit vždy dva disky, ať už jich máme zapojených, kolik chceme
  • Rychlost čtení: (n - 2) × r – dva z disků vždy nemůžeme číst, je to parita
  • Rychlost zápisu: (n - 2) × r – ale při menší sběrnici pouze v poměru (n - 2):2, protože dva z nich musí aktualizovat paritu (zapisovat)

Pokud máme více disků a chceme se pojistit proti výpadku dvou z těchto disků, RAID 6 je ideálním a efektivním řešením které zároveň zlepší výkon při čtení a zápisu.

Problémy s RAID kompatibilitou

RAID bohužel nemá oficiální standardy, proto ať už je RAID realizován programem či fyzickým řadičem, může nastat problém. Když nám odejde zařízení, ve kterém máme usazené diskové pole, nejspíše bude nutné zakoupit to stejné zařízení, nebo alespoň zařízení od stejného výrobce, abychom mohli disky provozovat dále. Podobně to platí i pro RAID řízený programem.

Při nastavení RAID je tedy nutné mít na mysli, zda nám nemůže selhat i dané zařízení spravující disky (například domácí NAS). V domácím prostředí tedy bývá rozumné použít jednoduché RAID 1, které provádí pouze prachsprosté zrcadlení. Díky tomu budeme moci disky kdykoliv z RAID pole vyjmou a používat i “normálně” (většinou). Pokud použijeme například RAID 5, budeme mít sice parádní výkon a efektivní zálohu v případě výpadku disku, nicméně pokud nám selže zařízení, ve které disky máme, můžeme zažít bolehlav, pokud budeme potřebovat data z disků získat zpět.

Je dobré mít záložní disky, nicméně kvůli neexistujícím standardům pro RAID je nutné mít na mysli, že dané disky mohou potencionálně číst pouze vybraná zařízení či programy. Někdy je lepší RAID vůbec nepoužívat a ušetřit si trable.

RAID v domácnosti a NAS

RAID není pouze pro gigantická datacentra a nadnárodní technologické společnosti. Pole disků si můžeme zprovoznit i doma, a to velmi snadno a v mnoha podobách.

Na webu lze najít řadu programů, které nám přímo v počítači implementují softwarový RAID. Pokud disponujeme více disky v našem počítači, můžeme mezi nimi udělat například RAID 1 zrcadlení pro bezpečnou a automatickou zálohu dokumentů, fotek nebo práce.

Pokročilejší forma RAIDu může být ve formě domácího NAS. Jedná se o malý počítač speciálně postavený pro hostování harddisků v domácnosti. Většinou tyto NAS nabízí možnost nastavit nějaký RAID. Typicky u dvou disků bývá k dispozici RAID 0 nebo RAID 1 a u třech a více disků i RAID 5 a RAID 6. Tyto domácí NAS běží jako nezávislé zařízení v naší domácí síti a my se na něj můžeme napojit jako na další síťový disk přes počítač. Často lze i nastavit uživatele, jaká mají práva a kolik paměti mohou využít. Úsporné NAS jsou zároveň šetrné na elektrický účet a tím pádem i peněženku, a to i za předpokladu non-stop běhu.

Home NAS.png

Domácí NAS v akci

Úzká hrdla

I když máme ty nejrychlejší disky v super-výkonném RAID nastavení, můžeme být velice zklamáni a ani zdaleka nedocílit teoretické rychlosti, které jsme očekávali. Co za to může? Typicky mimo jiné následující problémy:

  • Sběrnice
  • Jeden z disků je pomalý
  • Síť

Na sběrnici se můžeme amatérsky dívat jako na to, co propojuje disky. Pokud máme pomalou sběrnici jako úzké hrdlo, disky bohužel nebudou schopny poskytnout rychlé čtení ani zápis i když jej teoreticky jsou schopné vyprodukovat.

Pokud máme v našem diskovém poli různé druhy disků a jeden z nich je o dost pomalejší, v některých konfiguracích to může zpomalovat celý RAID. Například pokud máme proužkovaný RAID 0, jeden pomalý disk znatelně vše zbrzdí. Nejjistější je mít v poli disky stejného typu.

Pokud nemáme RAID přímo u nás v počítači, s největší pravděpodobností se připojujeme na zařízení v lokální síti nebo dokonce přes internet (například s pomocí VPN). Pochopitelně, pokud něco v síti brzdí naše připojení, je nakonec jedno, jak rychle jsme náš RAID nastavili. Je nutné mít na mysli, jak se k datům připojujeme (kabel, Wifi) a co je mezi námi a daty (routery, sítě, poskytovatelé internetu, …)

RAID bottleneck.png

Znázornění, jak špatné připojení přes Wifi zpomaluje čtení

RAID je výborný nástroj pro vylepšení výkonu a ošetření proti výpadku disků. RAIDy jsou vhodné jak na tradiční zálohování, tak i zrychlení čtení a zápisu. RAID zejména najdeme v datových centrech a serverovnách, nicméně RAID má i své domácí využití, nejčastěji v podobně NAS (chytrého domácího úložiště). Bohužel, kvůli nepřítomnosti unifikujících standardů musíme myslet i na situaci, kdy selže softwarový nebo hardwarový řadič.

 
Ing. Martin Drozdík 07. 01. 2023