RAID-tekniikka (2-A)

Redundant Arrays of Inexpensive Disks (1987-) eli RAID on menettely, jolla on seuraavanlainen idea: Käyttämällä edullisia vakiokomponentteja voidaan tiedon tallennusta tehostaa rinnakkaistuksella ja turvata kahdennuksen avulla. Erilaisia tasoja on määritelty virallisesti 0-6, joista tärkeimmät ovat 0, 1, 5, ja 6. Ne käyttävät seuraavia perusmekanismeja:

  • peilaus: kirjoitetaan sama tieto useammalle levylle. Jos tämä tehdään siten, että jo levyohjaimet ovat erillisiä, käytetään termiä 'duplexing'. (Taso 1)
  • juovitus (striping): kun tieto lähetetään levystölle, jokaisen lohkon jälkeen vaihdetaan kohdelevyä ja n:nnen levyn jälkeen palataan taas kirjoittamaan ensimmäiselle. Levyjen määrää sanotaan juovan leveydeksi ja lohkokokoa juovan pituudeksi. Tavanomaisten lohkojen (esim. 2kB .. 512kB) sijasta juovan pituus voi olla hyvin lyhyt, yhdestä tavusta alkaen. Lohkomaiset pituudet ovat yleisemmin käyttäjän valittavissa kuin lyhyet. Juovitus sinällään ei sisällä mitään redundanssia eikä toipumiskykyä. (Tasot 0,3-6)
  • pariteetti: n:stä datalohkosta lasketaan pariteettilohko XOR-summaamalla ne yhteen. Jos muodostetaan kaikkien n+1:n lohkon XOR-summa, saadaan nollajono. Tästä yhtälöstä on helppo nähdä, että mikä tahansa datalohko saadaan muiden lohkojen summana. Jos kaikki lohkot ovat eri levyillä, saadaan minkä tahansa yhden levyn rikkouduttua kaikki data vielä talteen. (Tasot 3-7, myös 2:ssa vähän sinnepäin)

Käytetyimmät RAID-tasot ovat RAID0,RAID1,RAID10(myös tunnettu nimellä 1+0, tarkempi selvitys alempana), RAID5

  RAID0-rakenne[] RAID1-rakenne RAID5-rakenne

Nopeus (N yhden levyn nopeus,

x levyjen määrä)

Luku: Nx, Kirjoitus: Nx
Luku: Nx, Kirjoitus: Nx
Luku: (N-1)x, Kirjoitus: Selitetty kohdassa "RAID5"
Sietää levyrikkoja (kpl)
0
N-1
1
Minimimäärälevyjä
2
2
3

Hyödynnettävissä oleva levytila

(x levyjen määrä,

Y yhden levyn levytila)

x*Y
(x*Y)/2
((x-1)*Y)

  • RAID0: nopea ja epäluotettava
    • Tiedot kirjoitetaan juovittamalla kaikille tasaisesti kaikille RAID-pakan levyille. Kuvassa 1. esimerkki rakenteesta. Numerojärjestys kuvaa datan saapumisjärjestystä kirjoitettaksi. Kirjoitus- ja lukunopeus kasvavat levymäärän kasvaessa sillä juovittamalla voidaan kirjoittaa useille levyille samanaikaisesti. Käytännössä nopeus ei kuitenkaan saman verran per levymäärä pakassa. RAID0:ssa ei laskentaa joten kevyehkö prosessi verrattuna pariteettijärjestelmiin.
    • Yksikin levyrikko aiheuttaa koko levyjärjestelmän vikaantumisen ja toipuminen käytännössä mahdotonta. Varmuuskopioinnin merkitys erittäin suuri mikäli järjestelmällä on säilytettävää tietoa eikä vain ajonaikaista väliaikaistietoa.
    • Suositeltu käyttötapa: Nopeuskriittiset applikaatiot [2]. Parasta käyttää työmuistina jossa tulokset tallennetaan johonkin muualle tai varmuuskopioidaan usein.
  • RAID1: Luotettavuus ennen kaikkea
    • Jokaiselle levyjärjestelmä levylle kirjoitetaan identtinen data. Kirjoitusnopeus käytännössä identtinen yhteen levyyn verrattuna, mutta lukunopeus teoriassa N kertainen.
    • Alkuperäinen tieto palautettavissa (ja käytettävissä ilman katkosta) niin kauan kuin yksin levysetin osa on ehjä.
    • Suositeltu käyttötapa: Soveltuu hyvin käyttökohteisiin joissa tärkeintä on tiedon säilyvyys ja suurelle nopeudelle ja levytilan määrälle ei ole tarvetta[2].
  • RAID1+0: nopeutta ja luotattuvuutta
    • Usein käytetty levyjärjestelmä vaikkei olekkaan oma tyyppinsä vaan RAID1:n ja RAID0:n yhdistelmä.
    • Luodaan RAID0 -setti RAID1-varmistetuista palasista. Eli esimerkiksi neljällä levyllä luotaisiin ensin 2kpl RAID1-levysettejä jotka sitten asetettaisiin RAID0 tilaan.
    • Saavutetaan hyvä luotettavuus, tosin kaksi levyrikkoa samassa setissä aiheuttavat tiedon katoamisen.
    • Suositeltu käyttötapa: Tietokannat tai vastaavat joissa tiedon saatavuus ja nopeus kriittistä[2].
  • RAID5: nopeutta ja luotattuvuutta
    • Lohkojen juovitus levyille, pariteettilohkon sijainti vaihtuu joka kierroksella ja kiertää kaikki levyt: Jos levyjä on n, niin aina n-1:stä peräkkäisestä datalohkosta lasketaan pariteettilohko. Jos ensimmäinen sellainen sijoitetaan levylle 1, niin seuraavan n-1:n datalohkon pariteettilohko sijoitetaan levylle 2 jne;
    • Kestää minkä tahansa yksittäisen levyn rikkoutumisen sillä data saadaan laskettua pariteteetin avulla. Palautuminen hidastaa levysetin toimintaa huomattavasti vaikka levysetti pystytäänkin pitämään käytettävissä. Jos toinen levy hajoaa ennen levysetin korjaantumista menetetään kaikki data.
      • Isoissa seteissä (6+ levyä) useamman levyn vikaantuminen yhtäaikaisesti ei kovinkaan epätodennäköistä. Isoilla levyillä (1.5T+) palautuminen myös niin hidas ja raskas operaatio että suositeltavampaa käyttää esimerkiksi RAID6:sta [1].
    • Lukunopeus nopeentuu mitä enemmän levyjä setissä. Kirjoitusnopeus on pahimmillaan yhtä huono kuin yksittäisellä levyllä, parhaimmillaan lähellä RAID0 -tasoa. Käytännön nopeus riippuu huomattavasti toteutuksesta ja käyttötavasta.
    • Saavutetaan hyvä luotettavuus, tosin kaksi levyrikkoa samassa setissä aiheuttavat tiedon katoamisen.
    • Suositeltu käyttötapa: Käytännössä soveltuu lähes kaikkeen monipuolisten ominaisuuksiensa vuoksi [2]. Hyvä perusvalinta.
  • Muut:
    • RAID2; bittien hajautus levyille virheenkorjauskoodauksen kautta. Ei ole nykyään käytössä.
    • RAID6; lohkojen juovitus usealle levylle ja lisäksi kaksi eri tavoin laskettua pariteettilohkoa: voidaan toipua kahden levyn rikosta. (Ensimmäinen pariteetti on datatavujen XOR-summa ja toinen painotettu XOR-summa: kertolasku tapahtuu esim. 256:n alkion äärellisessä kunnassa (samassa kuin AES-laskenta? ) ja kertoimina ovat esim. alkion 0000 0010 potenssit, kuten H.P Anvinin selkeässä RAID-6-matematiikan esityksessä? , 2008. Kyseessä on samalla Reed-Solomon -koodaus.)
    • RAID3 ja RAID4: alle tai yli kilotavun kokoisten lohkojen juovitus levyille, joista yhdelle talletetaan pariteettilohko;
    • RAID7: ei ole avoin teollisuusstandardi kuten eo. tasot; parantelee 3- ja 4-tasojen ominaisuuksia.

  • Toteutus:
    • Voidaan toteuttaa ohjelmistolla tai raudalla. Useissa serverilaitteistoissa valmiina erillinen RAID-ohjain joka huolehtii toteutuksesta.
    • RAID-ohjaimissa usein omaa muistia joka auttaa suorituskyvyssä sekä patteri joka pitää huolen että tässä muistissa oleva tieto kirjoitetaan levyille vaikka koneesta katoaisi virrat.
    • Ohjelmistototeutuksia erilaisia, mm. serveri Windowseissa, Linuxissa ja Solariksessa. Perustasot löytyvät kaikista paitsi Solariksesta jossa on omanlaisensa toteutukset(RAID-Z) jotka kuintekin muistuttavat RAID1,5 ja 6 -tasoja[3].
  • Kun toipumiskykyinen RAID-järjestelmä menettää yhden levyn, suorituskyky tietenkin heikkenee ja järjestelmä on tavallista haavoittuvampi. Kun levy korvataan, resursseja kuluu hajautuksen rakentamiseen uudelleen.
  • Pelkkien levyjen lisäksi on muistettava kahdentaa (riittävästi) myös virtalähteet, ohjaimet ja kaapelointi.

Lisätietoja mm. Wikipedian sivulla? tai monipuolinen "hajautettu" esittely?.

RAID-ideaa voidaan toteuttaa ylemmällä ohjelmistotasolla monistamalla tiedostojärjestelmiä. Ylemmän tason ansiosta saadaan huomioiduiksi tiedostojen erilaiset turvatarpeet, jotka voidaan ilmaista tiedostojen metadatassa. Tässä voidaan ottaa mukaan myös luottamuksellisuus. Tutkimushanke tällaiseksi järjestelmäksi on nimeltään RAIF?.

-- JukkaKoskinen?

[1] http://louwrentius.blogspot.com/2010/08/raid-5-vs-raid-6-or-do-you-care-about.html

[2] http://www.acnc.com/raid.html

[3] http://blogs.sun.com/bonwick/entry/raid_z

Sekalaisia lähteitä

http://www.prepressure.com/library/technology/raid

http://storageadvisors.adaptec.com/2006/11/03/how-do-you-improve-write-speeds/

SivuTiedotLaajennettu edit

Vaativuus Perus
Valmius Valmis
Tyyppi Ydin
Luokitus Uhkat
Mitä Luottamuksellisuus
Miltä Ihmisetön uhka
Missä Organisaatio
Kuka Tite-ammattilainen
Milloin Ennakolta
Miksi Hyvä tapa
Print version |  PDF  | History: r5 < r4 < r3 < r2 | 
Topic revision: r5 - 19 Nov 2010 - 19:24:22 - NikoKurtti
 

TUTWiki

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback