doc/documentation/content/hu/books/handbook/geom/_index.adoc
Sergio Carlavilla Delgado 989d921f5d Migrate doc to Hugo/AsciiDoctor
I'm very pleased to announce the release of
our new website and documentation using
the new toolchain with Hugo and AsciiDoctor.

To get more information about the new toolchain
please read the FreeBSD Documentation Project Primer[1],
Hugo docs[2] and AsciiDoctor docs[3].

Acknowledgment:
Benedict Reuschling <bcr@>
Glen Barber <gjb@>
Hiroki Sato <hrs@>
Li-Wen Hsu <lwhsu@>
Sean Chittenden <seanc@>
The FreeBSD Foundation

[1] https://docs.FreeBSD.org/en/books/fdp-primer/
[2] https://gohugo.io/documentation/
[3] https://docs.asciidoctor.org/home/

Approved by:    doceng, core
2021-01-26 00:31:29 +01:00

560 lines
28 KiB
Text

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