18.4. RAID
Vissza | 18. fejezet - Háttértárak | Előre

## 18.4. RAID

### 18.4.1. Szoftveres RAID

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

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

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 - A Vinum kötetkezelő) é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 - A Vinum kötetkezelő 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.

Vissza | Fel | Előre
18.3. Lemezek hozzáadása | Főoldal | 18.5. USB tárolóeszközök

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