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...).

Személyes eszközök