---
title: "19. Fejezet - GEOM: A moduláris lemezszervező rendszer"
part: III. Rész Rendszeradminisztráció
prev: books/handbook/disks
next: books/handbook/filesystems
---

[[geom]]
= GEOM: A moduláris lemezszervező rendszer
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:source-highlighter: rouge
:experimental:
:skip-front-matter:
:toc-title: Tartalom
:table-caption: Táblázat
:figure-caption: Ábra
:example-caption: Példa
:xrefstyle: basic
:relfileprefix: ../
:outfilesuffix:
:sectnumoffset: 19

ifeval::["{backend}" == "html5"]
:imagesdir: ../../../../images/books/handbook/geom/
endif::[]

ifeval::["{backend}" == "pdf"]
:imagesdir: ../../../../static/images/books/handbook/geom/
endif::[]

ifeval::["{backend}" == "epub3"]
:imagesdir: ../../../../static/images/books/handbook/geom/
endif::[]

include::shared/authors.adoc[]
include::shared/releases.adoc[]
include::shared/hu/mailing-lists.adoc[]
include::shared/hu/teams.adoc[]
include::shared/hu/urls.adoc[]

toc::[]

[[GEOM-synopsis]]
== Áttekintés

Ez a fejezet a FreeBSD-ben található GEOM rendszert mutatja be. Ez a rendszer tömöríti az általa is alkalmazott fontosabb RAID-vezérlõ segédprogramokat. A fejezet nem részletezi, hogy a GEOM konkrétan milyen módon kezeli és vezérli az I/O-t, ahogy azt sem, hogyan mûködik az alapjául szolgáló alrendszer vagy hogy néz ki annak forráskódja. Az ilyen jellegû információk a man:geom[4] man oldalon, valamint az ott felsorolt helyeken találhatóak meg. Továbbá, ez a fejezet magukról a RAID-konfigurációkról sem ad pontos tájékoztatást. Kizárólag csak a GEOM által is támogatott RAID-besorolásokról esik szó.

A fejezet elolvasása során megismerjük:

* a GEOM segítségével milyen fajtájú RAID támogatást érhetünk el;
* hogyan kell használni a rendszer által nyújtott alapvetõ segédeszközöket a különféle RAID-szintek konfigurálásához, karbantartásához és kezeléséhez;
* hogyan kell a GEOM-on keresztül tükrözni, csíkozni, titkosítani és távolról összekapcsolni lemezes eszközöket;
* hogyan kell a GEOM rendszerben összekapcsolt lemezeknél felmerülõ hibákat felderíteni.

A fejezet elolvasásához ajánlott:

* megérteni, hogyan kezeli a FreeBSD a lemezes eszközöket (crossref:disks[disks,Háttértárak]);
* ismerni, hogyan konfiguráljunk és telepítsünk egy új FreeBSD rendszermagot (crossref:kernelconfig[kernelconfig,A FreeBSD rendszermag testreszabása]).

[[GEOM-intro]]
== A GEOM bemutatása

A GEOM rendszer adatszolgáltatókon vagy speciális [.filename]#/dev#-állományokon keresztül hozzáférést és vezérlést tesz lehetõvé bizonyos osztályokhoz - Master Boot Recordokhoz, BSD-címkékhez stb. Számos szoftveres RAID konfiguráció támogatásával a GEOM transzparens elérést tesz lehetõvé mind az operációs rendszer, mind pedig az általa felkínált segédprogramok számára.

[[GEOM-striping]]
== RAID0 - Csíkozás

A csíkozás módszerét használjuk abban az esetben, amikor több lemezmeghajtót akarunk egyetlen kötetté összevonni. A GEOM lemezalrendszer szoftveres támogatást nyújt a RAID0, más néven a lemezcsíkozás megvalósításához.

Egy RAID0 rendszerben az adatokat blokkokra bontva írjuk fel a tömbben található lemezek között szétosztva. Így ahelyett, hogy meg kellene várnunk 256 kb-nyi adat egyetlen lemezre írását, egy RAID0 rendszerben egyszerre íródik 64 kb-nyi adat négy különbözõ lemezre, és ezáltal gyorsabb elérést szolgáltat. Ez a gyorsaság további lemezvezérlõk használatával még jobban fokozható.

Az egy RAID0-csíkozásban résztvevõ lemezek mindegyikének azonos méretûnek kell lennie, mivel az írásra és olvasásra irányuló I/O-kérések a párhuzamos kiszolgálás érdekében összefésülõdnek.

image::striping.png[Példa lemezcsíkozásra]

[.procedure]
====
*Procedure: Csíkozás kialakítása formázatlan ATA-lemezekkel*

. Töltsük be a [.filename]#geom_stripe.ko# modult:
+
[source,bash]
....
# kldload geom_stripe
....
+
. Bizonyosodjuk meg róla, hogy a rendszerünkben található egy szabad csatlakozási pont. Ha majd ezt a kötetet szánjuk rendszerünk gyökérpartíciójának, használjunk erre a célra egy másik könyvtárat, például a [.filename]#/mnt#-ot:
+
[source,bash]
....
# mkdir /mnt
....
+
. Keressük meg a csíkozásra felhasználni kívánt lemezek eszközneveit, és hozzunk létre belõlük egy új csíkozott eszközt. Például, ha két használatban nem levõ, particionálatlan ATA-lemezt, név szerint a [.filename]#/dev/ad2# és [.filename]#/dev/ad3# eszközöket akarjunk csíkozni:
+
[source,bash]
....
# gstripe label -v st0 /dev/ad2 /dev/ad3
Metadata value stored on /dev/ad2.
Metadata value stored on /dev/ad3.
Done.
....
+
. Az így létrejött új köteten most hozzunk létre egy általános címkét, vagy más néven egy partíciós táblát, és telepítsük fel rá a rendszer alapértelmezett rendszerindító programját:
+
[source,bash]
....
# bsdlabel -wB /dev/stripe/st0
....
+
. Ezzel meg kellett jelennie további másik két eszköznek is a [.filename]#/dev/stripe# könyvtárban, a [.filename]#st0# eszköz mellett. Ezek többek közt az [.filename]#st0a# és az [.filename]#st0c#. Itt már ki is tudunk alakítani egy állományrendszert az [.filename]#st0a# eszközön a `newfs` használatával:
+
[source,bash]
....
# newfs -U /dev/stripe/st0a
....
+ 
Sok-sok számot fogunk látni cikázni a képernyõn, majd néhány másodperc múlva befejezõdik a folyamat. Létrehoztuk a kötetet, ami most már készen áll a becsatolásra.
====

A kialakított lemezcsíkozást így tudjuk kézzel csatlakoztatni:

[source,bash]
....
# mount /dev/stripe/st0a /mnt
....

A csíkozott állományrendszert a rendszerindítás folyamán automatikusan becsatlakoztathatjuk, ha elhelyezzük az alábbi kötetinformációkat az [.filename]#/etc/fstab# állományba. Erre a célra [.filename]#stripe# néven létrehozunk egy állandó csatlakozási pontot:

[source,bash]
....
# mkdir /stripe
# echo "/dev/stripe/st0a /stripe ufs rw 2 2" \
      >> /etc/fstab
....

A [.filename]#geom_stripe.ko# modult is automatikusan be kell tölteni a rendszerindítás során. Ehhez a következõ sort kell hozzáadni a [.filename]#/boot/loader.conf# állományhoz:

[source,bash]
....
# echo 'geom_stripe_load="YES"' >> /boot/loader.conf
....

[[GEOM-mirror]]
== RAID1 - Tükrözés

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û (man:da[4]) SCSI-lemezek.

=== Az elsõdleges lemezek tükrözése

Tegyük fel, hogy a FreeBSD az elsõ, [.filename]#da0# nevû lemezmeghajtón található, és a man: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` man: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:

[source,bash]
....
# 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 [.filename]#/dev/mirror/gm# eszközt:

[WARNING]
====

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.
====

[source,bash]
....
# gmirror label -vb round-robin gm0 /dev/da0
....

Erre a rendszernek a következõ módon kell reagálnia:

[source,bash]
....
Metadata value stored on /dev/da0.
Done.
....

A GEOM inicializálásához szükségünk lesz a [.filename]#/boot/kernel/geom_mirror.ko# modul betöltésére:

[source,bash]
....
# gmirror load
....

[NOTE]
====
A parancs sikeres lefutása után a [.filename]#/dev/mirror# könyvtárban létrehoz egy [.filename]#gm0# eszközleírót.
====

A [.filename]#geom_mirror.ko# modul betöltését így tudjuk engedélyezni a rendszer indításakor:

[source,bash]
....
# echo 'geom_mirror_load="YES"' >> /boot/loader.conf
....

Nyissuk meg az [.filename]#/etc/fstab# állományt, és cseréljük le benne az összes korábbi [.filename]#da0# hivatkozást az újonnan kialakított [.filename]#gm0# tükrözés eszközleírójával.

[NOTE]
====
Ha man:vi[1] szövegszerkesztõt használjuk, akkor a következõ módon tudjuk ezt egyszerûen megtenni:

[source,bash]
....
# vi /etc/fstab
....

A man:vi[1] indítása után a `:w /etc/fstab.bak` kiadásával készítsünk az [.filename]#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 [.filename]#da0# hivatkozást a [.filename]#gm0# eszköz nevére.
====

Az így keletkezõ [.filename]#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 [.filename]#gm# lesz:

[.programlisting]
....
# 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:

[source,bash]
....
# shutdown -r now
....

Ennek megfelelõen a rendszer indítása közben a [.filename]#da0# eszköz helyett a [.filename]#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:

[source,bash]
....
# 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 [.filename]#da1# eszközt a tükrözésbe:

[source,bash]
....
# 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õ:

[source,bash]
....
# 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:

[source,bash]
....
      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.

=== Hibakeresés

==== A rendszer nem hajlandó elindulni

Ha a rendszerünk ehhez hasonló módon indul:

[.programlisting]
....
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 man:loader[8] parancssorát. Töltsük be a modult manuálisan:

[source,bash]
....
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 [.filename]#/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:

[.programlisting]
....
options	GEOM_MIRROR
....

Ezzel várhatóan orvosoltuk a problémát.

=== A meghibásodott lemezek cseréje

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 [.filename]#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:

[source,bash]
....
# 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.

[[geom-ggate]]
== Eszközök hálózati illesztése a GEOM-ban

A GEOM távoli eszközök, például lemezek, CD-meghajtók stb. használatát is támogatja a hálózati illesztést szolgáló segédprogramjaival, hasonlóan az NFS-hez.

Kezdésként létre kell hozni a megosztást elõsegítõ állományt. Ez az állomány határozza meg, ki és milyen szinten jogosult használni a megosztott erõforrásokat. Például ha megosztjuk az elsõ SCSI-lemezen a negyedik slice-ot, az alábbi [.filename]#/etc/gg.exports# állomány tökéletesen megfelel:

[.programlisting]
....
192.168.1.0/24 RW /dev/da0s4d
....

Ezzel a belsõ hálózaton levõ összes számítógép képes lesz elérni a [.filename]#da0s4d# partíción található állományrendszert.

Az eszköz megosztásához elõször gondoskodnunk kell róla, hogy ne legyen csatlakoztatva, majd ezután indítsuk el a man:ggated[8] szerver démonját:

[source,bash]
....
# ggated
....

Ezt követõen a `mount` felhasználásával csatoljuk az eszközt a kliensen, az alábbi parancs kiadásával:

[source,bash]
....
# ggatec create -o rw 192.168.1.1 /dev/da0s4d
ggate0
# mount /dev/ggate0 /mnt
....

Innentõl kezdve az eszköz elérhetõ lesz a [.filename]#/mnt# csatlakozási ponton keresztül.

[NOTE]
====
Fontos kiemelnünk, hogy ez a mûvelet eredménytelen, ha az adott eszközt vagy maga a szerver, vagy pedig valamelyik másik kliens már korábban csatolta.
====

Amikor az eszközre már nincs tovább szükségünk, biztonságosan le tudjuk választani az man:umount[8] paranccsal, hasonlóan bármelyik más lemezes eszközhöz.

[[geom-glabel]]
== A lemezes eszközök címkézése

A rendszer indítása közben a FreeBSD rendszermagja a talált eszközöknek megfelelõen mindegyiknek létrehoz egy-egy eszközleírót. Ezzel a próbálgatásos módszerrel együtt jár néhány gond, például mi történik akkor, ha az új lemezes eszközt USB-n keresztül adjuk a rendszerhez? Nagyon valószínû, hogy ez az eszköz megkapja a [.filename]#da0# nevet és ezzel az eredeti [.filename]#da0# eszköz eltolódik a [.filename]#da1# névhez. Ennek köszönhetõen az [.filename]#/etc/fstab# állományban felsorolt állományrendszerek csatolása veszélybe kerül, aminek következtében akár meghiúsulhat a rendszerindulás is.

Az egyik lehetséges megoldása a problémának, ha sorbafûzzük a SCSI eszközeinket, és így a SCSI-kártyához kapcsolt újabb eszköz egy addig nem használt számot fog birtokba venni. Mi helyzet azonban az USB-s eszközökkel, amelyek kiüthetik az elsõdleges SCSI-lemezeinket? Ez egyébként azért történhet meg, mert az USB-s eszközöket általában hamarabb keresi a rendszer, mint a SCSI kártyán levõ eszközöket. Megoldhatjuk úgy ezt a gondot, hogy csak azután csatlakoztatjuk az említett eszközöket, miután a rendszer elindult. Megoldhatjuk viszont úgy is, hogy csak egyetlen ATA-meghajtót használunk és soha nem soroljuk fel a SCSI eszközöket az [.filename]#/etc/fstab# állományban.

Ezeknél kínálkozik azonban egy jobb megoldás! A `glabel` nevû segédprogrammal a rendszergazda vagy a felhasználó úgy tudja címkézni a lemezmeghajtókat, hogy azok a [.filename]#/etc/fstab# állományban szereplõ címkéket használják. Mivel a `glabel` a címkét az adott szolgáltató utolsó szektorában tárolja el, ez a címke megmarad az újraindítás után is. Ha ezt a címkét eszközként használjuk, az állományrendszerek mindig ugyanarról a meghajtóról fognak csatolódni, függetlenül attól, hogy milyen eszközleírón keresztül érjük el ezeket.

[NOTE]
====
Egyáltalán nem állítottuk, hogy egy címke csak állandó lehet. A `glabel` segítségével egyaránt létre lehet hozni állandó és átmeneti címkéket, de csak az állandó címke képes az újraindítás után is megmaradni. A két címketípus közti különbségeket a man:glabel[8] man oldal tárgyalja részletesebben.
====

=== Címketípusok és példák

A címkéknek két típusa létezik, az általános címke és az állományrendszer-címke. A címkék lehetnek állandóak vagy ideiglenesek. Az állandó címkék a man:tunefs[8] vagy man:newfs[8] parancsokkal hozhatóak létre. Ezek a címkék az adott állományrendszer típusa alapján elnevezett alkönyvtárakban jönnek létre a [.filename]#/dev# könyvtáron belül. Például az UFS2 állományrendszer-címkék a [.filename]#/dev/ufs# könyvtárban keletkeznek. Állandó címkék a `glabel label` paranccsal hozhatóak létre. Az ilyen címkék nem függenek az állományrendszerek típusától, a [.filename]#/dev/label# könyvtárban jönnek létre.

Az ideiglenes címkék a következõ induláskor elvesznek. Ezek a címkék a [.filename]#/dev/label# könyvtárban keletkeznek, és ideálisak a kísérletezgetésre. Ideiglenes címkéket a `glabel create` paranccsal hozhatunk létre. Ezzel kapcsolatosan részletesebb felvilágosítást a man:glabel[8] man oldalon találhatunk.

Ha egy UFS2 állományrendszerre szeretnénk tenni egy állandó címkét az adataink megsemmisítése nélkül, adjuk ki a következõ parancsot:

[source,bash]
....
# tunefs -L home /dev/da3
....

[WARNING]
====

Ha az érintett állományrendszeren nincs üres hely, ennek a parancsnak a használata adatvesztéshez vezethet. Ilyen esetben inkább a felesleges állományok eltávolításával kellene törõdnünk, nem pedig címkék hozzáadásával.
====

Ezután egy címkének kell megjelennie a [.filename]#/dev/ufs# könyvtárban, amelyet vegyünk is fel az [.filename]#/etc/fstab# állományba:

[.programlisting]
....
/dev/ufs/home		/home            ufs     rw              2      2
....

[NOTE]
====
Az állományrendszert tilos csatolni a `tunefs` futtatása alatt!
====

Most már a megszokott módon csatolhatjuk az állományrendszert:

[source,bash]
....
# mount /home
....

Ettõl a ponttól kezdve, amíg a [.filename]#geom_label.ko# modul betöltõdik a rendszerindítás során a [.filename]#/boot/loader.conf# állományon keresztül, vagy a `GEOM_LABEL` opció megtalálható a rendszermag konfigurációs állományában, az eszközleíró a rendszerre nézve minden komolyabb következmény nélkül megváltozhat.

Állományrendszereket létrehozhatunk alapértelmezett címkével is a `newfs -L` paraméterével. Errõl részletesebben a man:newfs[8] man oldalon olvashatunk.

Az alábbi paranccsal tudjuk törölni a címkét:

[source,bash]
....
# glabel destroy home
....

A következõ példában azt láthatjuk, hogyan címkézzük fel a rendszerindító lemezünk partícióit.

.Partíciók címkézése a rendszerindító lemezen
[example]
====
A rendszerindításra használt lemezen levõ partíciók felcímkézésével a rendszer képes lesz akkor is minden probléma nélkül elindulni, amikor áthelyezzük egy másik vezérlõre vagy átrakjuk egy másik számítógépbe. Például most tegyük fel, hogy van egy ATA csatolós lemezünk, amelyet a rendszer [.filename]#ad0# néven ismert fel. Továbbá azt is feltételezzük, hogy a FreeBSD telepítése esetén megszokott partícionálási sémát választottuk, ahol [.filename]#/#, [.filename]#/var#, [.filename]#/usr# és [.filename]#/tmp# állományrendszereink, valamint egy lapozóterületünk van.

Indítsuk újra a rendszerünket és a man:loader[8] menüjében a kbd:[4] billentyû lenyomásával válasszuk az egyfelhasználós módot. Ezt követõen adjuk ki a következõ parancsokat:

[source,bash]
....
# glabel label rootfs /dev/ad0s1a
GEOM_LABEL: Label for provider /dev/ad0s1a is label/rootfs
# glabel label var /dev/ad0s1d
GEOM_LABEL: Label for provider /dev/ad0s1d is label/var
# glabel label usr /dev/ad0s1f
GEOM_LABEL: Label for provider /dev/ad0s1f is label/usr
# glabel label tmp /dev/ad0s1e
GEOM_LABEL: Label for provider /dev/ad0s1e is label/tmp
# glabel label swap /dev/ad0s1b
GEOM_LABEL: Label for provider /dev/ad0s1b is label/swap
# exit
....

A rendszer indítása ezután többfelhasználós módban folytatódik. A rendszerindítás befejezõdése után nyissuk meg az [.filename]#/etc/fstab# állományt és írjuk át a hagyományos eszközneveket a hozzájuk tartozó címkékre. Az [.filename]#/etc/fstab# végleges változata ennek megfelelõen körülbelül így fog kinézni:

[.programlisting]
....
# Eszköz                 Csatlakozási pont  Típus   Beállítások     Dump    Menet
/dev/label/swap          none               swap    sw              0        0
/dev/label/rootfs        /                  ufs     rw              1        1
/dev/label/tmp           /tmp               ufs     rw              2        2
/dev/label/usr           /usr               ufs     rw              2        2
/dev/label/var           /var               ufs     rw              2        2
....

A rendszer most már újraindítható. Ha mindent jól csináltunk, akkor a rendszer indítása problémáktól mentesen fog zajlani és a `mount` parancs eredménye a következõ lesz:

[source,bash]
....
# mount
/dev/label/rootfs on / (ufs, local)
devfs on /dev (devfs, local)
/dev/label/tmp on /tmp (ufs, local, soft-updates)
/dev/label/usr on /usr (ufs, local, soft-updates)
/dev/label/var on /var (ufs, local, soft-updates)
....

====

A FreeBSD 7.2 kiadásától kezdõdõen a man:glabel[8] osztály az UFS esetén támogatja az `ufsid`, az állományrendszer egyedi rendszerszintû azonosítójából származtatott új címketípus használatát. Ezek a címkék a rendszer indítása során a [.filename]#/dev/ufsid# könyvtárban jönnek automatikusan létre. Az `ufsid` címkéken keresztül tudunk az [.filename]#/etc/fstab# állományban állományrendszereket csatlakoztatni. A jelenleg aktív állományrendszereket és azok `ufsid` azonosítóit a `glabel status` paranccsal tudjuk lekérdezni:

[source,bash]
....
% glabel status
                  Name  Status  Components
ufsid/486b6fc38d330916     N/A  ad4s1d
ufsid/486b6fc16926168e     N/A  ad4s1f
....

Ebben a példában az [.filename]#ad4s1d# képviseli a [.filename]#/var# állományrendszert, míg a [.filename]#ad4s1f# a [.filename]#/usr# állományrendszert. Az adott `ufsid` értékek megadásával az [.filename]#/etc/fstab# állományban a következõképpen tudjuk csatlakoztatni ezeket az állományrendszereket:

[.programlisting]
....
/dev/ufsid/486b6fc38d330916        /var        ufs        rw        2      2
/dev/ufsid/486b6fc16926168e        /usr        ufs        rw        2      2
....

Minden `ufsid` címkével rendelkezõ partíció csatlakoztatható ezen a módon. Ekkor nem kell manuálisan létrehoznunk a számunkra állandó címkéket, így automatikusan élvethezhetjük az eszköznévtõl független csatlakoztatás elõnyeit.

[[geom-gjournal]]
== Naplózó UFS GEOM-on keresztül

A FreeBSD 7.0-ás verziójának megjelenésével egy rég várt kiegészítés, a naplózás vált végre elérhetõvé vált. Maga az implementáció a GEOM alrendszeren keresztül érhetõ el, és a man:gjournal[8] segédprogram segítségével könnyedén beállítható.

Mit is jelent a naplózás? A naplózás támogatásával a rendszer egy naplót vezet az állományrendszert érintõ tranzakciókról - például az olyan változtatásokról, amelyek egy komplett írási mûveletet eredményeznek - mielõtt még a metaadatok és lemezírási mûveletek szabályosan befejezõdnének. Ez a könyvelés késõbb visszajátszható az állományrendszerben lezajlott tranzakciók reprodukálásához, és ezzel megelõzhetõek az állományrendszerben keletkezõ esetleges ellentmondások.

Ez egy újabb módszer az adatvesztés és az állományrendszerben elõforduló ellentmondások elkerülésére. Eltérõen a Soft Updates módszertõl, ahol a metaadatok frissítését biztosítják és követik nyomon, vagy a Snapshots módszertõl, ahol pillanatképeket tárolunk az állományrendszerrõl, itt egy konkrét naplót tárolunk a lemez erre a célra fenntartott részén, amely bizonyos esetekben akár egy teljes külön merevlemez is lehet.

Ellentétben a többi naplózó állományrendszertõl, a `gjournal` módszere blokk alapú és nem az állományrendszer részeként került implementálásra - csupán a GEOM egyik bõvítménye.

A `gjournal` támogatásához a FreeBSD rendszermag konfigurációs állományában be kell állítani a következõ opciót - amely a 7.0 és késõbbi rendszereken alapbeállítás:

[.programlisting]
....
options	UFS_GJOURNAL
....

Amennyiben naplózással rendelkezõ köteteket szeretnénk a rendszerindítás során csatlakoztatni, a [.filename]#/boot/loader.conf# állományban következõ sor hozzáadásával töltessük be a [.filename]#geom_journal.ko# modult:

[.programlisting]
....
geom_journal_load="YES"
....

Szükség esetén ezt a funkciót akár a rendszermagba is beépíthetjük, ha felvesszük a következõ sort a rendszermag konfigurációs állományába:

[.programlisting]
....
options	GEOM_JOURNAL
....

Ha ezt aktiváltuk, egy szabad állományrendszeren az alábbi lépéseken keresztül tudunk létrehozni egy naplót, feltéve, hogy a [.filename]#da4# egy új SCSI-meghajtó:

[source,bash]
....
# gjournal load
# gjournal label /dev/ad4
....

Ennél a pontnál lennie kell egy [.filename]#/dev/da4# és egy [.filename]#/dev/da4.journal# eszközleírónak. Hozzunk létre egy állományrendszert ezen az eszközön:

[source,bash]
....
# newfs -O 2 -J /dev/da4.journal
....

Ez a parancs létrehoz egy UFS2 állományrendszert a naplóval rendelkezõ eszközön.

Csatoljuk is be a `mount` segítségével az eszközt kívánt csatlakozási pontra:

[source,bash]
....
# mount /dev/da4.journal /mnt
....

[NOTE]
====
Ha több slice-unk is van, akkor a napló mindegyik slice-hoz külön létrejön. Például, ha az [.filename]#ad4s1# és [.filename]#ad4s2# egyaránt slice-ok, akkor a `gjournal` legyártja az [.filename]#ad4s1.journal# és [.filename]#ad4s2.journal# eszközleírókat.
====

A jobb teljesítmény elérése érdekében kívánatos lehet a naplót egy másik lemezen tartani. Ilyen esetekben a naplózás bekapcsolásához a naplót biztosító szolgáltatót vagy tárolóeszközt a naplózni kívánt eszköz után kell szerepeltetni. A naplózás akár az aktuálisan használt állományrendszeren is aktiválható a `tunefs` használatával. Az állományrendszer módosításakor viszont mindig érdemes biztonsági másolatot készíteni! Az esetek többségében a `gjournal` hibát fog jelezni, mivel nem tudja létrehozni a naplót, azonban ez nem védi meg az adatainkat a `tunefs` helytelen használata által okozott sérülésektõl.

A rendszerindító lemezen is lehet naplózást használni. Ennek részleit a link:{gjournal-desktop}[Naplózó UFS használata asztali számítógépeken] címû cikkbõl ismerhetjük meg.
