Стандардни RAID нивои

Из Википедије, слободне енциклопедије

RAID представља скуп физичких дискова који оперативни систем види као један логички уређај. RAID је раније представљао редудантан низ јефтиних дискова (inexpensive) а онда је преименован у редудантан низ независних дискова (independent). Подаци у RAID-у су дистрибуирани преко физичких уређаја. RAID користи технике дељења података на траке, пресликавања и парности.

Дељење података на траке (data striping) представља сегментацију логички секвенцијалних података, тако да се сегменти конкурентно уписују на више физичких уређаја (дискова у RAID-у), по кружном додељивању. Ово је корисно када процесор може да чита или уписује податке брже него што један диск може да их преда или прими. Док се податак преноси са првог диска, други диск може да проналази следећи сегмент.

  • Предности: перформанса и пропустљивост. У неким конфигурацијама RAID-а (RAID 5 са диском за парност) ако један диск откаже и обори систем, подаци могу да се обнове користећи друге дискове у низу.
  • Мане: у неким конфигурацијама RAID-а (RAID 0) ако један диск откаже, та датотека и сви остали подаци, биће изгубљени, зато што су уписани по деловима, подељени на више дискова у оквиру RAID-а.

RAID 0[уреди]

RAID 0

RAID 0 једнако дели податке на траке преко свих дискова (два или више). Дељење података на траке се врши по кружном додељивању и позиционирање дискова је паралелно. RAID 0 нема редудантности и користи се за повећавање брзине односно перформансе. Вишеструки захтеви за подацима вероватно нису на истом диску.

Може се користити само да би се од више мањих физичких дискова направило мање већих виртуелних дискова али се RAID 0 углавном користи код играчких система, где интегритет података није толико битан. Са овим RAID-ом добитак на перформанси је минималан.


RAID 0 може да се прави од дискова различитих величина, али простор за складиштење који низу додаје сваки диск је ограничен величином најмањег диска. Пример: дискови су од 750GB и 1TB. Величина RAID-а ће бити 1500GB (2 пута по 750GB).


Поузданост RAID-а 0 једнака је просечној поузданости сваког диска, подељеној бројем дискова у скупу.

MTTF_R =\frac{MTTF_D}{N}

Перформанса[уреди]

RAID 0 се такође користи и рачунаским системима за играње игара где се захтева боља перформанса и где интегритет података није толико битан. Међутим, у пракси су игре показале да су добици перформансе RAID-а 0 минимални, са изузетком неких десктоп апликација.[2][3] Постоји артикал који је проверио ове тврдње и закључује: "Дељење података на траке не повећава перформансу увек (у неки одређеним ситуацијама ће чак бити спорији од не-RAID система), али у већини случајева даје значајно побољшање у перформанси."[4]

RAID 1[уреди]

RAID 1

Код RAID-a 1 се редудантност постиже једноставним дуплирањем свих података. Користи се стратификација података, као и у RAID-у 0, али у овом случају свака логичка трака је пресликана на два посебна физичка диска, тако да сваки диску низу има свој диск - одраз у огледалу (mirror) који садржи исте податке. RAID 1 такође може да се имплементира и без дељења података на траке мада је то мање уобичајено.


Предности:

  • Захтев за читање може да се опслужи помоћу било ког од два диска који садрже тражене податке, који има минимално време позиционирања плус ротационо кашњење.
  • Захтев за уписивање тражи да обе одговарајуће траке буду ажуриране, али то може да се уради паралелно. Према томе, перформансу уписивања диктира спорије од два уписивања (односно, оно које обухвата веће време позиционирања, плус ротационо кашњење). Међутим, нема "казне уписивања" код RAID-а 1.
  • Опоравак од отказа је једноставан. Када уређај откаже, подацима одмах може да се приступи на другом уређају.

Недостаци:

  • Цена. RAID 1 захтева двоструки простор на дисковима за логички диск који подржава. Због тога се конфигурација ограничава на уређаје који складиште системски софтвер и податке, као и друге критичне датотеке. У тим случајевима, обезбеђује се резервна копија у реалном времену за све податке, па у случају отказа диска, сви критични подаци су и даље одмах расположиви.


Пример поuзданости RAID-а 1:

Два идентична диска са недељном вероватноћом отказа од 1:500. Под претпоставком да се неисправни дискови замењују недељно, вероватноћа отказа целе инсталације је 1:250000 (вероватноћа отказа RAID-а 1 у целини је производ вероватноћа отказа оба диска).

\frac{1}{500}*\frac{1}{500}=\frac{1}{250000}=0.0004%

Перформансе[уреди]

Пошто сви подаци постоје у две или више копија, свака са својим засебним хардвером, перформанса читања расте линеарно са бројем копија. RAID 1 низ од по два диска може да чита на два различита места у исто време, мада већина имплементација RAID-а 1 ово не ради. [1][тражи се извор од 11. 2013.]. Да би се максимизовали добици перформансе RAID-а 1, препоручују се да се користе независни контролери дискова, један за сваки диск. Неки овакву праксу називају splitting или duplexing (два низа дискова) или multiplexing(низови са више од 2 диска). Приликом читања, може се независно приступити и једном и другом диску и захтевани сектори се могу делити једнако по дисковима. За нормалну слику два диска, ово би, у теорији, дуплирало брзину преноса приликом читања. Ово очигледно време приступа низу би било дупло мање него време приступа јеном диску. За разлику од RAID-а 0, ово би важило за све патерне, као и за податке који су доступни на свим дисковима. У пракси, потреба да се помере дискови у следећи блок (да би прескочили блок који је већ био прочитан од стране других дискова), може ефективно ублажити предност брзине за секвенцијалан приступ. Перформанса читања се може додатно побољшати додавањем дискова слици. Многи старији IDE RAID-1 контролери читају само са једног диска у пару, тако да њихова перформанса читања је једна перформанси читања једног диска. Неке старији RAID 1 имплементације читају оба диска истовремено да би поредили податке и детектовали грешке. Детекција грешака и исправљање истих на модерним дисковима чити ово мање корисним у окружењима која захтевају нормалну приступачност. Приликом писања, низ се понаша као један диск, и све слике морају бити уписане са подацима. Ово су случајеви са најбољом перформансом и оптималним патернима за приступ.

RAID 2[уреди]

RAID 2

RAID 2 и RAID 3 користе паралелну технику приступа. У низу са паралелним приступом, сви дискови чланови учествују у извршењу сваког улазно-излазног захтева. Код RAID-а 2 дискови су синхронизовани.

Као и код других RAID-ова, користи се дељење података на траке. У случају RAID-а 2 и 3, траке су веома мале. Најчешће величине једног бајта. Код RAID-а 2 прорачунава се код за исправљање грешака над одговарајућим битовима на сваком диску са подацима. Ти битови кода се складиште на одговарајућим позицијама на вишеструким дисковима за парност. За исправљање грешака се користи Хамингов код, који исправља једноструке грешке и детектује двоструке грешке битова.

Иако RAID-2 захтева мање дискова од RAID-а 1, он има много редудантности и веома је скуп. RAID 2 би могао да буде ефикасан избор само у окружењу у коме се појављује много грешака. Имајући у виду поузданост појединачних дискова и њихових уређаја, RAID 2 се не имплементира.

RAID 3[уреди]

RAID 3

Огранизација RAID-а 3 је доста слична организацији RAID-а 2. Разликују се у томе што, без обзира на то колико је велик низ дискова, RAID 3 има само један редудантан диск. Уместо кода за исправљање грешака, прорачунава се једноставан бит парности за сваки скуп одговарајућих битова или бајтова.

Редудантност[уреди]

Подаци на диску који откаже могу да се реконструишу из "преживелих" података и информација о парности. Реконструкција података је врло једноставна. Ako imamo niz od 5 urеђаја у коме дискови од X0 до X3 садрже податке, а X4 је диск за парност, онда се парност за i-ти бит израчунава на следећи начин:

 \mathbf{X4}_{(i)} = \mathbf{X3}_{(i)}  \;\oplus\; \mathbf{X2}_{(i)}  \;\oplus\; \mathbf{X1}_{(i)}  \;\oplus\; \mathbf{X0}_{(i)}

Рецимо да је уређај X1 отказао. Ако додамо \mathbf{X4}_{(i)}  \;\oplus\; \mathbf{X1}_{(i)} обема странама претходне једначине, добијамо:

 \mathbf{X1}_{(i)} = \mathbf{X4}_{(i)} \;\oplus\; \mathbf{X3}_{(i)} \;\oplus\; \mathbf{X2}_{(i)} \;\oplus\; \mathbf{X0}_{(i)}

Закључујемо да се садржај сваке траке података на диску X1 може обновити из садржаја одговарајућих трака са осталих дискова из низа. Овај принцип важи за RAID нивое од 3 до 6.

Перформанса[уреди]

RAID 3 може да достигне велике брзине преноса јер су подаци издељни на веома мале траке. Сваки улазно-излазни захтев обухвата пренос података са свих дискова са подацима. Побољшање перформансе се посебно примећује код великих преноса. Само један улазно-излазни захтев може да се изврши у тренутку што значи да перформанса трпи губитке у окружењу орјентисаном на трансакције.

RAID 4[уреди]

RAID 4

RAID нивои од 4 до 6 користе технику независног приступа. То значи да сваки диск ради независно, тј. да се засебни улазно-излазни захтеви могу задовољавати паралелно. Због тога је овај ниво RAID-а добар код велике учесталости улазно-излазних захтева.

Траке података су релативно велике (на блоковском су нивоу). Парност бит по бит се рачуна преко трака на сваком диску и складишти се на диску за парност.

У примеру са слике, захтев за читање блока А1 ће обрадити диск 0. Ако се у исто време изда захтев за читање блока B1, захтев ће морати да сачека, али би се захтев за читање Б2 могао обрадити на диску 1 у време читања блока А1.

RAID 5[уреди]

RAID 5

RAID нивоа 5 је доста слично организован као и RAID нивоа 4. Ралика је у томе што RAID 5 расподељује траке за парност по свим дисковима. Углавном је подела по шеми са кружним додељивањем. Расподелом трака за парност по свим уређајима се избегава потенцијално уско грло које се налази у RAID-у 4.

RAID 5 се обично користи у мрежним серверима.

RAID 6[уреди]

RAID 6 индентичан RAID-у 5 осим што има други блок бита барности

RAID 6 проширује RAID 5 тако што има један блок бита парности више и тиме користећи дељење подака на блокове са два блока битова парности подељена на све дискове.

Код RAID-а 6 се врше два различита прорачуна парности и складиште се у засебним блоковима на различитим дисковима. Због тога се низ дискова RAID-а 6, чији кориснички подаци захтевају N дискова, састоји од N+2 дискова.

Шема RAID-а нивоа 6 је илустрована на слици 1 "RAID 6". P и Q представљају два различита алгоритма за проверу података. Један је прорачун ексклузивног-ИЛИ који се користи у нивоима RAID 4 и 5, а други је независтан алгоритам за проверу података. То омогућава да се обнове подаци чак и ако откажу два диска који садрже корисничке податке.

Да би се изгубили подаци у RAID-у 6 потребно је да у интервалу средњег времена за поправку (MTTR) откажу чак 3 диска, што значи да RAID 6 обезбеђује веома високу расположивост података. Са друге стране, RAID 6 има значајно кажњавање уписивања зато што свако уписивање утиче на два блока парности.

Перформанса[уреди]

RAID 6 не плаћа пенал за операције читања али плаћа пенал за операције писања због горе наведених прорачуна битова парности. Перформанса варира значајно у зависности од тога како је RAID 6 имплементиран у поизвођачкој архитектури складиштења - у софтверу, фирмверу или користећи фирмвер и специјализоване ASIC-је за интензивне прорачуне битова парности. Може бити брз као RAID 5 систем са једним диском мање (истим бројем дискова за податке).[2]

Имплементација[уреди]

По SNIA-и (Storage Networking Industry Association), дефиниција RAID-а 6 је: "Од сваке форме RAID-а која наставља да извршава захтеве за читање и писање до свих виртуелних дискова RAID низова у присуству било ког од два конкурентна отказа дискова. Неколико метода, укључујући и двоструку проверу прорачуна података битова парности и "Reed-Solomon" корекцију грешака, ортогоналну проверу података битова парности и дијагоналну парност битова, се користе ради имплементирања RAID нивоа 6.""[3]

Прорачуни парности[уреди]

Два различита "синдрома" морају да се прорачунају да би се дозволио отказ једног од два диска. Један од њих, P (на слици) може бити једноставна НИЛИ функција података са трака, као код RAID-а 5. Други, независни "синдром" је компликованији и захтева помоћ математичке теорије поља.

Да би се изборили са овим, уводимо Галоисово поље, GF(m), као m=2^k, где је GF(m) \cong F_2[x]/(p(x)) за погодан неуништив полином p(x) степена k. Део података се може записати као d_{k-1}d_{k-2}...d_0 у бази 2 где је сваки d_i или 0 или 1. Ово је изабрано да одговара елементу d_{k-1}x^{k-1} + d_{k-2}x^{k-2} + ... + d_1x + d_0 у Галоисовом пољу. НекаD_0,...,D_{n-1} \in GF(m) одговара тракама података дискова шифрованих као елементи поља у овом случају (у пракси би вероватно били сломљени на делиће величине бајтова). Ако је g неки генератор поља и ако \oplus означава додатак у пољу док конкатенација означава мултипликацију, онда \mathbf{P} и \mathbf{Q} могу бити прорачунати као што следи (n означава број података на диску):


\mathbf{P} = \bigoplus_i{D_i} = \mathbf{D}_0 \;\oplus\; \mathbf{D}_1 \;\oplus\; \mathbf{D}_2 \;\oplus\; ... \;\oplus\; \mathbf{D}_{n-1}

\mathbf{Q} = \bigoplus_i{g^iD_i} = g^0\mathbf{D}_0 \;\oplus\; g^1\mathbf{D}_1 \;\oplus\; g^2\mathbf{D}_2 \;\oplus\; ... \;\oplus\; g^{n-1}\mathbf{D}_{n-1}

За рачунарког научника, добар начин размишљања је да \oplus представља НИЛИ операцију над битовима и да је g^i акција линеарног повратка шифт регистра на деловима података. Због тога, у горе наведеној формули,[4] израчунавање P је само НИЛИ функција сваке траке. Израчунавање Q је НИЛИ шифтоване верзије сваке траке.

Математичку, генератор је елемент поља тако да је g^i различито за свако ненегативно i које задовољава i < n.

Ако се изгуби један диск података, подаци се могу поново израчунати из P као код RAID-а 5. Ако се избуге два диска података или диск података и диск који садржи P, онда се подаци реконструишу из P и Q или само из Q, односно, користећи комплекснији процес. Одређивање детаља је веома тешко са теоријом поља. Претпоставимо да су D_i и D_j изгубљене вредности са i \neq j. Користећи остале вредности из D, константе A и B се могу пронаћи тако да D_i \oplus D_j = A и g^iD_i \oplus g^jD_j = B:


A = \bigoplus_{\ell:\;\ell\not=i\;\mathrm{and}\;\ell\not=j}{D_\ell} = \mathbf{P} \;\oplus\; \mathbf{D}_0 \;\oplus\; \mathbf{D}_1 \;\oplus\; \dots \;\oplus\; \mathbf{D}_{i-1} \;\oplus\;  \mathbf{D}_{i+1} \;\oplus\;  \dots \;\oplus\; \mathbf{D}_{j-1}  \;\oplus\; \mathbf{D}_{j+1} \;\oplus\;  \dots \;\oplus\;  \mathbf{D}_{n-1}

B = \bigoplus_{\ell:\;\ell\not=i\;\mathrm{and}\;\ell\not=j}{g^{\ell}D_\ell} = \mathbf{Q} \;\oplus\; g^0\mathbf{D}_0 \;\oplus\; g^1\mathbf{D}_1 \;\oplus\; \dots \;\oplus\; g^{i-1}\mathbf{D}_{i-1} \;\oplus\;  g^{i+1}\mathbf{D}_{i+1} \;\oplus\;  \dots \;\oplus\; g^{j-1}\mathbf{D}_{j-1}  \;\oplus\; g^{j+1}\mathbf{D}_{j+1} \;\oplus\;  \dots \;\oplus\; g^{n-1}\mathbf{D}_{n-1}

Множењем обе стране једначине за B по g^{n-i} и додавањем на претходну једначину добијамо (g^{n-i+j}\oplus1)D_j = g^{n-i}B\oplus A, односно решење за D_j, које се може искористити за израчунавање D_i.

Израчунавање Q је захтевно за процесор у поређењу са једноставношћу P. Због тога RAID 6 имплементација у софтверу ће имати значајнији ефекат на системску перформансу и хардверско решење ће бити комплексније.

Нестандардни RAID нивои и Не-RAID архитектура[уреди]

Vista-xmag.png За више информација видети Нестандардни RAID нивои и Архитектура Non-RAID дискова

Алтернативе за горе наведени дизајн су угнежђени RAID нивои, нестандардни RAID нивои и Архитектура Не-RAID дискова. Не-RAID архитектура дискова у себи садржи JBOD, спановану партицију и MAID.

Референце[уреди]

  1. ^ „Mac OS X, Mac OS X Server: How to Use Apple-Supplied RAID Software“. Apple.com Приступљено 24. 11. 2007.. 
  2. ^ Faith, Rickard E. (13. 5. 2009.). A Comparison of Software RAID Types. 
  3. ^ „Dictionary R“. Storage Networking Industry Association Приступљено 24. 11. 2007.. 
  4. ^ Anvin, H. Peter (21. 5. 2009.). „The mathematics of RAID-6“ Приступљено November 4, 2009. 

Спољашње везе[уреди]