Ariile de discuri

1. Noțiuni introductive

Încă de la primele calculatoare suportul de memorare a informației a fost o preocupare permanentă. Calitățile și performanțele acestuia au constituit adesea criteriu de judecată cu pondere importantă atât pentru lumea specialiștilor, cât și pentru cumpărătorii (avizați) de tehnică de calcul. Progresul uluitor din lumea calculatoarelor este de fapt progresul tuturor elementelor de bază ale acestei lumi. Iar hard discurile constituie astăzi un element de referință al domeniului. Articolul acesta prezintă un aspect al progresului în acest domeniu, acela realizat prin ariile de discuri.

Una dintre metodele prin care datele sistemelor de calcul pot fi accesate mai repede este aceea prin care se renunță la varianta „single disk“ în favoarea „multi-spidle volume“, adică a utilizării a mai multor discuri aflate pe aceeași „axă“. Această tehnică permite accesarea simultană a datelor cu ajutorul a două (sau mai multor) brațe de citire /scriere, teoretic micșorând timpul de acces. Partiția sistem rezultată este folosită de aplicație ca și cum ar fi o singură partiție logică. De fapt, în mod fizic, partiția sistem este împărțită pe discurile fizice existente, dar acest lucru este transparent oricărei aplicații. Această tehnică a dus la creșterea performanțelor intrărilor/ieșirilor, dar are dezavantajul că dacă un disc, care este folosit pentru a crea un volum virtual, „cade“ întreaga informație de pe acest volum virtual se pierde.

Pentru a depăși inconvenientele descrise mai sus a fost dezvoltat conceptul RAID. Termenul de RAID (Redundant Array of Inexpensive Disks) a fost folosit pentru prima dată la începutul anilor '80 de către F.D. Lawlor, dar el a fost popularizat cu adevărat de către un grup de oameni de știință, format din David A. Patterson, Garth Gibson și Randy H. Katz, toți de la Universitatea Berkeley din California, care au publicat un articol intitulat „A case for Redundant Arrays of Inexpensive Disks (RAID)“, în care defineau cinci modele de arii de discuri, cunoscute ca RAID Levels 1-5. Conceptul RAID implică trei concepte ale stocării și recuperării datelor:
Zonarea discului;
Performanță ridicată;
Redundanța datelor.

Aceste trei componente sunt combinate în mai multe feluri pentru a forma diferitele nivele RAID. Nivelele RAID reprezintă toate arhitecturi de arii de discuri care memorează informație redundantă despre datele utilizatorilor și pot regenera aceste date în eventualitatea defectării unei singure unități de disc. Totuși, este important de înțeles că redundanța asupra datelor furnizată prin aceste RAID-uri este numai o parte a soluției totale de memorare tolerantă la defectări pe discuri.

RAID-urile asigură utilizatorului posibilitatea de a opta pentru soluții care pot varia foarte mult în gama raporturilor preț/performanță și din punctul de vedere al disponibilității. Astfel, spre exemplu, RAID 1 (cunoscut și sub denumirea de „oglindire“ („mirroring“)) furnizează cea mai ridicată performanță din punctul de vedere al redundanței datelor, dar cu costul cel mai ridicat, deoarece toate datele sunt duplicate, acest lucru necesitând de două ori mai mult spațiu pe disc. Nivelele 1- 5 asigură disponibilitatea continuă a datelor, chiar în eventualitatea defectării unei singure unități de disc, prin regenerarea datelor utile din datele redundante. Totuși, din cauza operațiilor de intrare/ieșire suplimentare, cerute pentru a regenera datele memorate pe unitatea de disc defectată, performanța este mai scăzută pe timpul operațiilor de restabilire.

2. Caracteristicile principale ale tipurilor de arii de discuri

2.1. RAID 0: DISK STRIPPING
RAID 0 nu este o arhitectură RAID propriu-zisă, deoarece ea nu asigură nici o redundanță a datelor. Ea este utilizată doar pentru a maximiza performanța la lucrul cu discurile hard. În această organizare de arii de discuri neredundante, datele sunt întrețesute (stripping) în mod secvențial pe mai multe discuri, care sunt tratate ca un singur disc virtual sau volum (de obicei 4 discuri = volum). Câteva implementări RAID 0 utilizează această tehnică de întrețesere, prin divizarea volumelor în „felii“ și scrierea datelor în „felii“ consecutive, localizate fizic pe fiecare disc din cadrul ariei de discuri. Mărimea uzuală a „feliilor“ este definită de utilizator și ar putea fi, de exemplu, de 512 sectoare, dimensiunea uzuală a sectoarelor putând fi, de exemplu, de 512 octeți. Operațiile de citire/scriere au loc în paralel, de pe/pe toate discurile aflate în volum. Utilizând această tehnică de întrețesere se obține o rată de transfer a datelor foarte ridicată, îmbunătățindu-se în felul acesta și performanța efectivă a sistemului. Totuși RAID 0, neoferind nici o redundanță a datelor, în eventualitatea defectării unui singur disc al ariei, datele care se găsesc pe acel disc nu mai pot fi regenerate și deci pot fi considerate ca pierdute. Pentru acest motiv RAID 0 nu este utilizat în aplicațiile de înaltă disponibilitate. O reprezentare a modului în care sunt distribuite blocurile de date într-o configurație RAID 0 este arătată în fig. „Repartiția blocurilor de date“.

2.2. RAID 1: DISK MIRRORING
Implementarea RAID 1 folosește „oglindirea (mirroring)“ datelor pentru a asigura redundanța. Tehnica crează și menține pe discuri separate, două sau mai multe copii ale acelorași date, fiecare dintre copii constituindu-se ca o imagine „în oglind㓠a celeilalte. Comparativ cu alte nivele de arii de discuri, RAID 1 poate scădea performanța generală a sistemului deoarece fiecare scriere pe disc trebuie să fie efectuată de „n“ ori unde „n“ este numărul de copii. Performanța în cazul citirii este însă mult îmbunătățită deoarece cererile de citire sunt trimise simultan controlerelor de discuri ale tuturor copiilor. Discul care este capabil să răspundă primul cererii de citire va returna datele sistemului. Sistemele de operare (în general de tip UNIX) ale sistemelor de calcul tolerante la defectări oferă însă un alt tip de RAID 1, prin intermediul unei componente software numit㠄Logical Volume Manager“. Această componentă crește performanța sistemului oferind posibilitatea scrierii în paralel pe toate copiile, fără a se mai aștepta ca scrierea pe o copie să se facă cu succes și apoi să se altereze conținutul altei copii. Comparativ cu scrierea secvențială, această metodă este mai puțin sigură, dar realizează o creștere semnificativă a performanței la scriere. Deoarece RAID 1 asigură redundanța datelor de 100%, ea este cea mai scumpă implementare dintre tipurile de arii de discuri, dar asigură și cea mai mare disponibilitate a datelor prin utilizarea celui mai mic număr de discuri în configurația. În fig. „Repartiția blocurilor de date“ este arătat modul cum sunt repartizate datele într-o configurație RAID 1.

2.3. RAID 2: PARALLEL ARRAY WITH ERROR CORECTION CODE RAID 2 distribuie datele pe mai multe discuri cu întrețesere la nivel de bit, iar în cadrul ariei de discuri sunt utilizate și discuri de „verificare“. Pentru a asigura detecția și corecția erorilor, scrierea și citirea datelor se face utilizând tehnici de codificare bazate pe coduri corectoare de erori de tip Hamming. Aceste tehnici fac însă necesară utilizarea unor grupuri mari de discuri pentru a asigura consistența (4 discuri de „verificare“ pentru 10 discuri de date, sau 5 discuri de „verificare“ pentru 25 de discuri de date). Un alt dezavantaj al lui RAID 2 este acela că pentru fiecare operație de intrare/ieșire trebuie să fie accesate toate discurile deoarece datele sunt scrise sau citite la o singură mișcare paralelă a tuturor capetelor de acces la discuri. Deoarece această tehnică de codificare este foarte complexă și mai scumpă, RAID 2 este mai puțin interesant pentru mediul comercial, în comparație cu RAID 3.

2.4. RAID 3: PARALLEL ARRAY WITH PARITY
Spre deosebire de RAID 2, RAID 3 utilizează un singur disc dedicat pentru a memora informația de paritate (nu cod corector de erori, ci .SAU EXCLUSIV. asupra datelor), celelalte discuri din cadrul ariei de discuri fiind utilizate pentru a memora informația utilă, care, ca și la RAID 2, este „împrăștiat㓠pe toate discurile ariei. Dacă unul dintre discurile cu date se defectează, se poate utiliza discul de paritate pentru a reconstitui datele. Dat fiind faptul că transferul datelor de pe/pe un disc individual se face la dimensiunile unor sectoare unitare, cantitatea minimă de date care este citită/scrisă într-o operație de intrare/ieșire este egală cu numărul de discuri din arie înmulțit cu numărul de octeți ai sectorului discului. Aceasta este cunoscută ca unitate de transfer. Deoarece capetele de acces se mișcă în paralel în aria de discuri la un moment de timp dat, poate fi activă numai o singură cerere de intrare/ieșire. Acest lucru contribuie la o foarte bună rată de transfer a datelor atunci când datele accesate sunt dispuse secvențial pe disc, dar face ca RAID 3 să fie destul de nepractic pentru aplicații cu date dispuse aleator în aria de discuri. În același timp, rata de transfer a datelor este foarte bună atunci când dimensiunile blocurilor de date care se scriu sau citesc sunt apropiate de mărimea unității de transfer, dar ea scade cu atât mai mult cu cât blocurile transferate sunt de dimensiuni mai mici. Spre deosebire de RAID 1 care datorită redundanței de 100% ocupa o suprafață mare de discul hard, cu o redundanță de numai 20% RAID 3 asigură o relativ bună disponibilitate a datelor și este mult mai economic. Deoarece datele pot fi reconstituite, în cazul defectării unui singur disc, prin utilizarea discului de paritate, RAID 3 oferă și facilitatea înlocuirii „la cald“ a unui disc și restabilirea datelor după defectare. În fig. „Repartiția blocurilor de date“ este prezentat modul în care sunt repartizate blocurile de date și de paritate într-o configurație RAID 3.

2.5. RAID 4: STRIPED ARRAY WITH PARITY
La RAID 4 datele se distribuie, ca la RAID 3, pe mai multe discuri de date și pe un disc de „paritate“. Doar că în acest caz datele sunt scrise fiecare bloc pe un singur disc, astfel încât la operația de citire este implicat doar un singur disc. Deoarece discurile nu se mai utilizează în paralel, aria de discuri poate prelucra mai multe cereri deodată. Cerințele mai mici pot fi executate astfel mai repede. Deoarece discul de paritate este implicat însă în toate operațiile de scriere, el devine un element de scădere a performanței, deoarece paritatea, pentru fiecare operație de scriere, se calculează având în vedere și informația existentă pe celelalte discuri, în sectoarele de date asociate. Din acest motiv RAID 4 este considerat ca nepractic. În fig. „Repartiția blocurilor de date“ este prezentat modul în care sunt repartizate blocurile de date și de paritate într-o configurație RAID 4.

2.6. RAID 5: STRIPED ARRAY WITH DISTRIBUTED PARITY
La RAID 5 datele se distribuie, ca la RAID 4, pe mai multe discuri de date și pe un disc de „paritate“, iar datele sunt scrise fiecare bloc pe un singur disc, astfel încât la operația de citire este implicat doar un singur disc. Însă RAID 5 nu are dedicat un disc special numai pentru informația de paritate ci distribuie pe toate discurile ariei informația de tip date și informația de paritate. Și în cazul lui RAID 5 sunt permise accese concurente multiple la dispozitivele din cadrul ariei de discuri, fiind satisfăcute astfel cereri concurente multiple de intrare/ieșire. Acest lucru crește mult performanța transferurilor pentru aceste arii de discuri și le face cele mai potrivite și utile în cazul lucrului cu blocuri de mărime mică, sau cu datele dispuse în mod aleator pe discuri. În cazul lui RAID 5 ciclul de scriere se realizează în 3 pași:
Pasul 1: Se citește paritatea existentă și data ce urmează a fi schimbată;
Pasul 2: Se scade vechea dată din valoarea parității existente și se memorează această paritate corectată într-un buffer;
Pasul 3: Se calculează noua paritate pe baza valorii din buffer și a valorii noii date de memorat și se scriu pe discurile corespunzătoare noua dată și paritatea actualizată.
În fig. „Repartiția blocurilor de date“ este prezentat modul în care sunt repartizate blocurile de date și de paritate într-o configurație RAID 5.

2.7. CRITERII DE ALEGERE A UNEI CONFIGURAȚII RAID
Alegerea uneia dintre configurațiile RAID este direct dependentă de cerințele funcționale ale sistemului din care aria de discuri va face parte. Dacă în cadrul sistemului se urmărește realizarea unei mari disponibilități a datelor se vor utiliza RAID 1, RAID 3, sau RAID 5. RAID 3 este cel mai potrivit pentru acele aplicații care utilizează blocuri mari de date, sau transfer secvențial de date. RAID 5 este cel mai potrivit pentru acele aplicații care utilizează blocuri mai mici de date și care nu efectuează un număr mare de scrieri pe disc (restricție datorată algoritmului de calcul a parității). Acolo unde se dorește cea mai mare siguranță a datelor se va utiliza RAID 1, acceptându-se însă și costuri mult mai mari. Dacă nu există cerințe de înaltă disponibilitate se poate utiliza RAID 0 sau chiar discuri independente înlănțuite. O schemă logică care ar putea fi utilă este prezentată în fig. „Schema logică de alegere a unei configurații RAID“.

3. Configurații și performanțe ale ariilor de discuri.

3.1. NOȚIUNI INTRODUCTIVE
Toleranța la defectări de la nivelul suportului de memorare este numai unul dintre aspectele care au făcut ca subsistemele RAID să devină tot mai atractive în anii din urmă. Multe alte caracteristici ale subsistemelor RAID asigură ele însele redundanță, fiind argumente în plus în utilizarea ariilor de discuri în sistemele de calcul. În continuare vor fi prezentate unele dintre acestea.
Evident caracteristica cea mai prețuită este redundanța datelor. Ea se bazează pe posibilitatea de a grupa logic mai multe discuri în acel ceva ce este definit ca o unitate logică de memorare. Dacă datele de pe o unitate de disc devin indisponibile atunci ele pot fi reconstituite cu ajutorul celorlalte discuri și a discului de paritate, toate componente ale aceleiași unități logice.
Multe dintre implementările RAID au însă încorporate surse de alimentare de rezervă, astfel încât dacă sursa activă se defectează să poată fi asigurată alimentarea prin utilizarea surselor de rezervă.
În subsistemele RAID sunt incluse și ventilatoare de rezervă, care să poată înlocui la nevoie un ventilator distrus.
Multe dintre subsistemele RAID oferă și facilitatea înlocuirii unui disc defectat cu unul bun, fără a fi necesar ca pentru aceast lucru să fie întreruptă alimentarea subsistemului. După înlocuire, pe discul înlocuitor se reconstituie datele corecte, folosind pentru aceasta discul de paritate și celelalte discuri de date, componente ale unității logice.
Ariile de discuri oferă și un potențial de transfer al datelor foarte ridicat, beneficiind de capacitatea deosebită a controllerelor de intrare/ieșire diferențiale de tip Fast/Wide SCSI-2, ale sistemului de calcul la care aria de discuri este conectată. În general, RAID permit 3 configurații tolerante la defectări:
cu un singur controller;
cu două controllere, dintre care unul în rezervă;
cu două controllere, amândouă active.
Fiecare configurație adaugă un nou nivel de tolerare a defectelor, față de nivelul anterior.

3.2. CONFIGURAȚIA CU UN SINGUR CONTROLLER
Toleranța la defectări în configurația cu un singur controller este furnizată de către următoarele caracteristici:
redundanța datelor (RAID 1, 3, și 5);
redundanța surselor de alimentare;
redundanța ventilatoarelor de răcire;
unitătile de discuri pot fi schimbate când sistemul este operațional;
mentenanța concurentă asupra surselor de alimentare, sistemului de răcire și modulelor de discuri.
Controllerul de arie de discuri, în configurația cu un singur controller, este conectat la un controller de intrare/ieșire SCSI-2, de mare performanță. În fig. „Configurația tolerantă la defectări cu un singur controller.“ este prezentată o configurație de acest gen.

3.3. CONFIGURAȚIA CU DOUĂ CONTROLLERE, DINTRE CARE UNUL ÎN REZERVĂ
În configurația cu două controllere, dintre care unul în rezervă, cele două controllere sunt utilizate ca o pereche „activ/rezervă“. Controllerul în rezervă rămâne inactiv până când softul de management al ariei, care rulează pe sistemul gazdă detectează o eroare în primul controller. Când este detectată această eroare softul va activa controllerul în rezervă și va comuta în mod automat controlul tuturor unităților de discuri la acest nou controller. Toleranța la defectări în configurația cu două controllere, dintre care unul în rezervă, este furnizată de către următoarele caracteristici:
două controllere în arie;
mentenanță concurentă asupra controllerelor din arie;
redundanța datelor (RAID 1, 3, și 5);
redundanța surselor de alimentare;
redundanța ventilatoarelor de răcire;
unitățile de discuri pot fi schimbate când sistemul este operațional;
mentenanța concurentă asupra surselor de alimentare, sistemului de răcire și modulelor de discuri.
Cele două controllere ale ariei de discuri, din configurația cu un două controllere sunt conectate la două controllere de intrare/ieșire SCSI-2, de mare performanță separate, așa cim se vede în fig. „Configurația tolerantă la defectări cu două controllere, dintre care unul în rezervă“.

3.4. CONFIGURAȚIA CU DOUĂ CONTROLLERE ACTIVE
Cea de-a treia configurație tolerantă la defectări include două controllere active. Fiecare dintre aceste controllere active este dedicat unor „bank-uri“ specificate de discuri. În eventualitatea că un controller se defectează, softul de management a configurației va ruta automat toate cererile de intrare/ieșire spre controllerul operațional. Cele două controllere ale ariei din configurația cu două controllere active pot fi atașate la două controllere separate, SCSI-2 de mare performanță, dar mult mai important este faptul că cele două controllere de arie pot fi atașate la controllere SCSI-2, de mare performanță, din două sisteme separate. De aceea, toleranța la defectări din această configurație cu două controllere active furnizează nu numai toate facilitățile de toleranță la defectări ale lui RAIDiant Array, ci și cele oferite de abilitatea de a utiliza două procesoare gazdă. Toleranța la defectări în configurația cu două controllere active, este deci furnizată de către următoarele caracteristici:
două procesoare gazdă;
două controllere în arie;
mentenanță concurentă asupra controllerelor din arie;
redundanța datelor (RAID 1, 3, și 5);
redundanța surselor de alimentare;
redundanța ventilatoarelor de răcire;
unitățile de discuri pot fi schimbate când sistemul este operațional;
mentenanța concurentă asupra surselor de alimentare, sistemului de răcire și modulelor de discuri.

Configurația cu două procesoare active, de asemenea, va îmbunătății puterea subsistemului și de asemenea timpul său de răspuns la intrări/ieșiri, deoarece fiecare controller manevrează cererile de intrare/ieșire numai pentru trei „bancuri“ de discuri. În fig. „Configurația tolerantă la defectări cu două controllere active“ este arătată o configurație cu două controllere, ambele active.

Tehnologia RAID aduce cu sine o îmbunătățire substanțială a disponibilității, securității și performanței suportului de memorare al sistemelor de calcul. Datorată prețului relativ mai ridicat, în momentul de față ea nu se utilizează în sistemele de calcul de uz curent. Sunt însă anumite clase de aplicații la care ea se impune ca singura alternativă rațională. Anii care vin vor impune însă, cu siguranță, tot mai mult principiile tehnologiei RAID ca lucruri comune în toate sistemele de calcul .


BYTE România - martie 1997


(C) Copyright Computer Press Agora