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:
Figyelem: 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
Megjegyzés: 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.
Megjegyzés: Ha vi(1) szövegszerkesztőt használjuk, akkor a következő módon tudjuk ezt egyszerűen megtenni:
# vi /etc/fstabA 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): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése,
kérjük erre a címre írjon: <gabor@FreeBSD.org>.