Hirdetés

Minden, amit a RAID-ről tudni akartál

Bevezetés

Ezen dokumentumot a Budapesti Műszaki Egyetem Informatikus hallgatói számára hozta létre Fék Márk, 1999. novemberében. Az anyagot változatlan formában adjuk közre, célunk mindössze az igényes összefoglaló bemutatása minden olvasónknak.

A RAID (Redundand Array of Independent/Inexpensive Disks) technológiát a Kaliforniai Egyetem (University of California) kutatói 1987-ben publikálták először, azóta széleskörűen elterjedt (pl. Linux is támogatja). A RAID technológia lényege, hogy több független merevlemez összekapcsolásával egy nagyobb méretű logikai diszket hoznak létre. A módszer kifejlesztésekor a tervezők többféle célt tűztek ki maguk elé:

  • Nagy kapacitások kezelése, azaz a logikai diszk az egyes fizikai diszkek méretét jóval meghaladhatja
  • Teljesítménynövelés, azaz az összekapcsolt diszkek együttes teljesítménye (írási-, olvasási sebesség) meghaladja az egyes diszkek teljesítményét.
  • Hibatűrés, azaz az egyes diszkek meghibásodásával szembeni tolerancia.

A fenti célok a különböző alkalmazások által támasztott igények kielégítését tűzik ki. Itt egyrészt adatbázis-kezelésre (pl. repülőtéri helyfoglalás, bankszámla nyilvántartás, stb...) kell gondolnunk, ahol eleve sok adattáblát kell kezelni, illetve az egyes táblákon belül esetenként igen nagyszámú rekord található. Ezen applikációnál cél a gyors elérés biztosítása (lehetőleg minél több lekérdezést, módosítást lehessen adott idő alatt végrehajtani), másrészt a hibavédelem, azaz például egy esetleges diszkhiba esetén is tovább kell tudni működnie a rendszernek. A másik tipikus alkalmazáscsoport, az Internetes adatátvitel (pl. FTP szerverek), ahol nagymennyiségű adat tárolását kell megoldani. Ezenkívül fontos még a kiadványszerkesztés, és a grafika-, illetve videó-editálás, ahol nagymennyiségű kép, illetve videó anyagok minél gyorsabb kezelését kell biztosítani.

A RAID-ben eredetileg 5 szintet (RAID1-től RAID5-ig) definiáltak. Az egyes szintek általában nem a fejlődési, illetve minőségi sorrendet tükrözik, hanem egyszerűen különböző megoldásokat javasolnak. A kezdeti 5 szinthez később hozzávették a RAID 6-ot. RAID 0-ként szokták emlegetni azt a változatot, ahol a diszkeket redundancia nélkül kapcsoljuk össze. Ezenkívül használjak még a RAID 10, vagy RAID 1+0 elnevezéseket is, amelyek a RAID 1 és a RAID 0 kombinálásával hoznak létre. Hasonlóan a RAID 50 a RAID 5 és a RAID 0 kombinációja. A RAID alapötlete a lemezegységek sávokra (stripes) bontása. Az itteni sávok nem azonosak a lemez fizikai sávjaival (tracks), amit az angol elnevezés különbözősége is jelez.


1. ábra: Sávokra bontás négy meghajtó esetén

A sávok minden diszken egyforma méretűek, amely 512 bájttól néhány megabájtig terjedhet. Az adatok nem folytonosan tárolódnak egy-egy diszken, hanem az egymást követő sávok mindig a sorban round-robin módon következő diszkre kerülnek, mint ahogy azt négy meghajtó esetén a fenti ábra is mutatja. A sávok méretének megválasztása az alkalmazástól függ. Adatbázisok esetén úgy kell a sávméretet megválasztani, hogy egy rekord férjen el egy sávon belül, így a különböző diszkeken lévő rekordok párhuzamosan egyszerre elérhetővé (írási/olvasási műveletekkor) válnak, felgyorsítván a rendszer teljesítményét. Nagyméretű fájlok átvitele esetén viszont a sávok méretét minél kisebbre kell állítani, hogy az egyes fájlok a diszkeken mintegy "szétkenve" helyezkedjenek el, így a fájlok különböző diszkeken lévő egyes darabjainak írása, illetve olvasása párhuzamosan történhet.

RAID típusok

RAID 0

A RAID 0 alkalmazza az egyes lemezegységek sávokra bontását, viszont semmilyen plusz redundanciát nem visz a rendszerbe, így nem biztosít hibatűrést, azaz egyetlen meghajtó meghibásodása az egész rendszer hibáját okozza. Mind az írási, mind az olvasási műveletek párhuzamosítva történnek. A módszer az összes RAID eljárás közül a legjobb teljesítményt nyújtja, ugyanis a többi módszernél a redundancia kezelése (mint majd látni fogjuk) lassítja a rendszert. A tárkihasználás a redundancia hiánya miatt szintén hatékony.

RAID 1

A RAID 1 eljárás alapja az adatok duplikált tárolása, azaz tükrözése (disk mirroring). Az eltárolandó információ mindig párhuzamosan két meghajtón kerül felírásra, amely meghajtópárost a számítógép egy szimpla kapacitású logikai meghajtónak lát. Az adatok olvasása párhuzamosan történik a két diszkről, felgyorsítván az olvasási teljesítményt. Az írás normál sebességgel, párhuzamosan történik a két meghajtón. Az eljárás igen jó hibavédelmet biztosít, bármely meghajtó meghibásodása esetén folytatódhat a működés. Ezen nagymértékű hibatolerancia ára a kétszeres tárolókapacitás-felhasználás. A RAID 1 önmagában nem használja a sávokra bontás módszerét. A RAID 0 meghajtóit RAID 1 megkettőzött meghajtókkal helyettesítve kapjuk a kombinált RAID 10-et.

RAID 2

A RAID 2 használja a sávokra bontás módszerét, emellett egyes meghajtókat hibajavító kód (ECC: Error Correcting Code) tárolására tartanak fenn (A hibajavító kód lényege, hogy az adatbitekből valamilyen matematikai művelet segítségével redundáns biteket képeznek. A használt eljárástól függően a kapott kód akár több bithiba észlelésére, illetve javítására (ez utóbbi persze több redundanciát igényel) alkalmas. A védelem ára a megnövekedett adatmennyiség.). Ezen meghajtók egy-egy sávjában a különböző diszkeken azonos pozícióban elhelyezkedő sávokból képzett hibajavító kódot tárolnak. A módszer esetleges diszkhiba esetén képes annak detektálására, illetve kijavítására. Manapság nem használják, mivel a (SCSI) meghajtókban már minden egyes szektorban az adott szektorhoz tartozó ECC is eltárolásra kerül.


2. ábra: RAID2 három adat és két hibajavító meghajtó esetén

RAID 3

A RAID 3 felépítése hasonlít a RAID 2-re, viszont nem teljes hibajavító kód, hanem csak egy diszknyi paritásinformáció kerül eltárolásra. Egy adott paritássáv a különböző diszkeken azonos pozícióban elhelyezkedő sávokból XOR művelet segítségével kapható meg. A rendszerben egy meghajtó kiesése nem okoz problémát, mivel a rajta lévő információ a többi meghajtó (a paritást tároló meghajtót is beleértve) XOR-aként megkapható. Az alapvető különbség a RAID 2-ben alkalmazott hibajavító kóddal szemben, hogy itt feltesszük, hogy a meghajtó meghibásodását valamilyen módón (pl. többszöri sikertelen olvasás hatására) észleljük, majd a meghibásodott diszken lévő információt a többi diszken lévő adatok segítségével állítjuk elő. A RAID 2 a diszkhibák ellen is védelmet nyújt, pl. egyes bájtok megsérülése esetén (Vegyük észre, hogy csak az XOR-os paritásbit technikát használva az egyik meghajtón egy adott bájt megsérülése esetén, csak azt vennénk észre, hogy a különböző meghajtókon az azonos sávba tartozó részek XOR-a nem nullát adna, de nem tudnánk sem azt, hogy melyik meghajtón van a hiba, sem azt, hogy hogyan javítsuk ki. Ezért van szükség a szektoronkénti hibajavító kód alkalmazására.).


3. ábra: RAID 3, illetve RAID 4 három normál és egy paritás meghajtó esetén

A RAID 3-nál kisméretű sávokat definiálnak, így az egyes fájlok olvasása és írása párhuzamosan történhet (Természetesen a paritássávot minden egyes íráskor módosítani kell, amihez szükséges a korábbi tartalom kiolvasása. Viszont például fájltranszfer esetén, pont a kisméretű sávok miatt, az azonos pozícióban lévő sávok általában az összes diszken felülírásra kerülnek, így ez esetben a probléma kevésbé jelentkezik.) az egyes meghajtókon, viszont a módszer nem támogatja egyszerre több kérés párhuzamos kiszolgálását (single-user mode).

RAID 4

A RAID 4 felépítése a RAID 3-mal megegyező. Az egyetlen különbség, hogy itt nagyméretű sávokat definiálnak, így egy rekord egy meghajtón helyezkedik el, lehetővé téve egyszerre több (különböző meghajtókon elhelyezkedő) rekord párhuzamos írását, illetve olvasását (multi-user mode). Problémát okoz viszont, hogy a paritás meghajtó adott sávját minden egyes íráskor frissíteni kell (plusz egy olvasás és írás), aminek következtében párhuzamos íráskor a paritás meghajtó a rendszer szűk keresztmetszetévé (bottleneck) válik. Ezenkívül valamely meghajtó kiesése esetén a rendszer olvasási teljesítménye is lecsökken, a paritás meghajtó jelentette szűk keresztmetszet miatt.

RAID 5

A RAID 5 a paritás információt nem egy kitüntetett meghajtón, hanem, körbeforgó paritás (rotating parity) használatával, egyenletesen az összes meghajtón elosztva tárolja, kiküszöbölvén a paritás meghajtó jelentette szűk keresztmetszetet. Mind az írás, mind az olvasás műveletek párhuzamosan végezhetőek. A sávméret változtatható; kisméretű sávok esetén a RAID 3-hoz hasonló működést, míg nagyméretű sávok alkalmazása esetén a RAID 4-nek megfelelő működést kapunk.

RAID 6

A RAID 6 tekinthető a RAID 5 kibővítésének. Itt nemcsak soronként, hanem oszloponként is kiszámítják a paritást. A módszer segítségével kétszeres meghajtó meghibásodás is kiküszöbölhetővé válik. A paritássávokat itt is az egyes meghajtók között, egyenletesen elosztva tárolják, de ezek természetesen kétszer annyi helyet foglalnak el, mint a RAID 5 esetében.


4. ábra: RAID 5 megvalósítása öt meghajtó esetén

Használat és megvalósítás

Használat

Az ismertetett RAID technikák közül a RAID 0-át, RAID 1-et és RAID 5-öt használják elterjedten, illetve az ezek kombinációjaként megvalósított RAID 10-et és RAID 50-et. A RAID 2-őt a már korábban említett okok, míg a RAID 3-at és RAID 4-et a paritás meghajtó jelentette szűk keresztmetszet miatt nem alkalmazzák. A RAID 6 megvalósítása túl sok többletköltséget jelent, illetve az általa nyújtott többlet biztonság csak speciális alkalmazások estében szükséges, ezért használata nem terjedt el.

Megvalósítás

A RAID rendszerek megvalósítása történhet szoftver, illetve hardver támogatással. Szoftveres megvalósítás esetén vagy az operációs rendszer nyújt támogatást, vagy speciális driver programot használnak. A megvalósítás előnye, hogy nem igényel külön költséges hardver komponenseket, viszont hátránya, hogy a központi memóriát, illetve a CPU-t terheli, lerontván az egész rendszer teljesítményét. Hardveres megvalósítás esetén a szükséges feldolgozást a RAID vezérlő valósítja meg, ezáltal az operációs rendszer teljesítménye nem csökken le. A kezelés bonyolultsága miatt a RAID 5-öt a gyakorlatban csak hardver támogatással valósítják meg.

Források

Az anyagot összeállította: Fék Márk, 1999. novemberében.

  • Kapcsolódó cégek:
  • Abit

Azóta történt

  • Merevlemezek lemeztelenítve

    Tesztünkben 9 merevlemezt állítunk ringbe, és bemutatjuk, hogy miként hat a meghajtók teljesítményére a gyorsítótár mérete, a Serial ATA interfész, valamint a vezérlők típusa.

Hirdetés