Log in


Forgot your password?
prijatelji LUGoNSa
gnu.gif
linuxzasve.jpg
hulk.jpg
 
You are here: Home / members / Vladimir Atanackovic / U RAID-ovom gnezdu: trostruki salto

U RAID-ovom gnezdu: trostruki salto

by Vladimir Atanackovic last modified Mar 10, 2011 01:36 AM
Razgovarali smo o konceptu RAID-a, o konfiguracijama RAID-a, počev od RAID-0 i RAID-1 konfiguracija, do razgovora o dvostrukim konfiguracijama RAID-5 i RAID-6, koje smo razmatrali. Prisetimo se da "ugneždeni" (eng: nested) RAID omogućava da standardne RAID-konfiguracije, kakve su RAID-0, RAID-1, RAID-5 i RAID-6, kombinujemo u više nivoa. Na primer, RAID-0 i RAID-1 mogu biti kombinovani, kako bismo dobili RAID-10. Ali, višestruki RAID ne ograničava broj nivoa RAID-a. Šta bi se desilo kada bismo probali da RAID kombinujemo kroz tri nivoa? Linux Magazine, Jeffrey B. Layton, 21.03.2011.

U RAID-ovom gnezdu: trostruki salto
Linux Magazine, Jeffrey B. Layton, 21.03.2011.

Do sada smo pominjali jednostavne, i dvostruke RAID-konfiguracije. Ali, sami smo sebi nametnuli ograničenja dvostrukih RAID-konfiguracija u tim razgovorima. Ne bismo li mogli imati tri ili više nivoa RAID-a? Odgovor glasi: možemo; u ovom članku razmatramo konfiguraciju koju u žargonu zovemo "trostruki salto", zabavljajući se kroz par primera.

"Taj lik napravio najneverovatniji zaron... takozvani 'trostruki salto'. Najteži zaron koji sam u životu video." "Ko je bio taj lik?" "Moja malenkost." "Šališ se?" "Ne šalim se sa zaronima. Posebno ne s takvim. Umalo sam poginuo" - pričaju Rodney Dangerfield i M. Emmet Walsh, u filmu "Nazad u školu".

Uvod u RAID "trostrukog salta"

U prethodna tri članka, razgovarali smo o konceptu RAID-a, o konfiguracijama RAID-a, počev od RAID-0 i RAID-1 konfiguracija, do razgovora o dvostrukim konfiguracijama RAID-5 i RAID-6, koje smo razmatrali. Prisetimo se da "ugneždeni" (eng: nested) RAID omogućava da standardne RAID-konfiguracije, kakve su RAID-0, RAID-1, RAID-5 i RAID-6, kombinujemo u više nivoa. Na primer, RAID-0 i RAID-1 mogu biti kombinovani, kako bismo dobili RAID-10. Ali, višestruki RAID ne ograničava broj nivoa RAID-a. Šta bi se desilo kada bismo probali da RAID kombinujemo kroz tri nivoa? Da li bismo dobili bolje performanse, zajedno s više redundancije podataka? Ili možemo pustiti kontroleru da preuzme svu kontrolu nad RAID-konfiguracijom kakva može izdržati gubitke velikog broja diskova, a da pri tome ne izgubimo pristup podacima?

Da budem potpuno iskren, nisam do sada video trostruke RAID-konfiguracije u radnim uslovima (eng: production) ali sam siguran da postoje, negde, i još sigurniji da se razne takve konfiguracije testiraju. Postoje razlozi da se ovako nešto napravi, a ako ste poredili standardne jednostavne RAID-konfiguracije s dvostrukim konfiguracijama, razumete i zašto bi se to radilo (više o ovome nešto kasnije u tekstu). Bilo kako bilo, s rastom snage procesora, uključujući ovde i procesore namenjene RAID-u, lako je zamisliti i trostruke RAID-konfiguracije (posebno kada ih izvodite na veoma bogatim skladištima).

Previše trostrukih kombinacija RAID-konfiguracija postoji da bismo ih sve pomenuli ovom prilikom, pa će ovaj članak da opiše dve interesantne, i pomene još par neobičnih trostrukih RAID-konfiguracija.

RAID-100

Ovaj trostruka RAID-konfiguracija u "gnezdu" je dobar početak našeg proučavanja trostrukih RAID-konfiguracija. Ona polazi od popularne RAID-10 konfiguracije i dodaje još jedan RAID-0 nivo. Setimo se da nivo koji omogućava nabolje performanse uvek želimo da smestimo u "vanjski prsten" (eng: last) "gnezda" RAID-konfiguracije. Osnovni razlog je to što uvek želimo da smanjimo broj diskova koji učestvuje u popravci (eng: rebuild) u slučaju da izgubimo funkcionalnost nekog diska.

RAID-100 zahteva nekoliko (a najmanje dve) RAID-10 konfiguracije, te ih kombinuje u RAID-0. Ispod se nalazi slika jednostavne RAID-100 konfiguracije, s dvanaest diskova:



Ovo je samo jednostavna ilustracija jedne od mogućih RAID-100 konfiguracija. Prisetimo se da RAID u gnezdu kreće s najnižeg nivoa (broj koji je kranje levo u brojanju RAID-a) ka najvišem nivou (broj koji je krajnje desno u brojanju RAID-a). Tako RAID-100 počinje s RAID-1 konfiguracijom na najnižem nivou (najbliže diskovima) i onda kombinuje RAID-1 parove s RAID-0 na srednjem nivou, što ishoduje u nekoliko RAID-0 grupa (najmanje dve). Onda se te "srednje" grupe RAID-a kombinuju u finalnu RAID-0 grupu (konačnu RAID-0 grupu).

Jedno od očiglednih pitanja koje se nameće je zašto korisititi višestruke RAID-0 slojeve mesto prostog kombinovanja svih RAID-1 parova u konačnu RAID-0 grupu? To je dobro pitanje, a konačni odgovor ovisi o tome šta zapravo želimo postići s RAID-konferencijom. Kao što smo već i pomenuli, jedan od razloga je i to što bismo hteli bolje iskorisititi više RAID-kartica. Upotrebili bismo više RAID-kartica, svaka podešena u vlastitoj RAID-10 grupi, i onda ih kombinovali sa softverskom RAID-konfiguracijom na najvišem nivou. Kako se vidi na prvoj slici, imali bismo tri RAID-kartice, svaka s vlastitiom RAID-10 grupom, koje se softverski kombinuju u RAID-0 (u linuksu označen s "md"), na najvišem nivou.

Upotrebom više RAID-kartica popravljamo prosek performansi RAID-konfiguracije jer, jednostavno, tada koristimo više procesora zaduženih za RAID. Ovo može biti još značajnije ako neki disk prestane da radi, jer svaka pojedinačna kartica može brže da popravi stanje nastalo padom rada diska zato što se ne upotrebljava za sve funkcije RAID-konfiguracije u posmatranom nizu diskova.

Kapacitet RAID-100 konfiguracije lako je izračunati ako pretpostavimo da svi upotrebljeni diskovi imaju isti kapacitet.

Kapacitet = min(veličina diska) * (Broj RAID-0 grupa srednjeg sloja) * (Broj RAID-1 parova u svakoj od RAID-0 grupa)

Za sliku jedan, ovo znači sledeće:

Kapacitet = min(veličina diska) * (3) * (2)
Kapacitet = min(veličina diska) * 6


Prostor u skladištu koje tako napravimo lako je izračunati:

Efikasnost skladišta = 1 / (Broj diskova u RAID-1 parovima)

Za sliku 1. prostor u skladištu je

Efikasnost skladišta = 1 / (2)
Efikasnost skladišta = 0.50 (50%)


Kako je na najnižem nivou RAID-1, efikasnost skladišta je 50% ako pretpostavimo da se u RAID-1 konfiguraciji nalaze po dva diska (ovo je tipično).

Primetimo da je u RAID-100 konfiguraciji potrebno imati najmanje osam diskova, ako želimo da imamo više od jedne RAID-0 grupe u srednjem sloju. Ovo znači da ćemo četiri RAID-1 para kombinovati u dve RAID-0 grupe u srednjem sloju (dakle po dve RAID-1 grupe za jednu RAID-0 grupu u srednjem sloju). Potom dve RAID-0 grupe srednjeg sloja kombinujemo u jednu RAID-0 konfiguraciju na najvišem nivou.

Da bismo "izbalansirali" srednji RAID-sloj, odnosno da bismo imali isti broj RAID-1 parova u svakoj RAID-0 grupi srednjeg sloja, moramo uvećati ukupan broj diskova za broj diskova potreban za svaki od srednjih RAID-0 slojeva. U slučaju prikazanom na slici 1, tu su četiri diska - tri RAID-1 para. Da smo upotrebljavali šest diskova u svakoj od srednjih RAID-0 grupa (tri RAID-1 para), morali bismo uvećati RAID-100 za šest diskova, kako bismo održali "balans" u konfiguraciji.

Tolerancija na pad rada (eng: fault tolerance) RAID-100 konfiguracije je ograničena na jedan disk. Ako izgubimo jedan disk u RAID-1 paru, još uvek imamo pristup podacima. Ali, ako izgubimo i drugi disk, RAID-1 par pada, i čitava RAID-100 konfiguracija se ruši. Svakako, setimo se da je RAID-10 osmišljen da postiže veoma dobre performanse, uz male kvantitete redundancije podataka. RAID-100 prosto prati taj pristup.

Tabela 1, dana ovde, ispod, donosi brz pregled RAID-100 konfiguracije:

Nivo RAID-aZa ProtivEfikasnost skladištenjaMinimalan broj diskova
RAID-100

- Izuzetne performanse čitanja.
- Izuzetne performanse pisanja, zbog serijske postavke, RAID-0 (eng: stripping). Ipak, RAID-1 malo smanjuje performanse.
- Prihvatljiva redundancija (toleriše se gubitak abilo kog diska).
- Samo je jedan disk potreban za oporavak nakon pada.

- Moramo upotrebiti najmanje osam diskova.
- Niska efikasnost skladištenja (50%).

-Možemo izgubiti samo jedan disk pre gubitka podataka.
-

Efikasnost skladišta = 1 / (Broj diskova u RAID-1 parovima) 8


RAID-160

U članku o "ugneždenom" RAID-u, RAID-5 i RAID-6 konfiguracijama, pokazali smo kako u nekim postavkama možemo priuštiti gubitak i po pet diskova istovremeno. To je zapanjujuće dobra zaštita podataka! Štaviše, performanse čitanja u RAID-16 konfiguraciji su odlične, ali performanse pisanja, i efikasnost skladištenja mogu biti poprilično slabi. Kao primer trostrukog ugneždenog RAID-a koji ima odmerene i performanse i redundanciju, napravio sam trostruku RAID-konfiguraciju, RAID-160, koja nadgrađuje sjajnu moć redundancije RAID-16 konfiguracije i nadoknađuje po pitanjima performansi i efikasnosti skladištenja.

RAID-160 počinje s RAID-1 parovima na najnižem nivou (pretpostavimo da se radi o RAID-1 grupama od po samo dva diska). Potom, srednji sloj (RAID-6) uzima po četiri ovakva para za RAID-6 grupe srednjeg sloja (trebamo bar dve RAID-6 grupe u srednjem sloju). Najviši RAID-sloj kombinuje srednje RAID-6 grupe u RAID-0 kako bi dobio malo na performansama, i, nadajmo se, na efikasnosti skladištenja, takođe. Slika 2. prikazuje najmanju RAID-160 konfiguraciju sačinjenu od šesnaest diskova.

 



Bila bi to samo predložena konfiguracija koja opisuje kako postaviti RAID-160. Prisetimo se, opet, da slojeve posmatramo od najnižeg nivoa (broj kranje levo u oznaci RAID-a) to najvišeg nivoa (broj kranje desno u oznaci RAID-a). Tako RAID-160 počinje s RAID-1 slojem na najnižem nivou (najbližem diskovima) kojima ima parove u RAID-1 grupama (za koje pretpostavljam, dakle, parove). Potom su RAID-1 parovi kombinovani u RAID-6 konfiguraciju u srednjem sloju, kako bi se napravile najmanje dve potrebne RAID-6 grupe. Kako RAID-6 zahteva najmanje četiri "diska", trebamo najmanje četiri RAID-1 para da bismo kreirali RAID-6 grupe srednjeg sloja. Konačno, na najvišem nivou, RAID-6 grupe kombinuju se u RAID-0 (jedinstvenu RAID-0 grupu).

Kao i kada je RAID-100 u pitanju, ova konfiguracija ima smisla kada koristimo više RAID-kartica, sposobnih da rade u RAID-16 načinu rada. U slučaju situacije na slici 2, koristićemo dve RAID-kartice sposobne za RAID-16 i onda ih ukombinovati na najvišem nivou u softverski RAID-0 (to jest RAID koji radi unutar linuksovog kernela). Ovo ima smisla za RAID-160, jer RAID-6 zahteva mnogo procesorske snage, a i deljenje RAID-6 grupa na zasebne procesore koji obrađuju RAID pomaže krajnjim performansama RAID-a.

Slika 2. prikazuje najmanji broj diskova koje možemo koristiti u RAID-160 konfiguraciji, i ona ukazuje na jedan o problema troslojnih RAID-konfiguracija: potrebu za velikim brojem diskova. Upotrebljavati šesnaest diskova da bismo napravili RAID-160 konfiguraciju nije baš ni jeftino, a morate se pobrinuti i za neku vrstu kućišta u koju možete smestiti toliko diskova (ne ide baš lako s kućištima za kućnu upotrebu, ali je svakako moguće).

Kapacitet RAID-160 konfiguracije lako se izračunava, uz pretpostavku da svi diskovi imaju isti kapacitet

Kapacitet = min(veličine diskova) * (Broj RAID-1 grupa u svakoj RAID-6 grupi srednjeg sloja - 2) * (Broj RAID-0 grupa najvišeg nivoa)

Za sliku 2, ovo znači:

Kapacitet = min(veličina diska) * (4 - 2) * (2)
Kapacitet = min(veličina diska) * 4


Ukupni prostor u skladištu se, takođe, lako izračuna:

Efikasnost skladišta = (Broj grupa u svakoj RAID-6 grupi srednjeg sloja - 2) / ( (Broj diskova u RAID-1) * (Broj grupa u svakoj RAID-6 grupi srednjeg sloja) )

Da se prisetimo, za RAID-16, efikasnost skladišta je:

Efikasnost skladišta = (Broj RAID-1 grupa - 2) / ( (Broj RAID-1 grupa) * (Broj diskova u RAID-1) )

što je poprilično blizu efikasnosti skladišta za RAID-160.

Za sliku 2, konačni rezultat efikasnosti skladišta je:

Efikasnost skladišta = (4 - 2) / ( (2) * (4) )
Efikasnost skladišta = 2 / 8
Efikasnost skladišta = 0.25 (25%)


Ova efikasnost ista je kao i za efikasnost RAID-16 konfiguracije s osam diskova koja koristi četiri RAID-1 para, i koristi jedinstven RAID-6 na najvišem nivou. Nismo dobili na efikasnosti skladištenja, ali nismo to ni očekivali.

Primetimo da je minimalan broj diskova u RAID-160 konfiguraciji - šesnaest - ako želimo da imamo više od jedne RAID-6 grupe u srednjem sloju (nema nekog smisla koristiti RAID-0 kog čini samo jedna RAID-6 grupa srednjeg sloja). ovo znači da moramo imati osam RAID-1 parova koji čine dve RAID-6 grupe u srednjem sloju (po četiri RAID-1 grupe, dakle, za konačne RAID-0 grupe). Potom RAID-6 grupe srednjeg sloja kombinujemo u RAID-0 na najvišem niovu. Rezultat kaže da trebamo najmanje šesnaest diskova za RAID-160.

Da bismo "izbalansirali" srednji RAID-6 sloj (to jest da bismo imali podjednak broj RAID-1 parova po RAID-6 grupi) moramo uvećavati konačni broj diskova za broj diskova u svakoj od pojedinačnih RAID-6 grupa srednjeg sloja. U slučaju prikazanom na slici 2, radi se o osam diskova.

Tolerancija na pad RAID-160 konfiguracije je bazirana na RAID-16 konfiguraciji, i iznosi - pet diskova. možete izugubiti dva RAID-1 para unutar jedne RAID-6 grupe, a i dalje imati pristup podacima. Potom možete ostati i bez petog diska, ako je taj disk član trećeg RAID-1 para iste RAID-6 grupe. Ako izgubite i njegovo ogledalo (eng: mirror), odnosno i šesti disk, gubite i RAID-6 grupu, pa RAID-0 na najvišem niovu tada - pada.

Tabela 2. pokazuje kratak pregled RAID-160 konfiguracije s par napomena:

Nivo RAID-a
ZaProtiv
Efikasnost skladištenja

Minimalan broj diskova
RAID-160

- Izvrsne performanse čitanja, kojima doprinose i RAID-1 i RAID-6 (paritet se ne upotrebljava prilikom čitanja).
- Izvrsna redundancija (toleriše se gubitak bilo kojih pet diskova).
- U slučaju pada diska, samo se par palog diska koristi za popravku.

- Dobre performanse pisanja, zbog upotrebe RAID-0.

- Moramo koristiti najmanje 16 diskova.
- Efikasnost skladištenja može biti veoma niska (niža no za RAID-1).
Efikasnost skladišta = (Broj grupa u svakoj RAID-6 grupi srednjeg sloja - 2) / ( (Broj diskova u RAID-1) * (Broj grupa u svakoj RAID-6 grupi srednjeg sloja) ) 8


Druge interesantne trostruke ugneždene RAID-konfiguracije

Dva pokazana primera nalaze se na suprotnim krajevima spektruma ugneždenih RAID-konfiguracija. Prva, RAID-100, ima malu redundanciju (jedan disk) ali ima izuzetne performanse pisanja i veoma dobru efikasnost skladištenja. Druga ima izuzetnu redundancije (pet diskova) ali performanse pisanja su tek primerene, dok efikasnost skladištenja i nije tako dobra. Ove dve konfiguracije ilustruju kako možemo mešati standardne nivoe RAID-a (RAID-0, RAID-1, RAID-5 i RAID-6) na raziličite načine, praveći različite konfiguracije, ali uvek se valja upitati kada svaka od njih ima smisla.

Na primer, da li RAID-000 ima smisla? Nije li to isto što dobijamo s RAID-0? (RAID-kontroler viška ne daje performansama dodatnu snagu)

Kao što je već pomenuto, tri sloja u ugneždenom RAID-u mogu zahtevati veliki broj diskova za minimalne konfiguracije. Na primer, RAID-666 (istinski najzlobnija od svih ugneždenih RAID-konfiguracija) zahteva četiri diska po RAID-6 grupi na najnižem nivou, koje slede četiri RAID-6 grupe (svaka koristi RAID-6) srednjeg sloja, koje se konačno kombinuju u RAID-6 na najvišem nivou. Dolazimo do cifre od najmanje 64 diska potrebna da se napravi RAID-666 konfiguracija (4*4*4).

Druge trostruke ugneždene RAID-konfiguracije mogu napraviti užas po pitanju efikasnosti skladišta, ali i čuda po pitanju redundancije. Na primer, RAID-111 koristi tri nivoa ogledala (eng: mirroring). Najmanja ovakva konfiguracija zahteva osam diskova (2*2*2) od kojih samo jedan skladišti stvarne podatke (preostalih sedam su ogledala podataka). To je efikasnost skladištenja od samo 12.5%! No, možete izgubiti čak sedam diskova pre no što ostanete bez podataka.

Trostruke ugneždene RAID-konfiguracije moraju biti pažljivo dizajnirane i razmotrene pre nego li budu efektivno upotrebljene. U suprotnom, moglo bi vam se desiti da ne podignete redundanciju (ili performanse) dalje od neke dvostruke RAID-konfiguracije, samo povećavajući broj diskova potreban za konfiguraciju. Neke druge, opet, mogu postići željene osobine.

Sažetak

Kao što je i Rodney Dangerfield rekao, "Ne šalim se sa zaronima. Posebno ne s ovim. Umalo me ubio...", tako nema šale ni s ugneždenim trostrukim RAID-konfiguracijama, jer one mogu ubiti vaše efikasnosti skladištenja ili performanse, ili redundanciju. One moraju biti pažljivo dizajnirane, starajući se pri tome da donose stvarne prednosti nad dvostrukim i jednostavnim RAID-konfiguracijama. Štaviše, većina ih zahteva veliki broj diskova, i više RAID-kartica, poskupljujući cenu konfiguracije tako.

Dva primera opisana u ovom članku, RAID-100 i RAID-160, pokazuju neke krajnje primere šta možemo postići pomoću trostrukih RAID-konfiguracija. RAID-100 nadgrađuje RAID-10 i donosi konfiguraciju sjajnih performansi. RAID-160 počinje s konfiguracijom koja pazi na redundanciju, RAID-16, i dodaje RAID-0, kako bi pokušala popraviti performanse i efikasnost skladištenja. Obe konfiguracije zahtevaju priličan broj diskova za izvođenje minimalnih konfiguracija koje dosežu ekstreme pri RAID-160 konfiguraciji od šesnaest diskova.

Tipične trostruke ugneždene RAID-konfiguracije koriste softverski RAID na najvišem nivou. Oba primera mogu biti izvedena upotrebom nekoliko RAID-kartica na niža dva nivoa, uz softverski RAID na najvišem nivou (za konfiguraciju prikazanu na slici 1. trebamo tri RAID-kartice, a za onu prikazanu na slici 2. trebamo dve kartice). Ovaj pristup može biti veoma efikasan jer istovremeno upotrebljavamo više kartica što može popraviti efikasnost i protok podataka kroz celokupnu RAID-konfiguraciju, kao i skratiti vreme obnove nakon pada diskova. Ako upotrebljavamo na desktopima četiri do šest jezgara, upotreba softverskog RAID-a na najvišem nivou nije lošš pristup jer jedno jezgro s lakoćom može da opslužuje funkcije potrebne RAID-u dok preostala jezgra rade nešto drugo.

Nismo još završili s RAID-om (iako možda već sada vrištite na sam pomen RAID-a). U sledećem članku, bavićemo se softverskim alatkama za RAID pod linuksom, mdadm, opisujući naprednije funkcije, i neke od njenih jedinstvenih osobina.

Document Actions