RAID

RAID alebo redundant array of independent disks (doslova redundantné (nadbytočné) pole nezávislých diskov) je súhrnný termín označujúci rôzne schémy ukladania dát používajúce viacero diskov na rozdeľovanie alebo replikáciu dát medzi jednotlivými diskami. (Niekedy sa používa namiesto slova independent pojem inexpensive, t. j. nenákladný, lacný.) Jednotlivé typy polí dosahujú v závislosti od konfigurácie rôznu úroveň zabezpečenia dát pred chybami a stratou spôsobenou zlyhaním hardwaru a rôzne veľké zvýšenie výkonu (dátovej priepustnosti) pri diskových operáciách vo vzťahu k počtu diskov, potrebe špecializovaných radičov polí a tým aj cene riešenia.

Úrovne (Levels) systému RAID

Štandardné typy diskových polí (Standard RAID Levels)

RAID 0 
RAID 0 (Striped Set = prekladaná sada) rozdeľuje bloky dát súmerne medzi dva alebo viac diskov bez informácie o parite. Používa sa zvyčajne na zvýšenie výkonu, hoci môže byť použitá na vytvorenie malého počtu veľkých virtuálnych diskov. Výsledná pridaná kapacita je limitovaná najmenším diskom, teda napr. pri použití 160 a 100 GB disku je výsledná kapacita iba 2 x 100 GB = 200 GB (nie 100 + 160 GB). Všeobecne je celková kapacita RAID 0 vyjadrená vzťahom SRAID0 = n × min(S1,S2, ...Sn), kde SRAID0 je kapacita poľa, n počet diskov a S1, S2 až Sn kapacity jednotlivých diskov.

Zvýšenie výkonu (teoreticky n-násobné, pričom n je počet diskov v poli) je citeľné pri zápise a čítaní veľkých súborov. Pri práci s veľkým počtom malých súborov je výkon poľa značne degradovaný väčšou prístupovou dobou, keďže disky musia zakaždým vyhľadávať súvisiace bloky na jednotlivých diskoch. Ak je veľkosť súborov, s ktorými sa pracuje, menšia než veľkosť stripu, nárast výkonu RAID 0 oproti jedinému disku je nulový. (Strip = reťaz blokov cez disky naprieč celým poľom, na obr. vpravo tvoria strip bloky A1 a A2, bloky A3-A4 tvoria iný strip etc.)

Zlyhanie jediného disku v poli RAID 0 má za následok stratu všetkých dát uložených v celom poli. Úroveň zabezpečenia dát pred stratou je preto nižšia v porovnaní so samostatným diskom a znižuje sa približne nepriamo úmerne s rastúcim počtom jednotiek v poli: MTBFRAID0 ≈ MTBFdisk / n (MTBF = Mean Time Between Failures, tiež MTTF = Mean Time To Failure – stredná doba do výskytu kritickej chyby; očakávaná životnosť; n je počet diskov).

RAID 1 
RAID 1 (Mirrored Set = zrkadlená sada) vytvára identickú kópiu dát na dvoch alebo viacerých diskoch. To je výhodné, ak redundancia má prednosť pred využitím maximálnej možnej kapacity – toto pole pri postupnom zlyhávaní diskov pracuje, kým funguje posledný z nich (samozrejme, výkon sa zníži). Pravdepodobnosť zlyhania celého poľa je súčinom pravdepodobností zlyhania jednotlivých diskov (za predpokladu štatistickej nezávislosti zlyhaní): pRAID1 = p1 × p2 ×… × pn, kde n je celkový počet diskov. Napríklad v poli RAID 1 s dvoma diskami, každý s p = 0,001 (desatina %) je pravdepodobnosť zlyhania celej sústavy 0,0012 = 10−6. Tento teoretický predpoklad však treba v praxi brať s rezervou, ani redundancia nechráni dáta úplne. Disky pochádzajúce z jednej výrobnej série môžu trpieť tou istou výrobnou chybou a zlyhať prakticky súčasne; celé diskové pole môže tiež byť vyradené vplyvom vonkajších okolností – skrat v napájacom zdroji, prepätie a pod., takže nemusí byť úplne splnená štatistická nezávislosť zlyhaní jednotlivých diskov. 

Kapacita tohto riešenia je rovná kapacite najmenšieho disku.

Výkon je závislý od korektnej implementácie – v optimálnom prípade sa pri čítaní takmer znásobuje počtom diskov v poli, pretože rôzne časti jedného súboru sa čítajú z viacerých diskov súčasne a nezávislý seek diskov znižuje prístupovú dobu. V praxi sa však stáva, že starší alebo low-endový radič nedokáže pristupovať k diskom nezávisle a znižuje priepustnosť poľa na úroveň samostatného disku. Navyše nutnosť preskakovať medzi blokmi s fragmentmi súborov potláča aj výhodu rýchleho sekvenčného čítania. Pri zápise zostáva výkon nepatrne pod úrovňou samostatného disku, keďže objem zapisovaných dát sa znásobuje kvôli zápisu na všetky disky v poli a zlomok výkonu uberie aj réžia tohto procesu.

Pole RAID 1 disponuje niektorými administratívnymi výhodami. V niektorých systémoch je možné napr. odpojiť z neho jeden disk (označiť ako neaktívny) a vykonať jeho zálohovanie, následne sa disk opäť pripojí a vykoná sa rebuild poľa. Toto je osožné v systémoch, ktoré musia byť stále v chode a ich súbory vždy dostupné (pričom počas zálohovania sa nesmie na disk/pole zapisovať, aby bola zaručená konzistentnosť dát).

RAID 2 
RAID 2 rozdeľuje dáta na bitovej úrovni na tri alebo viac diskov, s použitím Hammingovho kódu na opravu chýb. Rotácia diskov je synchronizovaná a dáta sú ukladané tak, aby každý sekvenčný bit bol na inom disku. Parita, s použitím Hammingovho kódu, sa počíta z príslušných bitov a ukladá sa aspoň na jeden disk, vyhradený pre paritu. Disky sú synchronizované radičom.
Tento typ RAID poľa sa v praxi nepoužíva.

RAID 3 
RAID 3 rozdeľuje dáta na bajtovej úrovni s vyhradeným (dedikovaným) diskom na paritu. Rotácia diskov je synchronizovaná a dáta sú ukladané tak, aby každý sekvenčný bajt bol uložený na inom disku. Dáta parity sú počítané z príslušných bajtov a sú uložené na samostatnom disku, vyhradenom len pre paritu. Minimálny počet diskov je 3. Parita je vypočítavaná pomocou logickej funkcie XOR.
Aj keď implementácia RAID 3 existuje, v praxi sa bežne nepoužíva.

RAID 4 
RAID 4 (Striped Set With Dedicated Parity) používa rozdeľovanie dát na blokovej úrovni s vyhradeným diskom na paritu. Je to podobné riešenie ako RAID 3 s tým rozdielom, že disky môžu pracovať samostatne, ak je vyžadovaný iba jeden blok. Je to dané faktom, že prekladanie dát sa deje na úrovni blokov, nie bajtov ako pri RAID 3. Ak to podporuje diskový radič, RAID 4 môže spracúvať viaceré požiadavky na čítanie súčasne. Rozdiel oproti RAID 5 spočíva v použití dedikovaného disku na ukladanie paritných blokov, kým v prípade RAID 5 sa všetky bloky (dátové aj paritné) rozdeľujú medzi všetky disky (distribuovaná parita). Dedikovaný disk s paritnými blokmi predstavuje najmä pri väčšom počte diskov v poli úzke hrdlo tohto riešenia – zápis na každý z dátových diskov si vyžaduje zápis na paritný disk; tiež pri rekonštrukcii dát po zlyhaní niektorého dátového disku je potrebné neustále čítať paritu súčasne s každým blokom z každého dátového disku. Preto je RAID 5 o niečo výkonnejší a preferovanejší typ diskového poľa. V prípade poruchy paritného disku sa pole správa ako RAID 0, v tomto jedinom prípade je jeho výkon vyšší, než výkon RAID 5. Pole typu RAID 4 sa nepoužíva často a väčšina nových radičov (v domácej aj podnikovej sfére) ho dokonca nepodporuje a miesto neho je rozšírenejšie pole typu RAID 5.

RAID 5 
RAID 5 (Striped Set With Distributed Parity) používa rozdeľovanie dát na blokovej úrovni s paritou na každom disku. Takéto rozdeľovanie dát eliminuje úzke hrdlo RAID 4 tvorené preťažovaným paritným diskom. Je to jedno z najpopulárnejších RAID riešení a je často používané.

Na vytvorenie poľa RAID 5 sú potrebné najmenej 3 fyzické disky. Jeho využiteľná kapacita je daná vzťahom SRAID5 = (n-1) × Smin, kde Smin je veľkosť najmenšieho z diskov a n počet diskov. Využiteľnosť kapacity diskov aj úroveň bezpečnosti dát sa dajú škálovať zmenou počtu diskov v poli. Maximálny počet diskov v RAID 5 je teoreticky neobmedzený, v praxi však ich vysoký počet znamená vyššiu pravdepodobnosť simultánneho zlyhania dvoch a viacerých jednotiek (MTBF poľa môže dokonca klesnúť hlboko pod úroveň MTBF samostatného disku), príliš veľké časové nároky na rebuild poľa a väčšiu možnosť výskytu neopraviteľného sektoru počas rebuildu. Vo všeobecnosti ak pravdepodovnosti zlyhania jednotlivých diskov sú p1, p2, p3... pn (v istom zmysle, napr. pravdepodobnosť zlyhania počas prvého roku), tak pravdepodobnosť (v tom istom zmysle, teda pravdepodobnosť zlyhania počas prvého roku) že zlyhá aspoň jeden disk v poli je daná vzťahom 1 – (1-p1) × (1-p2) × (1-p3) ×...× (1-pn) a ide o úplný doplnok k pravdepodobnosti, že nezlyhá ani jeden disk. Teda prakticky ide o pravdepodobnosť, že zlyhá ľubovoľný jeden disk, ľubovoľná dvojica, ľubovoľná trojica... až celá n-tica diskov. Napr. ak sú jednotlivé pravdepodobnosti zlyhania jednotlivých diskov 2 %, 5 %, 1 % a 3%, tak pravdopodobnosť zlyhania (v tom istom zmysle ako pre jednotlivé disky) aspoň jedného disku je 1-(1 – 0,02)×(1 – 0,05)×(1 – 0,01)×(1 – 0,03) = 0,1059607, teda cca 10,6 %. Napr. pri dvoch hypotetickcýh diskoch s vysokou kazivosťou až napr. 50 % to je 1-(1 – 0,5)×(1 – 0,5) = 0,75, teda 75 %. Pri dvoch diskoch s kazivosťou počas prvého roka 50% je až 75% pravdepodobnosť, že sa počas prvého roka pokazí aspoň jeden z nich.

Pri zlyhaní ktoréhokoľvek z diskov si toto pole zachováva funkčnosť za cenu zníženého výkonu – chýbajúce bloky dát sú priebežne (on the fly) dopočítavané z dátových a paritných blokov zvyšných diskov. Na aplikačnej úrovni sa výpadok jedného disku takmer neprejaví. RAID 5 radič s udalosťou "oboznámi" operačný systém, ktorý vyzve administrátora na výmenu zlyhaného disku. Po výmene nastáva rebuild poľa – z dátových a paritných blokov funkčných diskov sa dopočítajú chýbajúce bloky na vymenenej jednotke. V časovom intervale medzi poruchou a dokončením rebuildu (Interim Data Recovery Mode) je RAID 5 vystavené zvýšenému riziku celkovej straty dát v prípade poruchy jedného zo zvyšných diskov, keďže pri zlyhaní dvoch alebo viacerých diskov naraz v RAID 5, dochádza k strate všetkých dát. Hneď ako sa však pole RAID 5 úplne rebuilduje, opäť sa stáva rezistentné na výpadok ktoréhokoľvek jedného disku. Zvýšiť rezistenciu možno využívaním tzv. spare diskov, t. j. diskov v akomsi pohotovostnom režime. Spare disk nie je zaradený do poľa (nemusí ísť len o RAID 5), ale čaká fyzicky vložený do šachty na serveri (ako každý iný disk v poli vložený do diskovej šachty servera), kým sa v poli nejaký disk pokazí. Spare disk je dovtedy nečinný a väčšina moderných RAID radičov spare disky podporuje. V okamihu pokazenia disku z poľa si RAID radič (nakonfigurovaný so spare diskom) automaticky siahne po spare disk a zaradí ho do poľa. Ide v podstate o automatizovaný zásobník diskov. Podľa možnosti RAID radiča, spare disk nemusí byť iba jeden. Následne napr. pole RAID 5 + spare je rezistentné na výpadok dvoch diskov, ale nie ako v prípade RAID 6, kde to môžu byť dva úplne ľubovoľné disky z poľa (a hoci aj naraz). Pri RAID 5 + spare nemôžu vypadnúť oba disky z poľa. Pri RAID 5 + spare môžu vypadnúť (hoci aj naraz) dva disky, ale z toho jeden je z poľa a jeden je spare disk. Prakticky je v drvivej väčšine prípadov táto postupnosť sekvenčná: pokazí sa jeden disk zaradený v poli RAID 5 + spare (ale nie spare disk, keďže ten je nečinný), radič siahne po spare disku a zaradí ho do poľa a keďže spare disk sa práve minul, dostávame obyčajný RAID 5, ktorý je rezistentný opať na výpadok jedného disku v poli.

Rýchlosť čítania z RAID 5 sa takmer vyrovná rýchlosti RAID 0, malý rozdiel je spôsobený nutnosťou preskakovať paritné bloky rozmiestnené medzi dátovými, keďže čítať paritu za normálnej prevádzky nie je potrebné. Nevýhodou riešenia je pomalý zápis. Ide totiž o komplikovaný proces, pri ktorom dochádza najprv k prečítaniu starých dát zo stripu (strip = postupnosť súvisiacich blokov na rôznych diskoch naprieč poľom), výpočet a zápis novej parity a nakoniec zápis nových dát na strip. Proces je náročný na diskové operácie a spôsobuje veľké toky dát medzi diskami a radičom. Obzvlášť markantný pokles výkonu nastane v prípade, že je bežná implementácia RAID 5 vystavená záťaži zahrňajúcej množstvo zápisov objemov dát menších, než je kapacita jedného stripu. Komplexnejšie implementácie zahŕňajú nevolatilnú vyrovnávaciu pamäť (write-back cache), ktorá redukuje tento nepriaznivý jav.

V prípade, že nie je použitý špecializovaný radič RAID 5 s hardwarovou podporou paritných výpočtov, dochádza k zaťaženiu procesora (software RAID). Iný problém predstavuje tzv. write hole, jav, ktorý nastane, ak dôjde v momente zápisu k pádu systému a konzistentnosť parity stripu s dátami sa naruší. Ak toto nie je správne detegované a opravené skôr, než dôjde k zlyhaniu disku alebo bloku, po výmene chybného disku dôjde k nekorektnej obnove príslušného dátového bloku z nesprávnej parity a dáta v tomto bloku budú stratené. Túto hrozbu sa snažia eliminovať technológie ako záložné napájanie cache a RAID Z.

RAID 6 
RAID 6 (Striped Set With Dual Distributed Parity) používa rozdeľovanie na blokovej úrovni, podobne ako RAID 5, a rozširuje ho o ďalší blok s paritou. Používa teda dva bloky s paritou na každom disku.

RAID 6 sa skladá najmenej zo štyroch fyzických diskov. Využiteľná kapacita poľa je určená vzťahom: SRAID6 = (n-2) × Smin, kde Smin je veľkosť najmenšieho z diskov a n počet diskov. V minimálnej konfigurácií štyroch diskov sa však s ohľadom na výslednú kapacitu pole RAID 6 nepoužíva, keďže kapacita poľa je maximálne polovičná, teda rovnaká ako v konfigurácií zrkadlenia (RAID 1) dvoch párov diskov. Pri zrkadlení navyše nie treba počítať dve sady paritných informací, je teda oveľa rýchlejšie pri zápise a nepotrebuje vysoký výpočtový výkon. RAID 6 je teda výhodné použiť na päť a viac diskov.

Výhodou je vyššia odolnosť voči zlyhaniu jednotlivých diskov (v poli RAID 6 môžu zlyhať až dva ľubovoľné disky), nevýhodou v porovnaní s RAID 5 ešte nákladnejšia réžia v zmysle poklesu výkonu pri operáciách zápisu, keďže sa musia počítať a zapisovať až dva sady paritných informácií. Väčšina radičov podporujúcich RAID 5, podporuje aj pole typu RAID 6.

Zložené typy diskových polí (Nested RAID Levels) 
Štandardné typy diskových polí je možné rôznymi spôsobmi kombinovať a škálovať tak ich vlastnosti, zvyčajne za cenu vyššieho najmenšieho počtu potrebných diskov, než predstavuje minimum potrebné na konštituovanie RAID 0 až 6. Obvyklé kombinácie sú RAID 0+1, 1+0, 5+0, 5+1, 6+0, 3+0, 10+0 a pod. Niektoré zdroje uvádzajú ich označenia bez znaku "+", t. j. RAID 10, 50, 51, 60, 100 atd. Výnimkou je označenie 0+1, kvôli vylúčeniu zámeny názvu RAID 01 s RAID 1.

Ako napovedá názov, RAID 0+1 v najjednoduchšej verzii pozostáva zo štyroch fyzických diskov, z ktorých sú vytvorené dva stripped páry RAID 0 a tieto následne zrkadlené v RAID 1. V prípade RAID 1+0 (RAID 10) je to naopak: dve zrkadlené sady sú následne prekladané (stripped). Obidve riešenia majú podobné vlastnosti: vyššiu priepustnosť, polovičnú celkovú kapacitu oproti súčtu kapacít samostatných (standalone) diskov redukovaných na veľkosť najmenšieho disku. Miera bezpečnosti dát sa však líši. V prípade poruchy ktoréhokoľvek disku (ak uvažujeme o 4-diskovom riešení) tieto polia nestrácajú funkčnosť, ak následne dôjde k poruche druhého disku, RAID 1+0 má pravdepodobnosť zachovania funkčnosti 2:3 (z 3 funkčných diskov porucha jedného z dvoch nie je kritická, porucha tretieho vyradí pole), kým "šanca na prežitie" RAID 0+1 je len polovičná – 1:3. Navyše, v RAID 1+0 je potrebný zápis len na jeden disk v prípade rebuildu poľa po páde jedného fyzického zariadenia, kým v RAID 0+1 je nutné obnoviť všetky (minimálne 2) disky v celom stripped sete. Z týchto dôvodov je všeobecne viac preferovaná konfigurácia diskov 1+0. 

Podobne spôsob, akým sú kombinované ostatné typy štandardných polí, určuje vlastnosti výsledných zložených polí. Väčšina RAID radičov podporuje polia typu RAID 0+1 alebo RAID 1+0, ale už nie (najmä radiče pre domáce použitie) napr. typy RAID 5+0, 5+1, 6+0, ktoré nie sú príliš rozšírené. Pre polia RAID 5+0 a 5+1 je potrebných aspoň šesť diskov a následne trojnásobky (t. j. 6,9,12,15...) ak každé RAID 5 podpole obsahuje tri disky, aspoň osem diskov a následne štvornásobky (t. j. 8,12,16,20...) ak každé RAID 5 podpole obsahuje štyri disky atď. Pre pole typu RAID6+0  je potrebných aspoň osem diskov a následne štvornásobky (t. j. 8,12,16,20...) ak každé RAID 6 podpole obsahuje štyri disky, aspoň desať diskov a následne päťnásobky (t. j. 10,15,20,25...) ak každé RAID 6 podpole obsahuje päť diskov atď. Ale pre minimálnu konfiguráciu osem diskov je namiesto zloženého poľa RAID6+0 výhodnejšie použiť RAID10+0.

Princíp tvorby diskových polí umožňuje kombinovať aj samotné zložené polia. Napr. RAID 10+0 (RAID Level 100) pozostáva najmenej z 8 fyzických diskov, z ktorých sú vytvorené zrkadlené dvojice, tieto následne prekladané (dve a dve dvojice) a vzniknuté RAID 10 polia ešte raz prekladané (stripped).

Neštandardné typy diskových polí (Non-Standard RAID Levels) 
Niektoré neštandardné typy diskových polí môžu byť proprietárne.

MATRIX RAID 
Matrix Raid (Intel Matrix Storage Technology) kombinuje polia RAID 0 a RAID 1 na dvoch fyzických jednotkách. Každý z diskov sa rovnakým spôsobom rozčlení na partície, pričom jednotlivé (rovnaké) páry partícií na rôznych diskoch sa kombinujú do príslušných typov polí. Súbory, ktoré vyžadujú vyššiu ochranu a/alebo majú malú veľkosť, sú podľa uváženia užívateľa uložené v RAID 1 oblasti. Tie, ktoré zaťažujú systém veľkými dátovými tokmi (editované HD video a pod.), môžu využiť oblasť RAID 0. Ide o úsporné riešenie, prvýkrát podporované southbridge chipsetom Intel ICH-6R, ktoré umožňuje vytvoriť odlišné typy polí na jedinom páre fyzických diskov, bez nutnosti obstarania dodatočných diskových jednotiek. Niekedy sa nesprávne označuje ako RAID 10, pričom RAID 10 (tiež RAID 1+0) je odlišný typ zloženého poľa využívajúci najmenej 4 fyzické disky (pozri vyššie).

JBOD (SPAN) 
JBOD ("Just a Bunch of Disks" = doslovne "len taký zhluk diskov"; tiež SPAN). Nepríliš rozšírené zapojenie dvoch a viacerých diskov, vytvára jeden virtuálny disk, ktorého kapacita je určená súčtom kapacit fyzických diskov. Dátové bloky sú ukladané postupne, za posledným blokom predchádzajúceho disku nasleduje prvý blok ďalšieho.

JBOD nenesie žiadne informácie o parite. Nejde o diskové pole v pravom zmysle, nevzniká pri ňom redundancia dát ani nedochádza k zvýšeniu výkonu. Pri zlyhaní jedného z diskov sa naruší konzistencia celého súborového systému, ktorý je rozprestrený cez celý konglomerát diskov. JBOD vytvára väčšiu logickú jednotku z menších fyzických diskov, preto je možné interpretovať ho ako opak partitioningu, pri ktorom sa jeden fyzický disk rozdelí na menšie logické jednotky (oddiely, partície).

Pevné disky