RAID
Cuprins
· 1 Introducere
o 1.1 Diferența dintre discurile fizice și discurile logice
o 1.2 Citirea și scrierea datelor
o 1.3 Ce este RAID?
o 1.4 De ce să folosiți RAID?
o 1.5 Istoric
· 2 Concepte de bază utilizate de sistemele RAID
o 2.1 Caching
o 2.2 Oglindirea: Mai mult de o copie a datelor
o 2.3: O parte din date se află pe un alt disc
o 2.4 Corecția erorilor și defecțiunile
o 2.5 Hot spares: utilizarea mai multor discuri decât este necesar
o 2.6 Dimensiunea stripe și dimensiunea chunk: distribuirea datelor pe mai multe discuri
o 2.7 Asamblarea discului: JBOD, concatenare sau spanning
o 2.8 Clonarea unității
o 2.9 Diferite configurații
· 3 Noțiuni de bază: niveluri RAID simple
o 3.1 Nivelurile RAID utilizate în mod obișnuit
§ 3.1.1 RAID 0 "striping"
§ 3.1.2 RAID 1 "oglindire"
§ 3.1.3 RAID 5 "striping cu paritate distribuită"
§ 3.1.4 Imagini
o 3.2 Nivelurile RAID utilizate mai puțin
§ 3.2.1 RAID 2
§ 3.2.2.2 RAID 3 "striping cu paritate dedicată"
§ 3.2.3 RAID 4 "striping cu paritate dedicată"
§ 3.2.4 RAID 6
§ 3.2.5 Imagini
o 3.3 Niveluri RAID non-standard
§ 3.3.1 Paritate dublă / Paritate diagonală
§ 3.3.2 RAID-DP
§ 3.3.3 RAID 1.5
§ 3.3.4 RAID 5E, RAID 5EE și RAID 6E
§ 3.3.5 RAID 7
§ 3.3.6 Intel Matrix RAID
§ 3.3.7 Driver RAID Linux MD
§ 3.3.8 RAID Z
§ 3.3.9 Imagini
· 4 Îmbinarea nivelurilor RAID
· 5 Realizarea unui RAID
o 5.1 RAID software
o 5.2 RAID hardware
o 5.3 RAID asistat de hardware
· 6 Termeni diferiți legați de defecțiuni hardware
o 6.1 Rata de eșec
o 6.2 Timpul mediu până la pierderea datelor
o 6.3 Timpul mediu de recuperare
o 6.4 Rata de eroare de bit nerecuperabilă
· 7 Probleme cu RAID
o 7.1 Adăugarea de discuri la un moment ulterior
o 7.2 Eșecuri legate
o 7.3 Atomicitate
o 7.4 Date nerecuperabile
o 7.5 Fiabilitatea cache-ului de scriere
o 7.6 Compatibilitatea echipamentelor
· 8 Ce poate și ce nu poate face RAID
o 8.1 Ce poate face RAID
o 8.2 Ce nu poate face RAID
· 9 Exemplu
· 10 Referințe
· 11 Alte site-uri web
RAID este un acronim care semnifică Redundant Array of Inexpensive Disks sau Redundant Array of Independent Disks. RAID este un termen utilizat în informatică. Cu RAID, mai multe discuri dure sunt transformate într-un singur disc logic. Există diferite moduri în care se poate face acest lucru. Fiecare dintre metodele care pun laolaltă discurile dure are anumite avantaje și dezavantaje față de utilizarea unităților ca discuri individuale, independente unul de celălalt. Principalele motive pentru care se utilizează RAID sunt:
- Pentru a face ca pierderea datelor să se întâmple mai rar. Acest lucru se realizează prin existența mai multor copii ale datelor.
- Pentru a obține mai mult spațiu de stocare având mai multe discuri mai mici.
- Pentru a obține mai multă flexibilitate (discurile pot fi schimbate sau adăugate în timp ce sistemul continuă să funcționeze)
- Pentru a obține datele mai rapid.
Nu este posibil să se atingă toate aceste obiective în același timp, așa că trebuie să se facă alegeri.
Există, de asemenea, unele lucruri rele:
- Anumite opțiuni pot proteja împotriva pierderii datelor din cauza unei defecțiuni a unuia (sau a mai multor) discuri. Totuși, acestea nu protejează împotriva ștergerii sau suprascrierii datelor.
- În anumite configurații, RAID poate tolera defectarea unuia sau a mai multor discuri. După ce discurile defecte au fost înlocuite, datele trebuie să fie reconstruite. În funcție de configurație și de dimensiunea discurilor, această reconstrucție poate dura mult timp.
- Anumite tipuri de erori vor face imposibilă citirea datelor.
Cea mai mare parte a lucrărilor privind RAID se bazează pe o lucrare scrisă în 1988.
Companiile au folosit sistemele RAID pentru a-și stoca datele încă de la apariția acestei tehnologii. Există diferite moduri în care pot fi realizate sistemele RAID. De la descoperirea sa, costul construirii unui sistem RAID a scăzut foarte mult. Din acest motiv, chiar și unele computere și aparate care sunt folosite acasă au unele funcții RAID. Astfel de sisteme pot fi folosite pentru a stoca muzică sau filme, de exemplu.
Introducere
Diferența dintre discurile fizice și discurile logice
Un hard disk este o parte a unui computer. Discurile dure normale folosesc magnetismul pentru a stoca informații. Atunci când sunt utilizate, discurile dure sunt disponibile pentru sistemul de operare. În Microsoft Windows, fiecare hard disk primește o literă de unitate (care începe cu C:, A: sau B: sunt rezervate pentru unitățile de dischetă). Sistemele de operare Unix și de tip Linux au un arbore de directoare cu o singură rădăcină. Acest lucru înseamnă că oamenii care folosesc computerele uneori nu știu unde sunt stocate informațiile. (Ca să fim corecți, o mulțime de utilizatori de Windows nu știu nici ei unde sunt stocate datele lor).
În informatică, discurile dure (care sunt hardware și pot fi atinse) sunt uneori numite unități fizice sau discuri fizice. Ceea ce sistemul de operare arată utilizatorului se numește uneori disc logic. O unitate fizică poate fi împărțită în diferite secțiuni, numite partiții de disc. De obicei, fiecare partiție de disc conține un sistem de fișiere. Sistemul de operare va afișa fiecare partiție ca pe un disc logic.
Prin urmare, pentru utilizator, atât configurația cu mai multe discuri fizice, cât și cea cu mai multe discuri logice vor arăta la fel. Utilizatorul nu poate decide dacă un "disc logic" este același lucru cu un disc fizic sau dacă este pur și simplu o parte a discului. Rețelele de stocare (SAN) schimbă complet această perspectivă. Tot ceea ce este vizibil dintr-un SAN este un număr de discuri logice.
Citirea și scrierea datelor
În calculator, datele sunt organizate sub formă de biți și octeți. În majoritatea sistemelor, un octet este format din 8 biți. Memoria calculatorului utilizează electricitatea pentru a stoca datele, iar discurile dure utilizează magnetismul. Prin urmare, atunci când datele sunt scrise pe un disc, semnalul electric este convertit într-unul magnetic. Atunci când datele sunt citite de pe disc, conversia se face în cealaltă direcție: Un semnal electric este realizat din polaritatea unui câmp magnetic.
Ce este RAID?
O matrice RAID unește două sau mai multe discuri dure, astfel încât acestea să formeze un disc logic. Există diferite motive pentru care se face acest lucru. Cele mai frecvente sunt:
- Oprirea pierderilor de date, atunci când unul sau mai multe discuri din matrice se defectează.
- Obțineți transferuri de date mai rapide.
- Obținerea capacității de a schimba discurile în timp ce sistemul continuă să funcționeze.
- Unirea mai multor discuri pentru a obține o capacitate de stocare mai mare; uneori se folosesc mai multe discuri ieftine, în loc de unul mai scump.
RAID se realizează prin utilizarea de hardware sau software special pe calculator. Discurile unite vor părea ca un singur hard disk pentru utilizator. Majoritatea nivelurilor RAID sporesc redundanța. Acest lucru înseamnă că stochează datele mai des sau stochează informații despre modul de reconstrucție a datelor. Acest lucru permite ca mai multe discuri să cedeze fără ca datele să fie pierdute. Atunci când discul defect este înlocuit, datele pe care ar trebui să le conțină vor fi copiate sau reconstruite de pe celelalte discuri ale sistemului. Acest lucru poate dura mult timp. Timpul necesar depinde de diferiți factori, cum ar fi dimensiunea matricei.
De ce să folosiți RAID?
Unul dintre motivele pentru care multe companii folosesc RAID este faptul că datele din matrice pot fi pur și simplu utilizate. Cei care folosesc datele nu trebuie să știe că folosesc RAID. În cazul în care apare o defecțiune și matricea se reface, accesul la date va fi mai lent. Accesarea datelor în această perioadă va încetini, de asemenea, procesul de recuperare, dar acest lucru este totuși mult mai rapid decât să nu poți lucra deloc cu datele. Cu toate acestea, în funcție de nivelul RAID, este posibil ca discurile să nu cedeze în timp ce noul disc este pregătit pentru utilizare. O defecțiune a unui disc în acel moment va duce la pierderea tuturor datelor din matrice.
Diferitele moduri de îmbinare a discurilor se numesc niveluri RAID. Un număr mai mare pentru nivel nu este neapărat mai bun. Diferitele niveluri RAID au scopuri diferite. Unele niveluri RAID au nevoie de discuri speciale și controllere speciale.
Istorie
În 1978, un bărbat pe nume Norman Ken Ouchi, care lucra la IBM, a făcut o sugestie care descria planurile pentru ceea ce avea să devină mai târziu RAID 5. Planurile descriau, de asemenea, ceva similar cu RAID 1, precum și protecția unei părți din RAID 4.
Lucrătorii de la Universitatea din Berkeley au ajutat la planificarea cercetării în 1987. Aceștia încercau să facă posibil ca tehnologia RAID să recunoască două hard disk-uri în loc de unul. Ei au descoperit că atunci când tehnologia RAID avea două hard disk-uri, avea o capacitate de stocare mult mai bună decât în cazul unui singur hard disk. Cu toate acestea, se bloca mult mai des.
În 1988, diferitele tipuri de RAID (de la 1 la 5) au fost prezentate de David Patterson, Garth Gibson și Randy Katz în articolul lor intitulat "A Case for Redundant Arrays of Inexpensive Disks (RAID)". Acest articol a fost primul care a numit noua tehnologie RAID, iar denumirea a devenit oficială.
Un hard disk a fost scos din matrice.
Imagine de aproape a 4 discuri care formează o matrice RAID, încorporată într-un sistem desktop. Încuietoarea albastră permite schimbarea discurilor în timp ce sistemul continuă să funcționeze.
Concepte de bază utilizate de sistemele RAID
RAID utilizează câteva idei de bază, care au fost descrise în articolul "RAID: High-Performance, Reliable Secondary Storage" de Peter Chen și alții, publicat în 1994.
Caching
Caching-ul este o tehnologie care are utilizări și în sistemele RAID. Există diferite tipuri de cache-uri care sunt utilizate în sistemele RAID:
- Sistem de operare
- Controler RAID
- Matrice de discuri pentru întreprinderi
În sistemele moderne, o cerere de scriere este considerată ca fiind finalizată atunci când datele au fost scrise în memoria cache. Acest lucru nu înseamnă că datele au fost scrise pe disc. Solicitările din memoria cache nu sunt tratate neapărat în aceeași ordine în care au fost scrise în memoria cache. Acest lucru face posibil ca, în cazul unei defecțiuni a sistemului, uneori unele date să nu fi fost scrise pe discul respectiv. Din acest motiv, multe sisteme au o memorie cache care este susținută de o baterie.
Oglindirea: Mai mult de o copie a datelor
Când vorbim despre o oglindă, aceasta este o idee foarte simplă. În loc ca datele să se afle într-un singur loc, există mai multe copii ale acestora. Aceste copii se află, de obicei, pe discuri dure diferite (sau partiții de disc). În cazul în care există două copii, una dintre ele poate ceda fără ca datele să fie afectate (deoarece acestea se află în continuare pe cealaltă copie). De asemenea, oglindirea poate oferi un impuls la citirea datelor. Acestea vor fi preluate întotdeauna de pe cel mai rapid disc care răspunde. Scrierea datelor este însă mai lentă, deoarece toate discurile trebuie să fie actualizate.
Dungile: O parte din date se află pe un alt disc
În cazul striping-ului, datele sunt împărțite în părți diferite. Aceste părți ajung apoi pe diferite discuri (sau partiții de disc). Acest lucru înseamnă că scrierea datelor este mai rapidă, deoarece se poate face în paralel. Acest lucru nu înseamnă că nu vor exista defecțiuni, deoarece fiecare bloc de date se găsește doar pe un singur disc.
Corecția erorilor și defectele
Este posibil să se calculeze diferite tipuri de sume de control. Unele metode de calculare a sumelor de control permit găsirea unei greșeli. Majoritatea nivelurilor RAID care utilizează redundanța pot face acest lucru. Unele metode sunt mai dificil de realizat, dar permit nu numai detectarea erorii, ci și remedierea acesteia.
Hot spares: utilizarea mai multor discuri decât este necesar
Multe dintre modalitățile de a avea suport RAID se numesc "hot spare". Un hot spare este un disc gol care nu este utilizat în timpul funcționării normale. Atunci când un disc se defectează, datele pot fi copiate direct pe discul de rezervă fierbinte. În acest fel, discul defect trebuie să fie înlocuit cu o nouă unitate goală pentru a deveni unitatea de rezervă la cald.
Dimensiunea benzii și dimensiunea bucăților: răspândirea datelor pe mai multe discuri
RAID funcționează prin repartizarea datelor pe mai multe discuri. Doi dintre termenii frecvent utilizați în acest context sunt dimensiunea benzii și dimensiunea bucăților.
Dimensiunea bucăților este cel mai mic bloc de date care este scris pe un singur disc al matricei. Dimensiunea benzii este dimensiunea unui bloc de date care va fi distribuit pe toate discurile. Astfel, cu patru discuri și o dimensiune a benzii de 64 de kilobiți (kB), pe fiecare disc se vor scrie 16 kB. Prin urmare, în acest exemplu, dimensiunea bucății este de 16 kB. O mărire mai mare a dimensiunii benzii va însemna o rată de transfer de date mai rapidă, dar și o latență maximă mai mare. În acest caz, acesta este timpul necesar pentru a obține un bloc de date.
Asamblarea discului: JBOD, concatenare sau spanning
Multe controllere (și, de asemenea, software) pot pune discurile împreună în felul următor: Se ia primul disc, până se termină, apoi se ia al doilea și așa mai departe. În acest fel, mai multe discuri mai mici arată ca unul mai mare. Acest lucru nu este cu adevărat RAID, deoarece nu există redundanță. De asemenea, spanning poate combina discuri în cazul în care RAID 0 nu poate face nimic. În general, acest lucru se numește doar o grămadă de discuri (JBOD).
Aceasta este ca o rudă îndepărtată a RAID, deoarece unitatea logică este formată din diferite unități fizice. Concatenarea este utilizată uneori pentru a transforma mai multe unități mici într-o unitate utilă mai mare. Acest lucru nu se poate face cu RAID 0. De exemplu, JBOD poate combina unități de 3 GB, 15 GB, 5,5 GB și 12 GB într-o unitate logică de 35,5 GB, care este adesea mai utilă decât unitățile singure.
În diagrama din dreapta, datele sunt concatenate de la sfârșitul discului 0 (blocul A63) până la începutul discului 1 (blocul A64); de la sfârșitul discului 1 (blocul A91) până la începutul discului 2 (blocul A92). În cazul în care se utilizează RAID 0, atunci discul 0 și discul 2 ar fi trunchiate la 28 de blocuri, dimensiunea celui mai mic disc din matrice (discul 1), pentru o dimensiune totală de 84 de blocuri.
Unele controlere RAID folosesc JBOD pentru a vorbi despre lucrul pe unități fără caracteristici RAID. Fiecare unitate apare separat în sistemul de operare. Acest JBOD nu este același lucru cu concatenarea.
Multe sisteme Linux utilizează termenii "linear mode" sau "append mode". Implementarea Mac OS X 10.4 - numită "Concatenated Disk Set" - nu lasă utilizatorului date utilizabile pe celelalte unități în cazul în care una dintre acestea cedează într-un set de discuri concatenate, deși discurile funcționează altfel așa cum s-a descris mai sus.
Concatenarea este una dintre utilizările Logical Volume Manager în Linux. Acesta poate fi utilizat pentru a crea unități virtuale.
Clonarea unității
Cele mai multe hard disk-uri moderne au un standard numit Self-Monitoring, Analysis and Reporting Technology (S.M.A.R.T.). SMART permite monitorizarea anumitor lucruri pe un hard disk. Anumite controllere permit înlocuirea unui singur hard disk chiar înainte ca acesta să se defecteze, de exemplu, deoarece S.M.A.R.T. sau un alt test al discului raportează prea multe erori corectabile. Pentru a face acest lucru, controlerul va copia toate datele pe o unitate de rezervă la cald. După aceasta, discul poate fi înlocuit cu un altul (care va deveni pur și simplu noul hot spare).
Diferite configurații
Configurarea discurilor și modul în care acestea utilizează tehnicile de mai sus afectează performanța și fiabilitatea sistemului. Atunci când sunt utilizate mai multe discuri, este mai probabil ca unul dintre discuri să se defecteze. Din acest motiv, trebuie construite mecanisme care să poată găsi și remedia erorile. Acest lucru face ca întregul sistem să fie mai fiabil, deoarece este capabil să supraviețuiască și să repare defecțiunea.
JBOD cu 3 discuri de dimensiuni diferite
Noțiuni de bază: niveluri RAID simple
Nivelurile RAID utilizate în mod obișnuit
RAID 0 "striping"
RAID 0 nu este cu adevărat RAID, deoarece nu este redundant. Cu RAID 0, discurile sunt pur și simplu puse împreună pentru a forma un disc mare. Acest lucru se numește "striping". Atunci când un disc cedează, întreaga matrice cedează. Prin urmare, RAID 0 este rareori utilizat pentru datele importante, dar citirea și scrierea datelor de pe disc poate fi mai rapidă cu striping, deoarece fiecare disc citește o parte din fișier în același timp.
În cazul RAID 0, blocurile de discuri care se succed unul după altul sunt de obicei plasate pe discuri diferite. Din acest motiv, toate discurile utilizate de un RAID 0 trebuie să aibă aceeași dimensiune.
RAID 0 este adesea utilizat pentru Swapspace pe Linux sau pe sistemele de operare de tip Unix.
RAID 1 "oglindire"
În cazul RAID 1, două discuri sunt puse împreună. Amândouă conțin aceleași date, iar unul îl "oglindește" pe celălalt. Aceasta este o configurare ușoară și rapidă, indiferent dacă este implementată cu un controler hardware sau prin software.
RAID 5 "striping cu paritate distribuită"
Nivelul RAID 5 este probabil cel mai des utilizat. Pentru a construi o matrice de stocare RAID 5 sunt necesare cel puțin trei discuri dure. Fiecare bloc de date va fi stocat în trei locuri diferite. Două dintre aceste locuri vor stoca blocul așa cum este, iar al treilea va stoca o sumă de control. Această sumă de control este un caz special al unui cod Reed-Solomon care utilizează doar adunarea pe biți. De obicei, se calculează prin metoda XOR. Deoarece această metodă este simetrică, un bloc de date pierdut poate fi reconstruit din celălalt bloc de date și din suma de control. Pentru fiecare bloc, un alt disc va conține blocul de paritate care conține suma de control. Acest lucru se face pentru a crește redundanța. Orice disc poate ceda. În general, va exista un singur disc care va conține sumele de control, astfel încât capacitatea totală utilizabilă va fi cea a tuturor discurilor, cu excepția unuia. Dimensiunea discului logic rezultat va fi egală cu dimensiunea tuturor discurilor împreună, cu excepția unui singur disc care conține informațiile de paritate.
Desigur, acest lucru este mai lent decât nivelul RAID 1, deoarece la fiecare scriere, toate discurile trebuie citite pentru a calcula și actualiza informațiile de paritate. Performanța de citire a RAID 5 este aproape la fel de bună ca și RAID 0 pentru același număr de discuri. Cu excepția blocurilor de paritate, distribuția datelor pe discuri urmează același model ca și în cazul RAID 0. Motivul pentru care RAID 5 este puțin mai lent este că discurile trebuie să treacă peste blocurile de paritate.
Un RAID 5 cu un disc defect va continua să funcționeze. Acesta se află în modul degradat. Un RAID 5 degradat poate fi foarte lent. Din acest motiv, se adaugă adesea un disc suplimentar. Acesta se numește disc de rezervă la cald. În cazul în care un disc se defectează, datele pot fi reconstruite direct pe discul suplimentar. RAID 5 poate fi, de asemenea, realizat destul de ușor în software.
În principal din cauza problemelor de performanță ale rețelelor RAID 5 care au eșuat, unii experți în baze de date au format un grup numit BAARF (Battle Against Any Raid Five).
Dacă sistemul cedează în timp ce există scrieri active, este posibil ca paritatea unei benzi să devină inconsistentă cu datele. Dacă acest lucru nu este reparat înainte ca un disc sau un bloc să cedeze, se pot produce pierderi de date. O paritate incorectă va fi utilizată pentru a reconstrui blocul lipsă din banda respectivă. Această problemă este cunoscută uneori sub numele de "gaura de scriere". Antrepozitele cache cu baterii și tehnici similare sunt utilizate în mod obișnuit pentru a reduce șansele ca acest lucru să se întâmple.
Imagini
·
RAID 0 pune pur și simplu diferite blocuri pe diferite discuri. Nu există redundanță.
·
Cu Raid 1 fiecare bloc este prezent pe ambele discuri.
·
RAID 5 calculează sume de control speciale pentru date. Atât blocurile cu suma de control, cât și cele cu date sunt distribuite pe toate discurile.
Nivelurile RAID utilizate mai puțin
RAID 2
Acesta a fost utilizat în cazul calculatoarelor foarte mari. Pentru a utiliza RAID Level 2 sunt necesare discuri speciale scumpe și un controler special. Datele sunt distribuite la nivel de bit (toate celelalte niveluri utilizează acțiuni la nivel de octet). Se fac calcule speciale. Datele sunt împărțite în secvențe statice de biți. Se pun împreună 8 biți de date și 2 biți de paritate. Apoi se calculează un cod Hamming. Fragmentele codului Hamming sunt apoi distribuite pe diferite discuri.
RAID 2 este singurul nivel RAID care poate repara erorile, celelalte niveluri RAID putând doar să le detecteze. Atunci când constată că informațiile necesare nu au sens, ele vor reconstrui pur și simplu. Acest lucru se face prin calcule, folosind informațiile de pe celelalte discuri. Dacă aceste informații lipsesc sau sunt greșite, nu pot face mare lucru. Deoarece utilizează coduri Hamming, RAID 2 poate afla care parte a informației este greșită și poate corecta doar acea parte.
RAID 2 are nevoie de cel puțin 10 discuri pentru a funcționa. Din cauza complexității sale și a necesității de a avea un hardware foarte scump și special, RAID 2 nu mai este folosit foarte mult.
RAID 3 "striping cu paritate dedicată"
Raid Level 3 este asemănător cu RAID Level 0. Se adaugă un disc suplimentar pentru a stoca informațiile de paritate. Acest lucru se face prin adăugarea pe biți a valorii unui bloc de pe celelalte discuri. Informațiile de paritate sunt stocate pe un disc separat (dedicat). Acest lucru nu este bun, deoarece dacă discul de paritate se blochează, informațiile de paritate se pierd.
Nivelul RAID 3 se realizează de obicei cu cel puțin 3 discuri. O configurație cu două discuri este identică cu un RAID Level 0.
RAID 4 "striping cu paritate dedicată"
Acest sistem este foarte asemănător cu RAID 3, cu excepția faptului că informațiile de paritate sunt calculate pe blocuri mai mari și nu pe octeți individuali. Este similar cu RAID 5. Pentru o matrice RAID 4 sunt necesare cel puțin trei discuri.
RAID 6
Nivelul RAID 6 nu a fost un nivel RAID original. Acesta adaugă un bloc de paritate suplimentar la o matrice RAID 5. Este nevoie de cel puțin patru discuri (două discuri pentru capacitate, două discuri pentru redundanță). RAID 5 poate fi văzut ca un caz special de cod Reed-Solomon. RAID 5 este un caz special, însă, are nevoie doar de adunare în câmpul Galois GF(2). Acest lucru este ușor de realizat cu XOR-uri. RAID 6 extinde aceste calcule. Nu mai este un caz special și trebuie efectuate toate calculele. Cu RAID 6, se utilizează o sumă de control suplimentară (numită polinom), de obicei din GF (28). Cu această abordare, este posibilă protecția împotriva oricărui număr de discuri defecte. RAID 6 se referă la cazul în care se utilizează două sume de control pentru a proteja împotriva pierderii a două discuri.
Ca și în cazul RAID 5, paritatea și datele se află pe discuri diferite pentru fiecare bloc. Cele două blocuri de paritate se află, de asemenea, pe discuri diferite.
Există diferite moduri de a face RAID 6. Acestea diferă în ceea ce privește performanța de scriere și în ceea ce privește numărul de calcule necesare. Faptul că se poate scrie mai repede înseamnă, de obicei, că sunt necesare mai multe calcule.
RAID 6 este mai lent decât RAID 5, dar permite ca RAID să continue și în cazul în care două discuri nu funcționează. RAID 6 este din ce în ce mai popular, deoarece permite refacerea unei matrice după o defecțiune a unui singur disc, chiar dacă unul dintre discurile rămase are unul sau mai multe sectoare defecte.
Imagini
·
RAID 3 se aseamănă mult cu nivelul RAID 0. Se adaugă un disc suplimentar care va conține o sumă de control pentru fiecare bloc de date.
·
RAID 4 este similar cu RAID nivel 3, dar calculează paritatea pe blocuri mai mari de date.
·
RAID 6 este similar cu RAID 5, dar calculează două sume de control diferite. Acest lucru permite ca două discuri să cedeze, fără pierderi de date.
Niveluri RAID non-standard
Paritate dublă / Paritate diagonală
RAID 6 utilizează două blocuri de paritate. Acestea sunt calculate într-un mod special pe un polinom. RAID cu paritate dublă (denumit și RAID cu paritate diagonală) utilizează un polinom diferit pentru fiecare dintre aceste blocuri de paritate. Recent, asociația industrială care a definit RAID a declarat că RAID cu paritate dublă este o formă diferită de RAID 6.
RAID-DP
RAID-DP este o altă modalitate de a avea paritate dublă.
RAID 1.5
RAID 1.5 (a nu se confunda cu RAID 15, care este diferit) este o implementare proprietară RAID. La fel ca RAID 1, utilizează doar două discuri, dar face atât striping, cât și mirroring (similar cu RAID 10). Majoritatea lucrurilor sunt realizate în hardware.
RAID 5E, RAID 5EE și RAID 6E
RAID 5E, RAID 5EE și RAID 6E (cu E de la Enhanced) se referă, în general, la diferite tipuri de RAID 5 sau RAID 6 cu un hot spare. În cazul acestor implementări, unitatea de rezervă nu este o unitate fizică. Mai degrabă, aceasta există sub forma unui spațiu liber pe discuri. Acest lucru sporește performanța, dar înseamnă că un hot spare nu poate fi partajat între diferite matrici. Această schemă a fost introdusă de IBM ServeRAID în jurul anului 2001.
RAID 7
Aceasta este o implementare brevetată. Adaugă memoria cache la o matrice RAID 3 sau RAID 4.
Intel Matrix RAID
Unele plăci de bază Intel au cipuri RAID care au această caracteristică. Aceasta utilizează două sau trei discuri, apoi le partiționează în mod egal pentru a forma o combinație de niveluri RAID 0, RAID 1, RAID 5 sau RAID 1+0.
Linux MD RAID driver RAID
Acesta este numele driverului care permite realizarea de RAID software cu Linux. Pe lângă nivelurile normale RAID 0-6, acesta are și o implementare RAID 10. Începând cu Kernel 2.6.9, RAID 10 este un singur nivel. Implementarea are câteva caracteristici non-standard.
RAID Z
Sun a implementat un sistem de fișiere numit ZFS. Acest sistem de fișiere este optimizat pentru gestionarea unor cantități mari de date. Acesta include un Logical Volume Manager. Include, de asemenea, o caracteristică numită RAID-Z. Acesta evită problema numită "gaura de scriere RAID 5", deoarece are o politică de copiere la scriere: Nu suprascrie datele direct, ci scrie date noi într-o nouă locație pe disc. Atunci când scrierea a avut succes, datele vechi sunt șterse. Aceasta evită necesitatea operațiilor de citire-modificare-scriere în cazul scrierilor mici, deoarece scrie doar benzi complete. Blocurile mici sunt oglindite în loc să fie protejate prin paritate, ceea ce este posibil deoarece sistemul de fișiere cunoaște modul în care este organizată memoria. Prin urmare, acesta poate aloca spațiu suplimentar dacă este necesar. Există, de asemenea, RAID-Z2, care utilizează două forme de paritate pentru a obține rezultate similare cu RAID 6: capacitatea de a supraviețui până la două defecțiuni ale unei unități fără a pierde date.
Imagini
·
Diagrama unei configurații RAID DP (Double Parity).
·
O configurație Matrix RAID.
Îmbinarea nivelurilor RAID
Cu RAID, diferite discuri pot fi puse împreună pentru a obține un disc logic.Utilizatorul va vedea doar discul logic. Fiecare dintre nivelurile RAID menționate mai sus are puncte bune și rele. Dar RAID poate funcționa și cu discuri logice. Astfel, unul dintre nivelurile RAID de mai sus poate fi utilizat cu un set de discuri logice. Mulți oameni notează acest lucru prin scrierea numerelor împreună. Uneori, ei scriu un "+" sau un "&" între ele. Combinațiile comune (folosind două niveluri) sunt următoarele:
- RAID 0+1: Două sau mai multe matrici RAID 0 sunt combinate într-o matrice RAID 1; acest lucru se numește oglindă de benzi.
- RAID 1+0: La fel ca RAID 0+1, dar nivelurile RAID sunt inversate; Stripe of Mirrors (bandă de oglinzi). Acest lucru face ca eșecul discului să fie mai rar decât RAID 0+1 de mai sus.
- RAID 5+0: Strângeți mai multe RAID 5 cu un RAID 0. Un disc din fiecare RAID 5 poate ceda, dar acest RAID 5 devine punctul unic de defecțiune; dacă un alt disc din această matrice cedează, toate datele din matrice vor fi pierdute.
- RAID 5+1: Oglindirea unui set de RAID 5: În situațiile în care RAID este format din șase discuri, oricare dintre cele trei discuri poate ceda (fără ca datele să se piardă).
- RAID 6+0: Strânge mai multe matrici RAID 6 peste un RAID 0; două discuri din fiecare RAID 6 pot ceda fără pierderi de date.
Cu șase discuri de 300 GB fiecare, o capacitate totală de 1,8 TB, se poate realiza un RAID 5, cu 1,5 TB de spațiu util. În această matrice, un singur disc poate ceda fără pierderi de date. Cu RAID 50, spațiul este redus la 1,2 TB, dar un disc din fiecare RAID 5 poate ceda, în plus, există o creștere notabilă a performanței. RAID 51 reduce spațiul utilizabil la 900 GB, dar permite ca oricare trei discuri să eșueze.
·
RAID 0+1: Mai multe matrice RAID 0 sunt combinate cu o matrice RAID 1.
·
RAID 1+0: Mai robust decât RAID 0+1; suportă defecțiuni multiple ale unităților, atâta timp cât nu se defectează două unități care formează o oglindă.
·
RAID 5+1: Oricare dintre cele trei unități poate ceda, fără pierderi de date.
Realizarea unui RAID
Există diferite moduri de a realiza un RAID. Acesta poate fi realizat fie cu software, fie cu hardware.
RAID software
Un RAID poate fi realizat cu ajutorul software-ului în două moduri diferite. În cazul RAID software, discurile sunt conectate ca niște hard disk-uri normale. Calculatorul este cel care face ca RAID să funcționeze. Aceasta înseamnă că, pentru fiecare acces, procesorul trebuie să facă și calculele pentru RAID. Calculele pentru RAID 0 sau RAID 1 sunt simple. Cu toate acestea, calculele pentru RAID 5, RAID 6 sau pentru unul dintre nivelurile combinate de RAID pot fi foarte complicate. Într-un RAID software, pornirea automată de la o matrice care a eșuat poate fi un lucru dificil de făcut. În cele din urmă, modul în care RAID este realizat în software depinde de sistemul de operare utilizat; în general, nu este posibil să se reconstruiască o matrice RAID software cu un sistem de operare diferit. Sistemele de operare folosesc de obicei partiții de hard disk, mai degrabă decât hard disk-uri întregi, pentru a realiza rețele RAID.
RAID hardware
Un RAID poate fi realizat și cu hardware. În acest caz, se utilizează un controler de disc special; această placă de controler ascunde faptul că face RAID de la sistemul de operare și de la utilizator. Calculele privind informațiile privind suma de control și alte calcule legate de RAID sunt efectuate pe un microcip special din acel controler. Acest lucru face ca RAID să fie independent de sistemul de operare. Sistemul de operare nu va vedea RAID, ci un singur disc. Diferiți producători realizează RAID în moduri diferite. Acest lucru înseamnă că un RAID construit cu un controler RAID hardware nu poate fi reconstruit de un alt controler RAID de la un alt producător. Controlerele RAID hardware sunt adesea scumpe la cumpărare.
RAID asistat de hardware
Aceasta este o combinație între RAID hardware și RAID software. RAID asistat de hardware utilizează un cip controler special (ca și RAID hardware), dar acest cip nu poate efectua multe operațiuni. El este activ doar la pornirea sistemului; de îndată ce sistemul de operare este complet încărcat, această configurație este ca și RAID software. Unele plăci de bază au funcții RAID pentru discurile atașate; cel mai adesea, aceste funcții RAID sunt realizate ca RAID asistat de hardware. Aceasta înseamnă că este nevoie de un software special pentru a putea utiliza aceste funcții RAID și pentru a putea recupera un disc defect.
Termeni diferiți legați de defecțiuni hardware
Există diferiți termeni care sunt utilizați atunci când vorbim despre defecțiuni hardware:
Rata de eșec
Rata de eșec este frecvența cu care un sistem eșuează. Timpul mediu până la defecțiune (MTTF) sau timpul mediu între defecțiuni (MTBF) al unui sistem RAID este același cu cel al componentelor sale. La urma urmei, un sistem RAID nu se poate proteja împotriva defecțiunilor unităților sale individuale de hard disk. Cu toate acestea, tipurile mai complicate de RAID (orice altceva în afară de "striping" sau "concatenare") pot ajuta la păstrarea intactă a datelor chiar și în cazul în care un hard disk individual se defectează.
Timpul mediu până la pierderea datelor
Timpul mediu până la pierderea datelor (MTTDL) indică timpul mediu până la pierderea datelor într-o anumită matrice. Timpul mediu până la pierderea de date al unui anumit RAID poate fi mai mare sau mai mic decât cel al discurilor sale dure. Acest lucru depinde de tipul de RAID utilizat.
Timpul mediu de recuperare
Array-urile care au redundanță pot recupera din anumite defecțiuni. Timpul mediu de recuperare arată cât timp este necesar până când o matrice cu defecțiuni revine la starea sa normală. Aceasta adaugă atât timpul de înlocuire a unui mecanism de disc defect, cât și timpul de reconstrucție a matricei (adică de replicare a datelor pentru redundanță).
Rata de eroare de bit irecuperabilă
Rata de eroare de bit nerecuperabilă (UBE) indică cât timp o unitate de disc nu va putea recupera datele după utilizarea codurilor de verificare a redundanței ciclice (CRC) și a mai multor încercări.
Probleme cu RAID
Există, de asemenea, anumite probleme legate de ideile sau tehnologia din spatele RAID:
Adăugarea de discuri la un moment ulterior
Anumite niveluri RAID permit extinderea matricei prin simpla adăugare de hard disk-uri, la un moment dat. Informațiile, cum ar fi blocurile de paritate, sunt adesea împrăștiate pe mai multe discuri. Adăugarea unui disc la matrice înseamnă că este necesară o reorganizare. O astfel de reorganizare este ca o reconstrucție a matricei și poate dura mult timp. Atunci când se face acest lucru, este posibil ca spațiul suplimentar să nu fie încă disponibil, deoarece atât sistemul de fișiere de pe matrice, cât și sistemul de operare trebuie să fie informați despre acest lucru. Unele sisteme de fișiere nu acceptă să fie mărite după ce au fost create. În acest caz, trebuie să se facă o copie de rezervă a tuturor datelor, matricea trebuie recreată cu noua configurație și datele trebuie restaurate pe ea.
O altă opțiune pentru a adăuga spațiu de stocare este crearea unei noi matrice și lăsarea unui manager de volum logic să se ocupe de această situație. Acest lucru permite creșterea aproape oricărui sistem RAID, chiar și a RAID1 (care este limitat la două discuri).
Eșecuri legate
Mecanismul de corecție a erorilor din RAID presupune că defecțiunile unităților sunt independente. Este posibil să se calculeze cât de des se poate defecta un echipament și să se aranjeze matricea pentru a face foarte improbabilă pierderea de date.
Cu toate acestea, în practică, unitățile au fost adesea cumpărate împreună. Ele au aproximativ aceeași vârstă și au fost utilizate în mod similar (ceea ce se numește uzură). Multe unități se defectează din cauza unor probleme mecanice. Cu cât o unitate este mai veche, cu atât mai uzate sunt părțile sale mecanice. Piesele mecanice care sunt vechi sunt mai susceptibile de a se defecta decât cele mai tinere. Acest lucru înseamnă că defecțiunile unităților nu mai sunt independente din punct de vedere statistic. În practică, există o șansă ca și un al doilea disc să se defecteze înainte ca primul să fie recuperat. Acest lucru înseamnă că, în practică, pierderile de date pot avea loc la rate semnificative.
Atomicitate
O altă problemă care apare, de asemenea, în cazul sistemelor RAID este că aplicațiile se așteaptă la ceea ce se numește atomicitate: Fie se scriu toate datele, fie nu se scriu deloc. Scrierea datelor este cunoscută sub numele de tranzacție.
În matricele RAID, noile date sunt de obicei scrise în locul în care se aflau datele vechi. Acest lucru a devenit cunoscut sub numele de actualizare în locație. Jim Gray, un cercetător de baze de date, a scris o lucrare în 1981 în care a descris această problemă.
Foarte puține sisteme de stocare permit o semantică de scriere atomică. Atunci când un obiect este scris pe disc, un dispozitiv de stocare RAID va scrie, de obicei, toate copiile obiectului în paralel. Foarte adesea, există un singur procesor responsabil cu scrierea datelor. Într-un astfel de caz, scrierile de date pe diferite unități se vor suprapune. Acest lucru este cunoscut sub numele de scriere suprapusă sau scriere eșalonată. Prin urmare, o eroare care apare în timpul procesului de scriere poate lăsa copiile redundante în stări diferite. Mai rău, este posibil ca copiile să nu se afle nici în starea veche, nici în cea nouă. Totuși, înregistrarea se bazează pe faptul că datele originale se află fie în starea veche, fie în cea nouă. Acest lucru permite anularea modificării logice, dar puține sisteme de stocare oferă o semantică de scriere atomică pe un disc RAID.
Utilizarea unei memorii cache de scriere cu baterie poate rezolva această problemă, dar numai în cazul unei pene de curent.
Suportul tranzacțional nu este prezent în toate controlerele hardware RAID. Prin urmare, multe sisteme de operare îl includ pentru a proteja împotriva pierderii de date în timpul unei scrieri întrerupte. Novell Netware, începând cu versiunea 3.x, a inclus un sistem de urmărire a tranzacțiilor. Microsoft a introdus urmărirea tranzacțiilor prin intermediul funcției de jurnalizare din NTFS. Sistemul de fișiere WAFL de la NetApp îl rezolvă prin faptul că nu actualizează niciodată datele pe loc, la fel ca și ZFS.
Date nerecuperabile
Este posibil ca unele sectoare de pe un hard disk să fi devenit ilizibile din cauza unei greșeli. Unele implementări RAID pot rezolva această situație prin mutarea datelor în altă parte și marcarea sectorului de pe disc ca fiind necorespunzător. Acest lucru se întâmplă la aproximativ 1 bit din 1015 în cazul unităților de disc de clasă enterprise și la 1 bit din 1014 în cazul unităților de disc obișnuite. Capacitățile discurilor sunt în continuă creștere. Acest lucru poate însemna că, uneori, un RAID nu poate fi reconstruit, deoarece o astfel de eroare este găsită atunci când matricea este reconstruită după o defecțiune a discului. Anumite tehnologii, cum ar fi RAID 6, încearcă să rezolve această problemă, dar acestea suferă de o penalizare foarte mare la scriere, cu alte cuvinte, scrierea datelor devine foarte lentă.
Fiabilitatea cache-ului de scriere
Sistemul de discuri poate confirma operațiunea de scriere imediat ce datele se află în memoria cache. Nu trebuie să aștepte până când datele au fost scrise fizic. Cu toate acestea, orice întrerupere a alimentării cu energie electrică poate însemna o pierdere semnificativă a datelor aflate în coadă în această memorie cache.
În cazul RAID hardware, se poate utiliza o baterie pentru a proteja această memorie cache. Acest lucru rezolvă adesea problema. Atunci când se întrerupe alimentarea cu energie electrică, controlerul poate termina de scris memoria cache atunci când revine energia electrică. Totuși, această soluție poate eșua: bateria se poate fi uzat, alimentarea poate fi fost oprită prea mult timp, discurile pot fi mutate pe un alt controler, controlerul însuși poate ceda. Anumite sisteme pot face verificări periodice ale bateriei, dar acestea folosesc bateria însăși și o lasă într-o stare în care nu este complet încărcată.
Compatibilitatea echipamentelor
Formatele de disc de pe diferite controlere RAID nu sunt neapărat compatibile. Prin urmare, este posibil să nu fie posibilă citirea unei matrice RAID pe un hardware diferit. În consecință, o defecțiune hardware alta decât cea a discului poate necesita utilizarea unui hardware identic sau a unei copii de rezervă pentru a recupera datele.
Ce poate și ce nu poate face RAID
Acest ghid a fost preluat dintr-un topic de pe un forum legat de RAID. Aceasta a fost făcută pentru a ajuta la evidențierea avantajelor și dezavantajelor alegerii RAID. Acesta se adresează persoanelor care doresc să aleagă RAID fie pentru creșterea performanțelor, fie pentru redundanță. Acesta conține linkuri către alte discuții din forumul respectiv, care conțin recenzii anecdotice generate de utilizatori cu privire la experiențele lor cu RAID.
Ce poate face RAID
- RAID poate proteja timpul de funcționare. Nivelurile RAID 1, 0+1/10, 5 și 6 (și variantele lor, cum ar fi 50 și 51) compensează o defecțiune mecanică a unui hard disk. Chiar și după ce discul a cedat, datele din matrice pot fi utilizate în continuare. În loc de o restaurare îndelungată de pe bandă, DVD sau alt suport de backup lent, RAID permite restaurarea datelor pe un disc de înlocuire de pe ceilalți membri ai matricei. În timpul acestui proces de restaurare, datele sunt disponibile pentru utilizatorii aflați într-o stare degradată. Acest lucru este foarte important pentru întreprinderi, deoarece timpii de nefuncționare duc rapid la pierderea puterii de câștig. Pentru utilizatorii casnici, poate proteja timpul de funcționare a marilor rețele de stocare media, care ar necesita o restaurare îndelungată de pe zeci de DVD-uri sau de pe un număr destul de mare de benzi în cazul defectării unui disc care nu este protejat de redundanță.
- RAID poate crește performanța în anumite aplicații. Nivelurile RAID 0, 5 și 6 utilizează toate benzi. Acest lucru permite ca mai multe axe să crească ratele de transfer pentru transferurile liniare. Aplicațiile de tip stație de lucru lucrează adesea cu fișiere de mari dimensiuni. Acestea beneficiază foarte mult de stripingul discurilor. Exemple pentru astfel de aplicații sunt cele care utilizează fișiere video sau audio. Această rată de transfer este utilă, de asemenea, în cazul copiilor de rezervă de la disc la disc. RAID 1, precum și alte niveluri RAID bazate pe striping pot îmbunătăți performanța pentru modelele de acces cu multe accesări aleatorii simultane, cum ar fi cele utilizate de o bază de date cu mai mulți utilizatori.
Ce nu poate face RAID
- RAID nu poate proteja datele din matrice. O matrice RAID are un singur sistem de fișiere. Acest lucru creează un singur punct de eșec. Acest sistem de fișiere poate fi afectat de multe alte lucruri în afară de defectarea fizică a discului. RAID nu se poate apăra împotriva acestor surse de pierdere a datelor. RAID nu va împiedica un virus să distrugă datele. RAID nu va împiedica corupția. RAID nu va salva datele atunci când un utilizator le modifică sau le șterge din greșeală. RAID nu protejează datele împotriva defecțiunilor hardware ale oricărei componente în afară de discurile fizice. RAID nu protejează datele împotriva dezastrelor naturale sau provocate de om, cum ar fi incendiile și inundațiile. Pentru a proteja datele, acestea trebuie să fie salvate pe suporturi amovibile, cum ar fi DVD, bandă sau un hard disk extern. Copiile de rezervă trebuie păstrate într-un alt loc. RAID singur nu va împiedica ca un dezastru, atunci când (nu dacă) se produce, să se transforme în pierdere de date. Dezastrele nu pot fi prevenite, dar copiile de rezervă permit prevenirea pierderilor de date.
- RAID nu poate simplifica recuperarea în caz de dezastru. În cazul în care se utilizează un singur disc, acesta poate fi folosit de majoritatea sistemelor de operare, deoarece acestea sunt prevăzute cu un driver de dispozitiv comun. Cu toate acestea, majoritatea controllerelor RAID au nevoie de drivere speciale. Instrumentele de recuperare care funcționează cu un singur disc pe controllere generice vor avea nevoie de drivere speciale pentru a accesa datele din rețelele RAID. În cazul în care aceste instrumente de recuperare sunt slab codificate și nu permit furnizarea de drivere suplimentare, atunci o matrice RAID va fi probabil inaccesibilă pentru instrumentul de recuperare respectiv.
- RAID nu poate oferi un spor de performanță în toate aplicațiile. Această afirmație este valabilă mai ales în cazul utilizatorilor de aplicații desktop tipice și al jucătorilor. Pentru majoritatea aplicațiilor desktop și a jocurilor, strategia de buffer și performanța de căutare a discului (discurilor) sunt mai importante decât debitul brut. Creșterea vitezei brute de transfer susținut prezintă câștiguri reduse pentru astfel de utilizatori, deoarece majoritatea fișierelor pe care le accesează sunt oricum foarte mici. Striping-ul discurilor folosind RAID 0 crește performanța de transfer liniar, nu performanța de buffer și de căutare. Prin urmare, stripingul de discuri utilizând RAID 0 prezintă un câștig de performanță redus sau inexistent în majoritatea aplicațiilor și jocurilor de birou, deși există și excepții. Pentru utilizatorii de desktop și pentru jucătorii care au ca obiectiv performanțe ridicate, este mai bine să cumpere un singur disc mai rapid, mai mare și mai scump decât să utilizeze două unități mai lente/mici în RAID 0. Chiar și rularea celor mai noi, mai mari și mai performante discuri în RAID 0 este puțin probabil să sporească performanța cu mai mult de 10%, iar performanța poate scădea în anumite tipare de acces, în special în jocuri.
- Este dificil să mutați RAID pe un sistem nou. În cazul unui singur disc, este relativ ușor să mutați discul pe un nou sistem. Acesta poate fi pur și simplu conectat la noul sistem, dacă acesta are aceeași interfață disponibilă. Cu toate acestea, acest lucru nu este atât de ușor în cazul unei matrice RAID. Există un anumit tip de metadate care indică modul în care este configurat RAID. Un BIOS RAID trebuie să fie capabil să citească aceste metadate pentru a putea construi cu succes matricea și a o face accesibilă unui sistem de operare. Deoarece producătorii de controlere RAID folosesc formate diferite pentru metadatele lor (chiar și controllerele din familii diferite ale aceluiași producător pot folosi formate de metadate incompatibile), este aproape imposibil să mutați o matrice RAID pe un alt controler. Atunci când se mută o matrice RAID pe un sistem nou, trebuie să se planifice și mutarea controlerului. Având în vedere popularitatea controllerelor RAID integrate în placa de bază, acest lucru este extrem de dificil. În general, este posibil să mutați membrii matricei RAID și controllerele împreună. Produsele RAID software din Linux și Windows Server pot, de asemenea, să ocolească această limitare, dar RAID software are și altele (majoritatea legate de performanță).
Exemplu
Nivelurile RAID utilizate cel mai des sunt RAID 0, RAID 1 și RAID 5. Să presupunem că există o configurație cu 3 discuri, cu 3 discuri identice de 1 TB fiecare, iar probabilitatea de defecțiune a unei unități pentru o anumită perioadă de timp este de 1%.
Nivelul RAID | Capacitate utilizabilă | Probabilitatea de eșec exprimat în procente | Probabilitatea de eșec 1 din ... cazuri eșuează |
0 | 3 TB | 2,9701% | 34 |
1 | 1 TB | 0,0001% | 1 milion de euro |
5 | 2 TB | 0,0298% | 3356 |