RAID
A Unix/Linux szerverek üzemeltetése wikiből
A lap korábbi változatát látod, amilyen KornAndras (vitalap | szerkesztései) 2007. szeptember 27., 21:14-kor történt szerkesztése után volt.
Redundant Array of Inexpensive/Independent Disks. Külön szócikk foglalkozik a szoftveres RAID linuxos megvalósításával.
Tartalomjegyzék |
1 Mire jó?
- Sok kis diszk helyett egy nagyot látunk
- Ami ráadásul gyorsabb is
- És megbízhatóbb is
- És jobb esetben működés közben cserélhető
- Egy diszk MTFF-je 200000 óra is lehet
- Akkor 100 diszké 2000 óra (kb. két és fél hónap)
2 Megvalósítás típusai
- Hardware
- Drága vezérlő (ATA, SCSI, ...)
- SCSI-buszra csatlakoztatható RAID-vezérlő is létezik
- Software
- pl. Linux md
- FreeBSD Vinum(?)
- Windows dynamic disk (?)
- Az XP pro csak RAID0-t tud, a szervertermékek RAID1-et is (woah!)
- Hibrid
- Olcsó alaplapok "RAID"-vezérlői
- (Külső doboz: SAN, NAS)
3 RAID szintek
- Két ortogonális fogalom:
- Csíkozás (striping) a nagyobb teljesítmény, és
- Redundancia (redundancy) a nagyobb megbízhatóság érdekében.
- Másfelől: nagy, megbízható, gyors - ebből választhatunk kettőt (vagy legalábbis az egyik kicsit mindig háttérbe szorul a másik kettő javára)
- Csíkozás:
- Lehet finom vagy durva
- Rövidebb sorbanállás független I/O műveletek esetén
- Nagyobb effektív átviteli sebesség egyetlen, több-blokkos I/O művelet esetén
- Csökkenti a megbízhatóságot: 10 diszkből egy várhatóan pontosan tizedannyi idő alatt romlik el, mint egyből egy
- Redundancia:
- Milyen hibadetektáló/-javító kódot használ? (általában paritás, ritkábban Hamming vagy Reed-Solomon)
- Hogyan osszuk el a redundáns információt a több diszk között?
- Koncentráltan
- Szétterítve
3.1 RAID0
- Nincs redundancia, csak csíkozás
- A legjobb írási sebesség (nem kell kódokat számolgatni és frissíteni)
- A RAID1 tudhat gyorsabban olvasni (több diszken is megvan ugyanaz az adat, tehát olvashatunk arról, amelyik várhatóan a leghamarabb odaér)
- Egy diszk kiesése után a tömb "használhatatlan"
3.2 RAID1
- Az adatokat nem 1, hanem n>1 diszken tároljuk
- A tömbhöz tartozhat melegtartalék is (hotspare); erre nem íródnak az adatok, amíg éles diszk ki nem esik
- Ha 8 diszkünk van, akkor 4 kapacitása hasznosul
- Bármelyik kieshet, és a tömb még működik
- Ha szerencsénk van, akár 4 is kieshet, és még működik, de ez már nem garantált
3.3 RAID2
- Hamming kódos
- 4 adatdiszkhez 3 paritásdiszk kell, de a paritásdiszkek száma az adatdiszkek logaritmusával arányos
- A fenti hétből egy eshet ki, négy kapacitása hasznosul
- Nemigen használják
3.4 RAID3
- A memóriahibákkal ellentétben a diszkek esetében pontosan tudjuk, melyik a rossz, tehát nem kell a Hamming-kód, találhatunk jobbat
- n adatdiszkhez 1 paritásdiszk tartozik
- Minden írás minden diszket érint
- Az olvasásban csak az adatdiszkek vesznek részt
- Pontosan egy diszk eshet ki
- Nemigen használják
3.5 RAID4
- Mint a RAID3, de nem bitenként használja az egyes diszkeket, hanem blokkonként (striping unit, esetleg stride size).
- Blokkméret alatti írási műveleteknél read-modify-write van:
- a többi diszkről is be kell olvasni az adott paritásblokkhoz tartozó adatokat
- újra kiszámolni a paritást
- kiírni a módosított adatot és az új paritást
- Mivel csak egy paritásdiszk van, és azt az összes írás érinti, szűk keresztmetszet lehet
- Itt is pontosan egy diszk eshet ki
- Nemigen használják
- Akkor lehet jó, ha van több lassú és egy nagyon gyors diszkünk - pl. egy lokális diszk és több hálózati
3.6 RAID5
- Mint a RAID4, de a paritás is el van osztva
- n diszk esetén minden diszken minden n-edik blokk paritásblokk
- n+1 diszkből itt is n-nek a kapacitását hasznosítjuk
- Minden diszk részt vehet az olvasási műveletek kiszolgálásában
- Kis olvasás, nagy olvasás, nagy írás gyors; kis írás relatív lassú
- Pontosan egy eshet ki
- Széles körben elterjedt
3.7 RAID6
- Reed-Solomon
- n+2 diszk kell n diszknyi kapacitáshoz
- Bármely két diszk kieshet
- Amúgy olyan, mint a RAID5; a kis írás még egy kicsit lassúbb
- Terjedőben
3.8 RAID1+0
- RAID10-nek is hívják, de "van" "valódi" RAID10 is
- Két (vagy több) RAID1 tömböt csíkozással összefűzünk
3.9 RAID0+1
- Mint fent, de két RAID0-tömböt tükrözünk egymásra RAID1-gyel
3.10 RAID10 vagy RAID 1e
- Elvileg egy RAID1+0-jellegű hibrid megoldás
- Egy komplex tömb, nem két egymásra épített
- Állhat páratlan számú diszkből is
- Így aztán lehet az egésznek egy hotspare-je, ami bármelyik diszk kiesése esetén beállhat
- A Linux kernel támogatja
4 Hardveres vagy szoftveres RAID?
A (nyílt) szoftveres megvalósítás mellett szól:
- rugalmasság
- Különböző vezérlőkön lógó diszkek is lehetnek egy tömbben;
- sőt, egy RAID-tömb állhat teljesen különböző technológiákat használó eszközökből (pl. USB-s flash drive+SATA diszk+network block device/iSCSI)
- segít csökkenteni a kritikus pontok (SPoF) számát - pl. egy tömb minden diszkje lehet másik vezérlőn, vagy akár másik városban
- partíciókból is építhető tömb, nemcsak diszkekből
- a RAID-vezérlők firmware-je gyakran hibás, de a frissítés nehézkes és a hibák nehezen derülnek ki
- a szoftveres megoldásnál viszonylag egyszerű a hibakeresés (van forráskód, amit el lehet olvasni)
- nyilvános az adatformátum
- nem kell mindig ugyanolyan vezérlőt venni
- a diszkek szabadon mozgathatók egyik gépből a másikba)
- egy RAID1 tömb minden diszkje külön-külön is használható más-más gépben
- (hardware raid esetén még gyártó két vezérlője közötti mozgatás esetén is szükség lehet dump-restore ciklusra)
- A gép CPU-ja tipikusan sokkal gyorsabban futtatja a RAID5-höz szükséges XORt, mint a RAID-vezérlő mikrokontrollere
- Persze ez egyben hátrány is, hiszen ezt is a CPU-nak kell csinálnia
- Viszont CPU-t egyszerűbb upgrade-elni, mint RAID-vezérlőt
- A CPU-magok számával nő a RAID5 sebessége
- Tehát: nem igaz, hogy egy hardveres RAID szükségszerűen gyorsabb lenne, mint egy - mondjuk azonos árfekvésű - szoftveres megoldás
- kültséghatékonyság: általában olcsóbb több RAMot és gyorsabb CPU-t venni, mint gyorsabb RAID-vezérlőt
- termék-életciklus: régi RAID-vezérlőhöz többnyire nincs támogatás, firmware-frissítés stb. (sőt, esetleg már a gyártó sincs meg)
- egységes felhasználói interfész (amúgy minden RAID-vezérlőnek más)
- naplózás, hibakezelés szintén különbözhet, nemcsak a tömbök összerakásához használt eszköz
- pl. hardveres RAID esetén nem magától értetődő, hogy a syslogban megjelenik minden hiba (pedig ez segít a diszkhalál előrejelzésében)
- a RAID-vezérlő funkcióinak halmaza adott; a szoftver-RAID fejlődik, anélkül, hogy hardvert cserélnénk
- funkcionalitás: a legtöbb hardveres megvalósítás nem támogatja a RAID6-ot és a RAID10-et (ami nem RAID1+0)
A hardveres megvalósítás mellett szól:
- a softraid jobban terheli a rendszerbuszt
- RAID1-nél azért, mert több példányban kell a buszra küldeni minden írást
- RAID5-nél azért, mert a paritást is át kell tolni a memóriából a diszkre
- a vezérlőn levő akkumulátor segítségével áramszünet esetén is a diszkre írható a cache tartalma
- a PC-hardver bizonyos típusú hibákra nincs jól felkészítve, úgyhogy ha egy diszk bedöglik, lefagyhat a gép, és oda a rendelkezésreállás
5 Ajánlott irodalom
Az itt fel nem sorolt irodalommal bánjatok óvatosan! RAID-ügyben sok a makacs mítosz és téveszme. Könnyű önellentmondást tartalmazó ismeretterjesztő cikket találni (pl. kijelenti, hogy a hardveres RAID mindenképpen gyorsabb bármilyen szoftvermegoldásnál, majd kiméri, hogy vannak konkrét esetek, amikor a softraid a gyorsabb...).
- Peter M. Chen, Edward K. Lee, Garth A. Gibson, Randy H. Katz, David A. Patterson: "RAID: High-Performance, Reliable Secondary Storage", ACM Computing Surveys (CSUR), Volume 26, Issue 2 (June 1994), pp. 145-185, ISSN 0360-0300
- Van benne szép ábra is, nem akar esetleg valaki hasonlót rajzolni nekünk?
- Ugyanez a cikk HTML-ként
- Tomka Gergely: RAID és ENBD - gyakorlati útmutató. Könnyed bevezetés a RAID, az LVM és az ENBD (Enhanced Network Block Device) használatába.
- Why software RAID? - érvek pro és kontra a hardver-RAID vs. szoftver-RAID vitában.
- RAID Classifications - egy jó összeállítás az egyes RAID-szintekről, ábrákkal.