FreeBSD kézikönyv
Előző | Fejezet 18. Háttértárak | Következő

# 18.4. RAID

## 18.4.1. Szoftveres RAID

### 18.4.1.1. Összefűzött lemezek beállítása

Eredetileg készítette: Christopher Shumway. Ellenőrizte: Jim Brown.

A nagyobb méretű háttértárolók kiválasztásánál a legfontosabb tényezők a sebesség, megbízhatóság és a költség. Nagyon ritkán lehet csak ezt a hármat egyensúlyba hozni: általában a gyors és megbízható tárolóeszközök sok pénzbe kerülnek, valamint a költségek megtakarításához vagy a sebességet vagy pedig a megbízhatóságot kell feláldoznunk.

A továbbiakban egy olyan rendszert mutatunk be, ahol a elsősorban a költségek, majd csak ezután a sebesség és megbízhatóság kerültek előtérben. A rendszer adatátviteli sebességét a hálózat korlátozza. Habár emellett a megbízhatóság is nagyon fontos, a tárgyalt összefűzött meghajtó (Concenated Disk, CCD) csak adatokat szolgáltat és a teljes tartalma bármikor visszaállítható, mivel rendelkezésre áll CD-n.

A feladat elvégzésére alkalmas háttértároló kiválasztásában elsőként a saját elvárásainkat kell tudnunk megfogalmazni. Ha nekünk jobban számít az árnál a sebesség vagy a megbízhatóság, akkor a mostaniaktól némileg eltérő konfigurációt kell majd építenünk.

#### 18.4.1.1.1. A hardver telepítése

A rendszert tartalmazó IDE-lemez mellett három darab, egyenként 30 GB-os 5400-as percenkénti fordulatszámú Western Digital gyártmányú merevlemez alkotja majd a létrehozni kívánt, kb. 90 GB összméretű összefűzött lemezt. Ideális esetben minden IDE-lemez saját külön vezérlőn és kábelen van, de a költségek csökkentése miatt nem használtunk további IDE-vezérlőket. Ehelyett inkább jumperekkel úgy állítottuk be a lemezeket, hogy minden vezérlőre egy mester (master) és egy szolga (slave) módú merevlemez kapcsolódjon.

A beszerelés után beállítottuk a rendszer BIOS-át, hogy automatikusan felismerje a csatlakoztatott lemezeket. De ami még fontosabb, hogy a FreeBSD is észlelte ezeket az indítás során:

    ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33
    ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33
    ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33
    ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33

> Megjegyzés: Ha a FreeBSD nem látná az összes lemezt, akkor ellenőrizzük a jumperek helyes beállítását. Napjainkban a legtöbb IDE-meghajtón találunk egy “Cable Select” jumpert is. Ezzel nem a mester/szolga módot állítjuk be! A megfelelő jumper beazonosításához olvassuk el a meghajtóhoz tartozó dokumentációt.

A következő lépésben azt vesszük nagyító alá, hogyan lehet ezeket az állományrendszer részévé tenni. Ezzel kapcsolatban a vinum(8) (21 fejezet) és a ccd(4) elolvasása ajánlatos. Erre a célra itt most a ccd(4) használatát választottuk.

#### 18.4.1.1.2. A CCD beállítása

A ccd(4) meghajtó segítségével több ugyanolyan lemezt tudunk összefűzni egyetlen logikai állományrendszerré. A ccd(4) használatához arra is szükségünk van, hogy a ccd(4) támogatása jelen legyen a rendszermagban. A következő sor tegyük bele a rendszermag konfigurációs állományába, fordítsuk újra és telepítsük a rendszermagot:

    device   ccd

A ccd(4) támogatása modulként is betölthető.

A ccd(4) beállításához először a bsdlabel(8) programmal meg fel kell címkéznünk a lemezeket:

    bsdlabel -w ad1 auto
    bsdlabel -w ad2 auto
    bsdlabel -w ad3 auto

Így létrejön egy-egy BSD típusú címke a `ad1c`, `ad2c` és `ad3c` eszközökre, amely így lefedi a lemez egész területét.

Most pedig változtassuk meg a lemezcímke típusát. Ehhez használjuk ismét a bsdlabel(8) programot:

    bsdlabel -e ad1
    bsdlabel -e ad2
    bsdlabel -e ad3

Az `EDITOR` környezeti változóban megadott szövegszerkesztővel (ez általában a vi(1)) megnyílik minden egyes lemezhez a jelenlegi lemezcímke.

Egy módosítatlan lemezcímke valahogy így néz ki:

    8 partitions:
    #        size   offset    fstype   [fsize bsize bps/cpg]
      c: 60074784        0    unused        0     0     0   # (Cyl.    0 - 59597)

A ccd(4) számára hozzunk létre egy új `e` partíciót. Ezt lényegében a `c` partíció lemásolásával keletkezik, de nála az `fstype` (az állományrendszer típusa) oszlopban mindenképpen `4.2BSD` szerepeljen! A lemezcímke most már valahogy így fog kinézni:

    8 partitions:
    #        size   offset    fstype   [fsize bsize bps/cpg]
      c: 60074784        0    unused        0     0     0   # (Cyl.    0 - 59597)
      e: 60074784        0    4.2BSD        0     0     0   # (Cyl.    0 - 59597)

#### 18.4.1.1.3. Az állományrendszer kiépítése

Most, miután felcímkéztük az összes lemezünket, lássunk neki a ccd(4) kiépítésének. Ezt a ccdconfig(8) meghívásával és az alábbihoz hasonló paraméterek átadásával tehetjük meg:

    ccdconfig ccd0 32 0 /dev/ad1e /dev/ad2e /dev/ad3e

A paraméterek rövid leírása és használata:

  Az első paraméter a létrehozandó eszköz, ami jelen esetünkben a `/dev/ccd0c`. A `/dev/` részt nem kötelező megadni.
  A kihagyás nagysága az állományrendszerben. A kihagyás határozza meg a lemezblokkban alkalmazott csíkozás (striping) vastagságát, ami általában 512 byte. Ennek megfelelően a 32-es kihagyás 16 384 byte-os csíkokat ad meg.
  A ccdconfig(8) beállításai. Ha engedélyezni akarjuk a lemezek tükrözését, akkor itt megadhatjuk. Mivel ez a konfiguráció most nem nyújt tükrözést a ccd(4) számára, ezért állítsuk nullára (0).
  A ccdconfig(8) parancsnak utolsóként azokat az eszközöket kell felsorolni, amelyeket tömbbe akarunk fűzni. Minden eszközt teljes elérési úttal adjuk meg.

A ccdconfig(8) futtatása után a ccd(4) beállítódik. Most már állományrendszert is rakhatunk rá. A newfs(8) man oldalról szedjük össze a szükséges paraméterezést, vagy egyszerűen csak gépeljünk be ennyit:

    newfs /dev/ccd0c

#### 18.4.1.1.4. Az egész önműködővé tétele

A ccd(4) eszközt általában minden egyes indítás után használni akarjuk. Ennek eléréséhez először ezt be kell állítanunk. Az alábbi parancs kiadásával írassuk be a jelenlegi beállítasainkat tükröző `/etc/ccd.conf` állományt:

    ccdconfig -g > /etc/ccd.conf

Az újraindítás során az `/etc/rc` parancs futtatja le a `ccdconfig -C` parancsot, ha az `/etc/ccd.conf` állomány létezik. Ez automatikusan beállítja a ccd(4) eszközöket, így ilyenkor tudjuk csatlakoztatni is ezeket.

> Megjegyzés: Ha egyfelhasználós módban indítjuk a rendszert, mielőtt még a mount(8) paranccsal csatlakoztatni tudnánk a ccd(4) eszközt, a tömb beállításához meg kell hívnunk a következő parancsot:

>     ccdconfig -C

Ha a rendszerindításkor automatikusan csatlakoztatni akarjuk a ccd(4) eszközt, akkor az `/etc/fstab` állományba helyezzünk el egy hozzátartozó bejegyzést:

    /dev/ccd0c              /media       ufs     rw      2       2

### 18.4.1.2. A Vinum kötetkezelő

A Vinum kötetkezelő egy blokkos eszközmeghajtó, ami virtuális lemezes meghajtókat valósít meg. Elkülöníti a lemezes hardvereszközöket a blokkos eszközmeghajtók felületétől és a kettő között úgy képezi le az adatokat, hogy a hagyományos lemezes tárolással szemben megnövekedett rugalmasságot, teljesítményt és megbízhatóságot kapunk. A vinum(8) ismeri a RAID-0, RAID-1 és RAID-5 modelleket egyaránt, melyeket önmagukban és együttesen kombinálva is használhatunk.

A 21 fejezet bővebben ismerteti a vinum(8) rendszerét.

## 18.4.2. Hardveres RAID

A FreeBSD rengeteg különböző típusú hardveres RAID-vezérlőt ismer. Ezek az eszközök a FreeBSD külön erre a célra szánt támogatása nélkül képesek vezérelni a RAID-alrendszert.

A rajta levő BIOS segítségével a kártya a legtöbb lemezműveletet egyedül kezeli. A következőkben egy Promise IDE RAID vezérlőt alkalmazó rendszert fogunk beállítani. Miután telepítettük a kártyát és indítjuk a rendszert, bekéri a szükséges információkat. Kövessük az utasításokat és lépjünk be a kártya beállító képernyőjére. Itt tudjuk kombinálni az összes csatlakoztatott meghajtónkat. Amikor ezzel a végeztünk, a lemezek egyetlen lemezként fognak a FreeBSD számára viselkedni. A többi RAID-szint is ehhez hasonlóan állítható be.

## 18.4.3. Az ATA RAID-1 tömbök újraszervezése

A FreeBSD lehetőséget a tömbben levő meghibásodott eszközök menet közben elvégezhető cseréjére. Ehhez arra van szükségünk, hogy még újraindítás előtt elcsípjük a hibát.

Hiba esetén valami hasonlót fogunk látni a `/var/log/messages` állományban vagy a dmesg(8) kimenetében:

    ad6 on monster1 suffered a hard error.
    ad6: READ command timeout tag=0 serv=0 - resetting
    ad6: trying fallback to PIO mode
    ata3: resetting devices .. done
    ad6: hard error reading fsbn 1116119 of 0-7 (ad6 bn 1116119; cn 1107 tn 4 sn 11)\\
    status=59 error=40
    ar0: WARNING - mirror lost

További információkat az atacontrol(8) programtól szerezhetünk:

    # atacontrol list
    ATA channel 0:
    	Master:      no device present
    	Slave:   acd0 <HL-DT-ST CD-ROM GCR-8520B/1.00> ATA/ATAPI rev 0

    ATA channel 1:
    	Master:      no device present
    	Slave:       no device present

    ATA channel 2:
    	Master:  ad4 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
    	Slave:       no device present

    ATA channel 3:
    	Master:  ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
    	Slave:       no device present

    # atacontrol status ar0
    ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADED

1. A lemez biztonságos eltávolításához először válasszuk le (detach) a meghibásodott lemezhez tartozó csatornát:

       # atacontrol detach ata3

2. Cseréljük ki a lemezt.

3. Csatlakoztassuk újra (attach) az ATA csatornát:

       # atacontrol attach ata3
       Master:  ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
       Slave:   no device present

4. Tartalékként (spare) adjuk hozzá az új lemezt a tömbhöz:

       # atacontrol addspare ar0 ad6

5. Szervezzük újra (rebuild) a tömböt:

       # atacontrol rebuild ar0

6. A folyamat előrehaladását a következő parancs begépelésével tudjuk figyelni:

       # dmesg | tail -10
       [a kimenet többi része]
       ad6: removed from configuration
       ad6: deleted from ar0 disk1
       ad6: inserted into ar0 disk1 as spare

       # atacontrol status ar0
       ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 0% completed

7. Várjunk a művelet befejeződéséig.

Előző | Tartalom | Következő
Lemezek hozzáadása | Fel | USB tárolóeszközök

Ha kérdése van a FreeBSD-vel kapcsolatban, a következő címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.