Vinum (FreeBSD)

A Unix/Linux szerverek üzemeltetése wikiből
A lap korábbi változatát látod, amilyen Aigeruth (vitalap | szerkesztései) 2008. október 16., 00:56-kor történt szerkesztése után volt.

Tartalomjegyzék

1 Logikai kötetkezelés a FreeBSD operációs rendszer alatt

1.1 Partíciók és azzal kapcsolatos fogalmak

A különböző BSD terjesztések alatt meg kell különböztetnünk slice-okat és partíciókat. Az előbbi hasonlítható a Microsoft rendszerekből ismert elsődleges, és másodlagos partíciókkal, ugyanúgy 4 darab lehet belőle egy merevlemezen. Ez kompatibilitási szempontból jó, mivel így azon rendszerek alatt is látjuk az fdisk program segítségével. A különbséget az képzi, hogy egy slice-on belül hozhatunk létre partíciókat (max. 8 FIXME), ahová a rendszert ténylegesen elhelyezzük. Ilyennek számít a root partíció, swap partíció, és egyéb általunk kívánt partíciók. Ezek feleltethetőek meg a Linux és egyéb UNIX terjesztések alatt található partícióknak.

FIXME Itt tennék egy kisebb kitérőt a fájlrendszer típusokra. Alapvetően elterjedt az UFS illetve ennek a második generációs változata, az UFS2. Ezeket a variánsok még a szétválásuk előtt megkapták, illetve osztoznak rajta. Érdekességként említhető meg a HAMMER fájlrendszer, ami a legfrissebb BSD variáns főfejlesztőjének, Matthew Dillon-nak nevéhez köthető. A fejlesztése még csak 1 éve kezdődött meg, teljesen a semmiből. A 2008 nyarán megjelent 2.0 DragonFlyBSD-ben már teszt jelleggel elérhető. A megalkotásának oka a naplózó fájlrendszer hiányának betöltése. Naplózás elérhető FreeBSD 7.x változatiótól a GEOM segítségével, ami nem fájlrendszer szintű mégis blokkszinten képes naplózásra.

1.2 Logikai lemezkezelő alrendszer

A logikai lemezkezelést BSD rendszerekben Vinum alkalmazás segíti. Ennek elindítása a gvinum parancs kiadásával történik.

1.3 Példák

1.3.1 RAID 0 létrehozása

Először is szükségünk lesz lemezekre, amiket összefűzünk. Jelenleg demonstrációs célból ez két loopback eszköz lesz. Ennek létrehozási módja:

# dd if=/dev/zero of=loop3.img bs=1m count=512
# dd if=/dev/zero of=loop4.img bs=1m count=512

Ezek után a létrehozott fájlokat be kell állítanunk, mint eszközmeghajtókat a rendszerben. Ehhez használjuk az mdconfig parancsot, amivel memória lemezeket tudunk konfigurálni és engedélyezni. Itt a -a opcióval jelöljük ki, hogy hozzáadni fogunk egy új lemezt, majd a -t kapcsolóval megmondhatjuk annak a típusát (malloc, vnode, swap), jelen esetben vnode, tehát egy fájlban lesz a tényleges tároló, ezek után a -f kapcsolóval adhatjuk meg az elérési útvonalat. Gyakorlatban tehát:

# mdconfig -a -t vnode -f loop3.img
# mdconfig -a -t vnode -f loop4.img

Ezek után elkészítjük a Vinum konfigurációs fájlját, ami nekünk ezt a két eszközt összefűzve elérhetővé teszi. Itt a következőkben 1m-os csíkozást állítunk be.

 drive loop3 device /dev/md2
 drive loop4 device /dev/md3
 volume stripe
 plex org striped 1m
     sd length 500m drive loop3
     sd length 500m drive loop4

A konfigurációs során kijelöljuk, hogy mely eszközöket szeretnénk a kötet létrehozása során használni. Jelen esetben a két loopback eszközt, amire majd loop3 és loop3-ként hivatkozunk a továbbiakban. Ezek után megadjuk az áltanuk létrehozni kívánt kötet nevét, ez lesz a stripe. A negyedik sorban kijelöljük az érnek (plex) szervezési módját. Itt a csíkozást választjuk ki, méghozzá 1 mb-os csíkokkal. Ezek után megadjuk a kötetben részvevő allemezeket. Itt mind a két eszközünkről kijelölünk egy-egy 500mb-os területet. Ezek után tehát a létrejövő kötet 1 GB-os méret fog ölteni.

Indítsuk el a gvinum rendszert, ami egy promtot fog visszaadni:

#gvinum ->

Majd adjuk ki a következő parancsot:

#gvinum -> create striped.conf

Ezt a konfigurációs fájlt betöltve a következőket kapjuk:

2 drives:
D loop4                 State: up	/dev/md3	A: 11/511 MB (2%)
D loop3                 State: up	/dev/md2	A: 11/511 MB (2%)

1 volumes:
V stripe                State: up	Plexes:       1	Size:       1000 MB

1 plexes:
P stripe.p0           S State: up	Subdisks:     2	Size:       1000 MB

2 subdisks:
S stripe.p0.s1          State: up	D: loop4        Size:        500 MB
S stripe.p0.s0          State: up	D: loop3        Size:        500 MB

Most már elérhető a /dev alatt a stripe nevű lemez a /dev/gvinum/stripe elérési útvonallal. Ezek után már csak fájlrendszert kell létrehoznunk, felcsatolnunk, és használnunk:

newfs /dev/gvinum/stripe
mount /dev/gvinum/stripe /mnt

1.3.2 RAID 1 létrehozása

# dd if=/dev/zero of=loop1.img bs=1m count=512
# dd if=/dev/zero of=loop2.img bs=1m count=512
# mdconfig -a -t vnode -f loop1.img
# mdconfig -a -t vnode -f loop2.img

Ezek után el kell készítenünk egy konfigurációs fájl, mondjuk mirror.conf néven. Ennek tartalma legyen:

drive loop1 device /dev/md0
drive loop2 device /dev/md1
volume mirror
  plex org concat
  sd length 450m drive loop1
  plex org concat
  sd length 450m drive loop2

A fájl felépítése hasonló az előző példához, azzal a különbséggel, hogy itt más a szervezési mód. Mivel egy tükröt szeretnénk létrehozni, ezért a kötetben két ér lesz, amikbe allemezeket fűzünk. Természetesen több eszközt is hasonló módon vehetnénk bele az sd szekciónál. Látható, hogy ezek után, egy 450mb méretű RAID1-be szervezett eszközre mutató hivatkozás jelenik majd meg a /dev alatt.

Ezek után már csak be kell töltenünk. Ehhez indítsuk el a gvinum alkalmazást, és adjuk ki a következő parancsot:

# gvinum -> create mirror.conf
4 drives:
D loop4                 State: up	/dev/md3	A: 11/511 MB (2%)
D loop3                 State: up	/dev/md2	A: 11/511 MB (2%)
D loop2                 State: up	/dev/md1	A: 61/511 MB (12%)
D loop1                 State: up	/dev/md0	A: 61/511 MB (12%)

2 volumes:
V stripe                State: up	Plexes:       1	Size:       1000 MB
V raid1                 State: up	Plexes:       2	Size:        450 MB

3 plexes:
P stripe.p0           S State: up	Subdisks:     2	Size:       1000 MB
P raid1.p1            C State: up	Subdisks:     1	Size:        450 MB
P raid1.p0            C State: up	Subdisks:     1	Size:        450 MB

4 subdisks:
S stripe.p0.s1          State: up	D: loop4        Size:        500 MB
S stripe.p0.s0          State: up	D: loop3        Size:        500 MB
S raid1.p1.s0           State: up	D: loop2        Size:        450 MB
S raid1.p0.s0           State: up	D: loop1        Size:        450 MB


Most már elérhető a /dev alatt a mirror nevű lemez a /dev/gvinum/mirror elérési útvonal alatt. Ezek után már csak fájl rendszert kell létrehoznunk, felcsatolnunk, és használnunk:

newfs /dev/gvinum/mirror
mount /dev/gvinum/mirror /mnt

1.3.3 Bővíthető lemezkötetek

Létrehozhatunk kötetekből egy összefűzött csomót, amit a későbbiek során folyamatosan igény szerint növelhetünk. Ilyen rendszer alkalmazása kiváló lehet, ha felhasználók home könyvtárjait külön szeretnénk tárolni, illetve a későbbiek során számukra több helyet biztosíteni. Ennel első lépése, hogy létrehozzuk a fent ismertett módon két loopback eszközt. Ezeket egy csoportba foghatjuk a következő módon:

# gconcat label -v home /dev/mdx /dev/mdy ...

Ezzel egy home cimkevel ellátott eszközfájl fog megjeleni számunkra a /dev/concat könyvtárban. A -v kapcsoló a beszédesebb visszajelzést állítja be. Az utána felsorolt eszközök kerülnek be a kötetbe. Ezek után a szokásos módon hozhatunk létre fájlrendszert rajta:

# newfs /dev/concat/home

Ezek után, ha a felhasználás során felmerül az igény a home eszköz megnövelésére akkor a következő módon járunk el:

# gconcat label home /dev/mdz

Ezzel a z. loopback eszközt hozzávettük a kötethez. Ekkor még a rajta található partíció mérete nem vette át a kötet méretét, tehát azt meg kell növelnünk. Ehhez használjuk a growfs parancsot:

# growfs /dev/concat/home

Természetesen a felcsatolás a szokásos módon elvégezhető a mount paranccsal.

Bővítés előtt a lemezt szükséges lecsatolni. A kötetet leállítani a következő módon tudjuk:

# gconcat stop home
# gconcat unload

1.4 Hivatkozások

Személyes eszközök