Nahoru
 

RAID

Za rohem na nás kdykoliv může čekat selhání disku a nenadálá ztráta důležitých dat. Abychom nemuseli soubory neustále ručně kopírovat z disku na disk a abychom při tom i využili benefitu většího množství HDD/SSD, vznikl pro nás RAID.

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čí verze RAIDu. Mezi nejpoužívanější verze patří RAID 0, RAID 1, RAID 5, RAID 6. RAIDy můžeme i kombinovat, například RAID 01 (spojení RAID 0 a RAID 1).

RAID není tak úplně na zálohování jako na ochranu proti výpadku disku. 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 1 zase dokáže dělat duplicity a RAID 0 dokonce žádná data chránit neumí (je však velmi užitečný pro rychlé čtení, zápis a kombinování RAIDů).

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 s kompatibilitou.

Disky v RAIDu musí být spojené sběrnicí. V určitých situacích se tato sběrnice může stát úzkým hrdlem při komunikaci (tedy brzdícím článkem). Je proto potřeba tvorbu RAIDu důkladně promyslet a nekoupit hromadu bleskurychlých disků na jednu malou a pomalou sběrnici.

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.

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“). Spočívá v tom, že disky umístíme jakoby za sebe.

RAID 0 (zřetězený)
Znázornění RAID 0 (zřetězený)

RAID 0 v „proužkovacím“ módu je daleko efektivnější, a proto se používá daleko více nežli zřetězení. Data se při zapisování dělí na malé bloky a místo toho, aby se na jeden disk psali „od shora dolů“, zapisují se po discích „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 (proužkovaný)
Obrázek č. 2: Znázornění 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

RAID 1

RAID 1 dokáže kopírovat disky. Principiálně není nijak složitý. RAIDu stačí nastavit, jaký disk kopírovat a kolik disků obětovat na uchování kopie. V praxi se běžně používá jeden originál a jedna kopie (pár). Více není moc statisticky výhodné.

RAID 1 (páry kopií)
Obrázek č. 3: Znázornění RAID 1 (páry kopií)

Tím, že máme více kopií, můžeme k čtení využít více disků, avšak může se nám zpomalit zápis, pokud používáme malou sběrnici.

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 – zapisujeme ale originál i jeho duplicity, proto musíme mít dostatečně prostupný řadič

RAID 10

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

RAID 10 (proužkované kopie)
Obrázek č. 4: Znázornění 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

RAID 2

RAID 2 nepatří mezi používané. RAID 2 je proužkován po jednotlivých bitech a kód zabezpečuje tzv. Hammingův kód (lineární kód schopný detekce dvou chybných bitů a opravy jednoho chybného bitu).

RAID 3

RAID 3 je proužkován, tentokrát však po bytech. RAID 3 vymezí jeden z disků jako paritní. Parita funguje tak, že na celý jeden proužek je aplikována operace XOR.

Vzhledem k tomu, že se pohybujeme ve dvojkové soustavě, je operace XOR ekvivalentní k prostému součtu bitů. Operace XOR je inverzní (tedy dvojnásobný XOR 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 XORovat. Paritní disk se tedy stává úzkým hrdlem našeho RAIDu.

RAID 3 (disky + jeden paritní disk)
Obrázek č. 5: Znázornění RAID 3 (disky + jeden paritní disk)
Znázornění obnovy jednoho disku v RAID 3
Obrázek č. 6: Znázornění obnovy jednoho disku v RAID 3

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ý. Funguje na stejném principu jako RAID 4, akorát nevyčleňuje jeden paritní disk, ale paritu ukládá střídavě mezi jednotlivými disky. Tím docílí zrušení úzkého hrdla.

Znázornění RAID 5
Obrázek č. 7: Znázornění 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)

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)

RAID je výborný nástroj pro vylepšení výkonu a ošetření proti výpadku disků. Bohužel, kvůli nepřítomnosti unifikujících standardů musíme myslet i na situaci, kdy selže softwarový nebo hardwarový řadič. Není příliš vhodný na tradiční zálohování, ale extrémně užitečný například pro servery nebo masivní datová úložiště. Své domácí využití však má taktéž, nejčastěji v podobně NAS (chytrého datového úložiště).