A tükrözés számos vállalatnál és háztartásban alkalmazott technológia, amely az adatok megszakítás nélküli lementésére használatos. Amikor tükrözést használunk, az egyszerűen csak arra utal, hogy a B lemez ugyanazokat az adatokat tartalmazza, mint az A lemez. Vagy amikor a C és D lemez tartalma egyezik meg az A és B lemezekével. Függetlenül a lemezek kiosztásától, itt az a lényeg, hogy az egyik lemez teljes területe vagy az egyik partíciója le van másolva. Később az ezen a módon lementett adatok könnyen visszaállíthatóak anélkül, hogy ez a szolgáltatásban vagy az elérhetőségben bármilyen kimaradást okozna, és akár még fizikailag is biztonságosan tárolhatóak.
Először is szereznünk kell két egyforma méretű lemezt, valamint a példák feltételezik, hogy ezek a lemezek közvetlen elérésű (da(4)) SCSI-lemezek.
Tegyük fel, hogy a FreeBSD az első,
da0
nevű lemezmeghajtón
található, és a gmirror(8)
számára ezt szeretnénk megadni az
elsődleges adatok tárolásához.
A tükrözés
létrehozásának megkezdése előtt a
kern.geom.debugflags
sysctl(8)
változó megfelelő
beállításával
engedélyezzünk további
nyomkövetési információkat és
hozzáférést az eszközhöz:
#
sysctl kern.geom.debugflags=17
Most építsük fel a
tükrözést. Kezdjük az egészet a
metaadatok elhelyezésével az elsődleges
lemezmeghajtón, tehát tulajdonképpen az
alábbi parancs segítségével hozzuk
létre a /dev/mirror/gm
eszközt:
A rendszerindító meghajtóról készített tükrözés adatvesztést okozhat a lemez utolsó szektorában. Ennek kockázata csökkenthető, ha közvetlenül a FreeBSD friss telepítése után állítjuk be a tükrözést.
#
gmirror label -vb round-robin gm0 /dev/da0
Erre a rendszernek a következő módon kell reagálnia:
Metadata value stored on /dev/da0. Done.
A GEOM inicializálásához
szükségünk lesz a
/boot/kernel/geom_mirror.ko
modul
betöltésére:
#
gmirror load
A parancs sikeres lefutása után a /dev/mirror
könyvtárban létrehoz egy
gm0
eszközleírót.
A geom_mirror.ko
modul
betöltését így tudjuk
engedélyezni a rendszer indításakor:
#
echo 'geom_mirror_load="YES"' >> /boot/loader.conf
Nyissuk meg az /etc/fstab
állományt, és cseréljük le
benne az összes korábbi da0
hivatkozást az újonnan kialakított
gm0
tükrözés
eszközleírójával.
Ha vi(1) szövegszerkesztőt használjuk, akkor a következő módon tudjuk ezt egyszerűen megtenni:
#
vi /etc/fstab
A vi(1) indítása után a
:w /etc/fstab.bak
kiadásával készítsünk az
fstab
állomány jelenlegi
tartalmáról másolatot. Ezután a
:%s/da/mirror\/gm/g
parancs
használatával cseréljük ki az
összes da0
hivatkozást a
gm0
eszköz nevére.
Az így keletkező fstab
állomány nagyjából következő
módon fog kinézni. Most teljesen független,
hogy SCSI vagy ATA
meghajtókkal dolgozunk, a RAID
eszköz neve mindig gm
lesz:
# Eszköz Csatlakozási pont Típus Beállítások Dump Menet /dev/mirror/gm0s1b none swap sw 0 0 /dev/mirror/gm0s1a / ufs rw 1 1 /dev/mirror/gm0s1d /usr ufs rw 0 0 /dev/mirror/gm0s1f /home ufs rw 2 2 #/dev/mirror/gm0s2d /store ufs rw 2 2 /dev/mirror/gm0s1e /var ufs rw 2 2 /dev/acd0 /cdrom cd9660 ro,noauto 0 0
Indítsuk újra a rendszert:
#
shutdown -r now
Ennek megfelelően a rendszer indítása
közben a da0
eszköz helyett a
gm0
eszközt fogjuk
használni. Miután sikeresen
befejeződött a rendszerindítás, a
mount
parancs kiadásával a
saját szemünkkel is meggyőződhetünk
az eredményről:
#
mount
Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/mirror/gm0s1a 1012974 224604 707334 24% / devfs 1 1 0 100% /dev /dev/mirror/gm0s1f 45970182 28596 42263972 0% /home /dev/mirror/gm0s1d 6090094 1348356 4254532 24% /usr /dev/mirror/gm0s1e 3045006 2241420 559986 80% /var devfs 1 1 0 100% /var/named/dev
A parancs kimenete az elvárásainknak
megfelelően remekül néz ki.
Zárásképpen a szinkronizálás
megkezdéséhez a következő paranccsal
illesszük be a da1
eszközt a
tükrözésbe:
#
gmirror insert gm0 /dev/da1
A tükrözés állapota a létrejöttét követően az alábbi paranccsal ellenőrizhető:
#
gmirror status
Az iménti parancs eredményének nagyjából a következőnek kell lennie miután a felépítettük a tükrözést és szinkronizáltuk az adatokat:
Name Status Components mirror/gm0 COMPLETE da0 da1
Hiba esetén a tükrözés
továbbra is folytatódik, azonban ilyenkor a
példában szereplő COMPLETE
helyett a DEGRADED
jelzést fogjuk
látni.
Ha a rendszerünk ehhez hasonló módon indul:
ffs_mountroot: can't find rootvp Root mount failed: 6 mountroot>
Indítsuk újra a gépünket a kikapcsoló gomb vagy a reset segítségével. A rendszerindító menüben válasszuk a hatodik opciót (6). Ennek eredményeképpen megkapjuk a loader(8) parancssorát. Töltsük be a modult manuálisan:
OK?load geom_mirror
OK?boot
Ha ez beválik, akkor valamiért a modult nem
sikerült rendesen betölteni.
Ellenőrizzük, hogy a
/boot/loader.conf
állományban a neki szereplő megfelelő
bejegyzés helyesen szerepel. Amennyiben a
probléma továbbra is fennáll,
helyezzük el a következő sort a rendszermag
konfigurációs állományába,
majd fordítsuk újra és
telepítsük:
options GEOM_MIRROR
Ezzel várhatóan orvosoltuk a problémát.
A lemezek tükrözésének egyik legcsodálatosabb előnye, hogy a menet közben meghibásodott meghajtókat gond, és így feltehetően adatvesztés nélkül ki tudjuk cserélni.
Vegyük az iménti RAID-1
konfigurációt, és tételezzük fel,
hogy a da1
eszköz felmondta a
szolgáltatot és cserére szorul. A
meghajtó leváltásához keressük
meg a hibás eszközt, majd állítsuk le
a rendszert. Tegyük be a helyére az újat
és indítsuk újra a rendszerünket.
Miután elindult az operációs rendszer, a
következő parancsok kiadásával tudjuk
logikailag is lecserélni a meghibásodott
lemezt:
#
gmirror forget gm0
#
gmirror insert gm0 /dev/da1
Innen a gmirror
status
parancsával kísérhetjük figyelemmel a
tükrözés újraszervezésének
menetét. Csupán ennyi az egész.
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>.