aboutsummaryrefslogtreecommitdiff
path: root/de_DE.ISO8859-1/books/handbook/geom/chapter.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'de_DE.ISO8859-1/books/handbook/geom/chapter.sgml')
-rw-r--r--de_DE.ISO8859-1/books/handbook/geom/chapter.sgml942
1 files changed, 942 insertions, 0 deletions
diff --git a/de_DE.ISO8859-1/books/handbook/geom/chapter.sgml b/de_DE.ISO8859-1/books/handbook/geom/chapter.sgml
new file mode 100644
index 0000000000..f95d4139bb
--- /dev/null
+++ b/de_DE.ISO8859-1/books/handbook/geom/chapter.sgml
@@ -0,0 +1,942 @@
+<!--
+ The FreeBSD Documentation Project
+ The FreeBSD German Documentation Project
+
+ $FreeBSD$
+ $FreeBSDde: de-docproj/books/handbook/geom/chapter.sgml,v 1.20 2011/12/19 15:25:08 bcr Exp $
+ basiert auf: 1.51
+-->
+
+<chapter id="GEOM">
+ <chapterinfo>
+ <authorgroup>
+ <author>
+ <firstname>Tom</firstname>
+ <surname>Rhodes</surname>
+ <contrib>Geschrieben von </contrib>
+ </author>
+ </authorgroup>
+ <authorgroup>
+ <author>
+ <firstname>Daniel</firstname>
+ <surname>Seuffert</surname>
+ <contrib>&Uuml;bersetzt von </contrib>
+ </author>
+ <author>
+ <firstname>Johann</firstname>
+ <surname>Kois</surname>
+ </author>
+ </authorgroup>
+ </chapterinfo>
+
+ <title>GEOM: Modulares Framework zur
+ Plattentransformation</title>
+
+ <sect1 id="GEOM-synopsis">
+ <title>&Uuml;bersicht</title>
+
+ <indexterm>
+ <primary>GEOM</primary>
+ </indexterm>
+ <indexterm>
+ <primary>GEOM Disk Framework</primary>
+ <see>GEOM</see>
+ </indexterm>
+
+ <para>Dieses Kapitel behandelt den Einsatz von Laufwerken mit
+ dem GEOM-Framework in &os;. Dies beinhaltet auch die wichtigen
+ <acronym role="Redundant Array of Inexpensive
+ Disks">RAID</acronym>-&Uuml;berwachungswerkzeuge, welche das
+ Framework zur Konfiguration nutzen. Dieses Kapitel enth&auml;lt
+ keine tiefsch&uuml;rfenden Betrachtungen, wie GEOM I/O nutzt
+ oder steuert, sein zugrundeliegendes Subsystem oder den
+ Quelltext von GEOM. Diese Information wird durch die
+ &man.geom.4;-Manualpage und seine zahlreichen <quote>SEE ALSO</quote>-Verweise
+ bereitgestellt. Dieses Kapitel ist auch kein ausf&uuml;hrlicher
+ F&uuml;hrer f&uuml;r
+ <acronym>RAID</acronym>-Konfigurationen. Nur durch GEOM
+ unterst&uuml;tzte <acronym>RAID</acronym>-Klassen werden
+ er&ouml;rtert.</para>
+
+ <para>Nach Lesen dieses Kapitels werden Sie folgendes
+ wissen:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Welche Art von
+ <acronym>RAID</acronym>-Unterst&uuml;tzung durch GEOM
+ verf&uuml;gbar ist.</para>
+ </listitem>
+
+ <listitem>
+ <para>Wie man die Basis-Dienstprogramme nutzt, um
+ verschiedene <acronym>RAID</acronym>-Stufen zu
+ konfigurieren, zu manipulieren und zu warten.</para>
+ </listitem>
+
+ <listitem>
+ <para>Wie man mittels GEOM spiegelt, striped,
+ verschl&uuml;sselt und entfernte Laufwerke verbindet.</para>
+ </listitem>
+
+ <listitem>
+ <para>Wie man an Laufwerken, welche an das GEOM-Framework
+ angeschlossen sind, Fehler behebt.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Bevor Sie dieses Kapitel lesen, sollten Sie:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Verstehen, wie &os; Laufwerke behandelt
+ (<xref linkend="disks">).</para>
+ </listitem>
+
+ <listitem>
+ <para>Wissen wie man einen neuen &os;-Kernel installiert
+ und konfiguriert (<xref linkend="kernelconfig">).</para>
+ </listitem>
+ </itemizedlist>
+ </sect1>
+
+ <sect1 id="GEOM-intro">
+ <title>Einf&uuml;hrung in GEOM</title>
+
+ <para>GEOM erlaubt den Zugriff und die Kontrolle von Klassen
+ &mdash; Master Boot Records, <acronym>BSD</acronym>-Label usw.
+ &mdash; durch die Nutzung von Datentr&auml;gern (Providern) oder
+ den besonderen Dateien in <filename
+ role="directory">/dev</filename>. Verschiedene Software
+ <acronym>RAID</acronym>-Konfigurationen unterst&uuml;tzend, wird
+ GEOM Ihnen transparenten Zugriff auf das Betriebssystem und
+ System-Dienstprogramme gew&auml;hren.</para>
+ </sect1>
+
+ <sect1 id="GEOM-striping">
+ <sect1info>
+ <authorgroup>
+ <author>
+ <firstname>Tom</firstname>
+ <surname>Rhodes</surname>
+ <contrib>Geschrieben von </contrib>
+ </author>
+ <author>
+ <firstname>Murray</firstname>
+ <surname>Stokely</surname>
+ </author>
+ </authorgroup>
+ </sect1info>
+
+ <title>RAID0 - Striping</title>
+
+ <indexterm>
+ <primary>GEOM</primary>
+ </indexterm>
+ <indexterm>
+ <primary>Striping</primary>
+ </indexterm>
+
+ <para>Striping (stripe = Streifen) ist eine Methode, um
+ verschiedene Laufwerke in einem einzigen Datentr&auml;ger
+ zusammenzufassen. In vielen F&auml;llen wird dies durch die
+ Nutzung von Hardware-Controllern bewerkstelligt. Das
+ GEOM-Subsystem unterst&uuml;tzt
+ Software-<acronym>RAID</acronym>0 (welches auch als Striping
+ bekannt ist).</para>
+
+ <para>In einem <acronym>RAID</acronym>0-System werden die Daten
+ in einzelne Bl&ouml;cke aufgeteilt, welche &uuml;ber alle
+ angeschlossenen Laufwerke in einem Datenfeld (Array) geschrieben
+ werden. Anstatt darauf warten zu m&uuml;ssen, dass 256K auf
+ ein einzelnes Laufwerk geschrieben werden, kann ein
+ <acronym>RAID</acronym>0-System gleichzeitig 64K auf jedes von 4
+ Laufwerken schreiben mit entsprechend besserer I/O-Leistung.
+ Dieser Durchsatz kann durch die Verwendung mehrerer
+ Controller noch zus&auml;tzlich gesteigert werden.</para>
+
+ <para>Jedes Laufwerk in einem <acronym>RAID</acronym>0-Stripe
+ muss die gleiche Gr&ouml;&szlig;e haben, da
+ I/O-Anforderungen f&uuml;r das Lesen und Schreiben
+ abwechselnd auf mehrere Laufwerke parallel erfolgen.</para>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="geom/striping" align="center">
+ </imageobject>
+
+ <textobject>
+ <phrase>Disk Striping Illustration</phrase>
+ </textobject>
+ </mediaobject>
+
+ <procedure>
+ <title>Erzeugen eines Stripe von unformatierten
+ ATA-Platten</title>
+
+ <step>
+ <para>Laden Sie das
+ <filename>geom_stripe.ko</filename>-Modul:</para>
+
+ <screen>&prompt.root; <userinput>kldload geom_stripe</userinput></screen>
+ </step>
+
+ <step>
+ <para>Stellen Sie sicher, dass ein geeigneter Mount-Punkt
+ existiert. Falls dieser Datentr&auml;ger eine Root-Partition
+ werden soll, dann nutzen Sie zeitweise einen anderen
+ Mount-Punkt, beispielsweise <filename
+ role="directory">/mnt</filename>:</para>
+
+ <screen>&prompt.root; <userinput>mkdir /mnt</userinput></screen>
+ </step>
+
+ <step>
+ <para>Bestimmen Sie die Ger&auml;tenamen derjenigen Platten,
+ welche gestriped werden sollen, und erzeugen Sie ein neues
+ Stripe-Ger&auml;t. Das folgende Beispiel verwendet zwei
+ unbenutzte und unpartitionierte
+ <acronym>ATA</acronym>-Platten, die gestriped werden sollen.
+ Lauten die Ger&auml;tenamen <filename>/dev/ad2</filename>
+ und <filename>/dev/ad3</filename>, so verwenden Sie folgenden
+ Befehl:</para>
+
+ <screen>&prompt.root; <userinput>gstripe label -v st0 /dev/ad2 /dev/ad3</userinput>
+Metadata value stored on /dev/ad2.
+Metadata value stored on /dev/ad3.
+Done.</screen>
+
+ </step>
+
+ <step>
+ <para>Schreiben Sie einen Standard-Label (auch als
+ Partitions-Tabelle bekannt) auf den neuen Datentr&auml;ger
+ und installieren Sie den normalen Bootstrap-Code:</para>
+
+ <screen>&prompt.root; <userinput>bsdlabel -wB /dev/stripe/st0</userinput></screen>
+ </step>
+
+ <step>
+ <para>Dieser Prozess sollte zwei weitere Ger&auml;te im
+ Verzeichnis <filename
+ class="directory">/dev/stripe</filename> (zus&auml;tzlich zum
+ Ger&auml;t <devicename>st0</devicename>) erzeugt haben. Diese
+ schliessen <devicename>st0a</devicename> und
+ <devicename>st0c</devicename> ein. Nun kann ein Dateisystem
+ auf dem Ger&auml;t <devicename>st0a</devicename> mit dem
+ <command>newfs</command>-Dienstprogramm erzeugt
+ werden:</para>
+
+ <screen>&prompt.root; <userinput>newfs -U /dev/stripe/st0a</userinput></screen>
+
+ <para>Viele Zahlen rauschen nun &uuml;ber Ihren Bildschirm
+ und nach ein paar Sekunden wird der Prozess abgeschlossen
+ sein. Der Datentr&auml;ger wurde erzeugt und kann in den
+ Verzeichnisbaum eingeh&auml;ngt werden.</para>
+ </step>
+ </procedure>
+
+ <para>Um das erzeugte Stripe manuell zu mounten:</para>
+
+ <screen>&prompt.root; <userinput>mount /dev/stripe/st0a /mnt</userinput></screen>
+
+ <para>Um das erzeugte Dateisystem automatisch w&auml;hrend des
+ Startvorgangs zu mounten, m&uuml;ssen Sie die
+ Datentr&auml;gerinformation in die Datei
+ <filename>/etc/fstab</filename> schreiben. Dazu legen Sie einen
+ permanenten Mountpunkt namens
+ <filename class="directory">stripe</filename> an:</para>
+
+ <screen>&prompt.root; <userinput>mkdir /stripe</userinput>
+&prompt.root; <userinput>echo "/dev/stripe/st0a /stripe ufs rw 2 2" \</userinput>
+ <userinput>&gt;&gt; /etc/fstab</userinput></screen>
+
+ <para>Das <filename>geom_stripe.ko</filename>-Modul muss
+ ebenfalls automatisch beim Systemstart geladen werden (durch
+ die Aufnahme der folgenden Zeile in die Datei
+ <filename>/boot/loader.conf</filename>):</para>
+
+ <screen>&prompt.root; <userinput>echo 'geom_stripe_load="YES"' &gt;&gt; /boot/loader.conf</userinput></screen>
+ </sect1>
+
+ <sect1 id="GEOM-mirror">
+ <title>RAID1 - Spiegelung</title>
+
+ <indexterm>
+ <primary>GEOM</primary>
+ </indexterm>
+ <indexterm>
+ <primary>Disk Mirroring</primary>
+ </indexterm>
+
+ <para>Spiegelung (Mirroring) ist eine Technik, welche von vielen
+ Firmen und Heimnutzern eingesetzt wird, um Daten ohne
+ Unterbrechung zu sichern. Wenn ein Spiegel existiert, dann
+ bedeutet dies einfach nur, dass PlatteB die PlatteA
+ dupliziert. Oder PlatteC+D duplizieren PlatteA+A. Der
+ wichtigste Aspekt ist, dass Daten einer Platte oder
+ Partition dupliziert werden, unabh&auml;ngig von der
+ Konfiguration der Platte. Dadurch kann sp&auml;ter diese
+ Information leichter wiederhergestellt, ohne
+ Zugriffsunterbrechung gesichert oder sogar physisch in einem
+ Datentresor gelagert werden.</para>
+
+ <para>Stellen Sie zu Beginn sicher, dass ihr System zwei
+ Platten mit identischer Gr&ouml;&szlig;e aufweist. In dieser
+ &Uuml;bung gehen wir davon aus, dass es direkt
+ zug&auml;ngliche (&man.da.4;) <acronym>SCSI</acronym>-Platten
+ sind.</para>
+
+ <sect2>
+ <title>Die prim&auml;re Platte spiegeln</title>
+
+ <para>Angenommen, &os; wurde auf der ersten Platte
+ <devicename>da0</devicename> installiert, dann sollte
+ &man.gmirror.8; angewiesen werden, seine prim&auml;ren Daten
+ auf dieser Platte zu speichern.</para>
+
+ <para>Bevor Sie den Spiegel aufbauen, sollten Sie die maximale
+ Protokollierung aktivieren und den Zugang zum Ger&auml;t
+ gestatten. Dazu setzen Sie die &man.sysctl.8;-Option
+ <varname>kern.geom.debugflags</varname> auf den folgenden
+ Wert:</para>
+
+ <screen>&prompt.root; <userinput>sysctl kern.geom.debugflags=17</userinput></screen>
+
+ <para>Nun k&ouml;nnen Sie den Spiegel aufbauen. Beginnen Sie den
+ Prozess, indem Sie die Metadaten-Informationen auf das Ger&auml;t
+ der prim&auml;ren Platte speichern. Konkret erzeugen Sie dabei
+ das Ger&auml;t
+ <filename class="devicefile">/dev/mirror/gm</filename>, indem Sie
+ den folgenden Befehl ausf&uuml;hren:</para>
+
+ <warning>
+ <para>Die Spiegelung der Bootplatte kann zu Datenverlust
+ f&uuml;hren, wenn Sie Daten im letzten Sektor der Platte
+ gespeichert haben. Dieses Risiko l&auml;sst sich minimieren,
+ wenn Sie den Spiegel unmittelbar nach der Installation von
+ &os; aufsetzen. Die im folgenden beschriebene Vorgehensweise ist
+ ebenfalls nicht kompatibel mit den
+ Standard-Installationseinstellungen von
+ &os;&nbsp;9.<replaceable>X</replaceable>, die das neue
+ <acronym>GPT</acronym>-Partitionsschema verwenden. GEOM wird
+ <acronym>GPT</acronym>-Metadaten &uuml;berschreiben, was zu
+ Datenverlust und einem m&ouml;glicherweise nicht bootbarem System
+ f&uuml;hrt.</para>
+ </warning>
+
+ <screen>&prompt.root; <userinput>gmirror label -vb round-robin gm0 /dev/da0</userinput></screen>
+
+ <para>Ihr System sollte wie folgt antworten:</para>
+
+ <screen>Metadata value stored on /dev/da0.
+Done.</screen>
+
+ <para>Initialisieren Sie GEOM. Dadurch wird das Kernelmodul
+ <filename>/boot/kernel/geom_mirror.ko</filename> geladen:</para>
+
+ <screen>&prompt.root; <userinput>gmirror load</userinput></screen>
+
+ <note>
+ <para>Wenn dieser Befehl erfolgreich ausgef&uuml;hrt wurde, wird
+ die Ger&auml;tedatei <devicename>gm0</devicename> im
+ Verzeichnis <filename class="directory">/dev/mirror</filename>
+ erzeugt.<para>
+ </note>
+
+ <para>Stellen Sie sicher, dass das Kernelmodul
+ <filename>geom_mirror.ko</filename> beim Systemstart automatisch
+ geladen wird:</para>
+
+ <screen>&prompt.root; <userinput>echo 'geom_mirror_load="YES"' &gt;&gt; /boot/loader.conf</userinput></screen>
+
+ <para>Bearbeiten Sie die Datei <filename>/etc/fstab</filename>
+ und ersetzen Sie alle Verweise auf die alte Ger&auml;tedatei
+ <devicename>da0</devicename> durch die neue Ger&auml;tedatei
+ <devicename>gm0</devicename> des Plattenspiegels. Um die Datei
+ <filename>/etc/fstab</filename> bearbeiten zu k&ouml;nnen,
+ m&uuml;ssen Sie als Benutzer <username>root</username> am
+ System angemeldet sein.</para>
+
+ <note>
+ <para>Sollte &man.vi.1; ihr bevorzugter Texteditor sein,
+ kouml;nnen Sie diese &Auml;nderungen ganz einfach wie
+ folgt durchf&uuml;hren:</para>
+
+ <screen>&prompt.root; <userinput>vi /etc/fstab</userinput></screen>
+
+ <para>Bevor Sie die Datei bearbeiten, sollten Sie ein Backup
+ anlegen. Haben Sie die Datei mit &man.vi.1; ge&ouml;ffnet,
+ k&ouml;nnen Sie durch die Eingabe von
+ <userinput>:w /etc/fstab.bak</userinput> eine Sicherungskopie
+ der Datei anlegen. Danach ersetzen Sie alle alten Referenzen
+ auf <devicename>da0</devicename> durch
+ <devicename>gm0</devicename>, indem Sie
+ <userinput>:%s/da/mirror\/gm/g</userinput> eingeben.<para>
+ </note>
+
+ <para>Die ge&auml;nderte <filename>fstab</filename> sollte nun
+ &auml;hnlich wie im folgenden Beispiel aussehen. Es spielt
+ dabei keine Rolle, ob Sie <acronym>SCSI</acronym>- oder
+ <acronym>ATA</acronym>-Platten verwenden. Das
+ <acronym>RAID</acronym>-Ger&auml;t hei&szlig;t in jedem Fall
+ <devicename>gm</devicename>.</para>
+
+ <programlisting># Device Mountpoint FStype Options Dump Pass#
+/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</programlisting>
+
+ <para>F&uuml;hren Sie einen Systemneustart durch:</para>
+
+ <screen>&prompt.root; <userinput>shutdown -r now</userinput></screen>
+
+ <para>Wenn das System gestartet wird, sollten Sie nun nur noch
+ <devicename>gm0</devicename>-Ger&auml;te anstatt der bisherigen
+ <devicename>da0</devicename>-Ger&auml;te sehen. Nachdem das
+ System vollst&auml;ndig initialisiert wurde, k&ouml;nnen Sie
+ die neue Konfiguration testen, indem Sie den Befehl
+ <command>mount</command> ausf&uuml;hren:</para>
+
+ <screen>&prompt.root; <userinput>mount</userinput>
+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</screen>
+
+ <para>Hier ist alles in Ordnung. Alle Werte sehen aus wie
+ erwartet. Um die Synchronisierung zu beginnen, integrieren
+ Sie nun die Platte <devicename>da1</devicename> in den
+ Spiegel, indem Sie den folgenden Befehl eingeben:</para>
+
+ <screen>&prompt.root; <userinput>gmirror insert gm0 /dev/da1</userinput></screen>
+
+ <para>W&auml;hrend die Platten gespiegelt werden, k&ouml;nnen
+ Sie den Fortschritt durch die Eingabe des folgenden Befehls
+ &uuml;berpr&uuml;fen:</para>
+
+ <screen>&prompt.root; <userinput>gmirror status</userinput></screen>
+
+ <para>Nachdem die Plattenspiegelung erfolgreich abgeschlossen
+ wurde (und alle Daten synchronisiert wurden), sollte Sie
+ eine Ausgabe &auml;hnlich der folgenden erhalten, wenn Sie
+ den Befehl erneut ausf&uuml;hren:</para>
+
+ <screen> Name Status Components
+mirror/gm0 COMPLETE da0
+ da1</screen>
+
+ <para>Sollten Probleme aufgetreten oder sollte die
+ Synchronisierung noch nicht abgeschlossen sein, w&auml;re
+ der Status <literal>DEGRADED</literal> anstatt
+ <literal>COMPLETE</literal>.</para>
+ </sect2>
+
+ <sect2>
+ <title>Fehlerbehebung</title>
+
+ <sect3>
+ <title>Das System weigert sich zu starten</title>
+
+ <para>Falls das System startet und eine Eingabeaufforderung
+ &auml;hnlich der folgenden erscheint:</para>
+
+ <programlisting>ffs_mountroot: can't find rootvp
+Root mount failed: 6
+mountroot></programlisting>
+
+ <para>Starten Sie den Rechner neu mit der Power- oder
+ Resettaste. W&auml;hlen Sie im Startmen&uuml; Option sechs
+ (6). Dadurch erscheint eine Eingabeaufforderung f&uuml;r
+ &man.loader.8;. Laden Sie nun das Kernelmodul
+ h&auml;ndisch:</para>
+
+ <screen>OK? <userinput>load geom_mirror</userinput>
+OK? <userinput>boot</userinput></screen>
+
+ <para>Falls dies funktioniert, wurde das Modul (aus welchen
+ Gr&uuml;nden auch immer) nicht richtig geladen. Pr&uuml;fen
+ Sie, ob Ihr Eintrag in der Datei
+ <filename>/boot/loader.conf</filename> korrekt ist. Sollte
+ das Problem weiterhin bestehen, nehmen Sie die Zeile</para>
+
+ <programlisting>options GEOM_MIRROR</programlisting>
+
+ <para>in die Konfigurationsdatei des Kernels auf und f&uuml;hren
+ Sie einen Rebuild und eine erneute Installation durch. Dies
+ sollte das Problem beseitigen.</para>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>Wiederherstellung des Systems nach einem
+ Plattenausfall</title>
+
+ <para>Das Sch&ouml;ne an der Plattenspiegelung ist, dass eine
+ kaputte Platte ersetzt werden kann, ohne dass Sie dabei
+ Daten verlieren.</para>
+
+ <para>Basierend auf der vorhin besprochenen
+ <acronym>RAID</acronym>1-Konfiguration, nehmen wir nun an, dass
+ die Platte <devicename>da1</devicename> ausgefallen ist und daher
+ ersetzt werden muss. Um dies zu tun, m&uuml;ssen Sie
+ feststellen, welche Platte ausgefallen ist und das System
+ herunterfahren. Nun k&ouml;nnen Sie die kaputte Platte gegen
+ eine neue Platte austauschen und das System wieder starten.
+ Nachdem der Systemstart abgeschlossen ist, verwenden Sie die
+ folgenden Befehle, um die Plattenspiegelung wieder zu
+ reaktivieren:</para>
+
+ <screen>&prompt.root; <userinput>gmirror forget gm0</userinput></screen>
+
+ <screen>&prompt.root; <userinput>gmirror insert gm0 /dev/da1</userinput></screen>
+
+ <para>Der Befehl <command>gmirror</command> <option>status</option>
+ erlaubt es Ihnen, den Fortschritt bei der Wiederherstellung der
+ Plattenspiegelung zu beobachten. Das ist alles, was Sie tun
+ m&uuml;ssen.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="geom-ggate">
+ <title>GEOM Gate Netzwerkger&auml;te</title>
+
+ <para>GEOM unterst&uuml;tzt die Verwendung entfernter Ger&auml;te
+ wie Festplatten, CD-ROMs, Dateien usw. mittels Nutzung
+ der Gate-Dienstprogramme. Dies ist vergleichbar mit
+ <acronym>NFS</acronym>.</para>
+
+ <para>Zu Beginn muss eine Exportdatei erzeugt werden. Diese
+ Datei legt fest, wer Zugriff auf die exportierten Ressourcen
+ hat und welche Zugriffstechniken angeboten werden. Um zum
+ Beispiel den vierten Slice auf der ersten
+ <acronym>SCSI</acronym>-Platte zu exportieren, ist die
+ folgende Datei <filename>/etc/gg.exports</filename>
+ mehr als ausreichend:</para>
+
+ <programlisting>192.168.1.0/24 RW /dev/da0s4d</programlisting>
+
+ <para>Sie wird allen Hosts innerhalb des privaten Netzwerkes
+ den Zugriff auf das Dateisystem auf der Partition
+ <devicename>da0s4d</devicename> erlauben.</para>
+
+ <para>Um dieses Ger&auml;t zu exportieren, stellen Sie bitte
+ sicher, dass es momentan nicht gemounted ist und
+ starten Sie den &man.ggated.8; Server-Daemon:</para>
+
+ <screen>&prompt.root; <userinput>ggated</userinput></screen>
+
+ <para>Um nun <command>mount</command> auf der Client-Maschine
+ auszuf&uuml;hren, geben Sie bitte die folgenden Befehle
+ ein:</para>
+
+ <screen>&prompt.root; <userinput>ggatec create -o rw 192.168.1.1 /dev/da0s4d</userinput>
+ggate0
+&prompt.root; <userinput>mount /dev/ggate0 /mnt</userinput></screen>
+
+ <para>Von nun an kann auf das Ger&auml;t &uuml;ber den Mount-Punkt
+ <filename class="directory">/mnt</filename> zugegriffen
+ werden.</para>
+
+ <note>
+ <para>Es sollte darauf hingewiesen werden, dass dies
+ scheitern wird, falls das Ger&auml;t momentan entweder
+ auf dem Server oder irgendeiner anderen Maschine
+ gemountet ist.</para>
+ </note>
+
+ <para>Wenn das Ger&auml;t nicht l&auml;nger gebraucht wird,
+ dann kann es mit dem Befehl &man.umount.8;
+ ausgeh&auml;ngt werden (genauso wie jedes andere Laufwerk
+ auch).</para>
+ </sect1>
+
+ <sect1 id="geom-glabel">
+ <title>Das Labeln von Laufwerken</title>
+
+ <indexterm>
+ <primary>GEOM</primary>
+ </indexterm>
+ <indexterm>
+ <primary>Disk Labels</primary>
+ </indexterm>
+
+ <para>W&auml;hrend der Initialisierung des Systems legt der
+ &os;-Kernel f&uuml;r jedes gefundene Ger&auml;t Knotenpunkte
+ an. Diese Methode f&uuml;r die &Uuml;berpr&uuml;fung auf
+ vorhandene Ger&auml;te wirft einige Fragen auf. Was passiert
+ beispielsweise, wenn ein neues
+ <acronym>USB</acronym>-Laufwerk hinzugef&uuml;gt wird?
+ Es ist sehr wahrscheinlich, dass ein
+ Flash-Speicher-Ger&auml;t den Ger&auml;tenamen
+ <devicename>da0</devicename> erh&auml;lt, w&auml;hrend
+ gleichzeitig das bisherige <devicename>da0</devicename>
+ zu <devicename>da1</devicename> wird. Dies verursacht
+ Probleme beim Einh&auml;ngen von Dateisystemen, wenn diese
+ in der <filename>/etc/fstab</filename> aufgef&uuml;hrt
+ sind und schlussendlich mag das auch dazu f&uuml;hren,
+ dass das System nicht mehr startet.</para>
+
+ <para>Eine L&ouml;sung f&uuml;r dieses Problem ist das
+ Aneinanderketten der <acronym>SCSI</acronym>-Ger&auml;te,
+ damit ein neues Ger&auml;t, welches der
+ <acronym>SCSI</acronym>-Karte hinzugef&uuml;gt wird,
+ unbenutzte Ger&auml;tenummern erh&auml;lt. Aber was
+ geschieht, wenn ein <acronym>USB</acronym>-Ger&auml;t
+ m&ouml;glicherweise die prim&auml;re
+ <acronym>SCSI</acronym>-Platte ersetzt? Dies kann
+ passieren, weil <acronym>USB</acronym>-Ger&auml;te
+ normalerweise vor der <acronym>SCSI</acronym>-Karte
+ gepr&uuml;ft werden. Eine L&ouml;sung ist das
+ Hinzuf&uuml;gen dieser Ger&auml;te, nachdem das System
+ gestartet ist. Eine andere L&ouml;sung k&ouml;nnte sein,
+ nur ein einzelnes <acronym>ATA</acronym>-Laufwerk zu
+ nutzen und die <acronym>SCSI</acronym>-Ger&auml;te niemals
+ in der <filename>/etc/fstab</filename> aufzuf&uuml;hren.</para>
+
+ <para>Es gibt allerdings eine bessere L&ouml;sung. Durch
+ Verwendung des <command>glabel</command>-Dienstprogramms
+ kann ein Administrator oder Benutzer seine Laufwerke mit
+ Labeln versehen und diese in der <filename>/etc/fstab</filename>
+ nutzen. Da <command>glabel</command> seine Label im letzten
+ Sektor jedes vorhandenen Datentr&auml;gers speichert, wird
+ das Label persistent bleiben (auch &uuml;ber Neustarts hinweg).
+ Durch Nutzung dieses Labels als Ger&auml;t kann das
+ Dateisystem immer gemountet sein, unabh&auml;ngig davon,
+ durch welchen Ger&auml;te-Knotenpunkt auf ihn zugegriffen
+ wird.</para>
+
+ <note>
+ <para>Der Label muss permanent (dauerhaft) sein.
+ Man kann das Dienstprogramm <command>glabel</command>
+ nutzen, um sowohl transiniente als auch permanente Label
+ zu erzeugen. Aber nur permanente (persistente) Label
+ bleiben konsistent &uuml;ber Neustarts hinweg. Lesen
+ Sie die &man.glabel.8;-Manualpage f&uuml;r weitere
+ Unterschiede zwischen den Label-Typen.</para>
+ </note>
+
+ <sect2>
+ <title>Label-Typen und Beispiele</title>
+
+ <para>Es gibt zwei Arten von Labeln: generische Label und
+ Dateisystem-Label. Label k&ouml;nnen dauerhaft (permanent)
+ oder tempor&auml;r sein. Permanente Label k&ouml;nnen mit
+ &man.tunefs.8; oder &man.newfs.8; in einem speziellen
+ spezielles Verzeichnis in <filename
+ class="directory">/dev</filename> erzeugt werden, welches
+ entsprechend der Dateisystem-Art benannt wird.
+ <acronym>UFS</acronym>2-Dateisystem-Label werden zum
+ Beispiel im Verzeichnis
+ <filename class="directory">/dev/ufs</filename>
+ angelegt. Permanente Label k&ouml;nnen au&szlig;erdem durch
+ den Befehl <command>glabel label</command> erzeugt werden.
+ Diese Label sind dann allerdings nicht dateisystemspezisch
+ und werden im Unterverzeichnis <filename
+ class="directory">/dev/label</filename> erzeugt.</para>
+
+ <para>Ein tempor&auml;res Label verschwindet mit dem
+ n&auml;chsten Systemstart. Diese Label werden im
+ Verzeichnis <filename class="directory">/dev/label</filename>
+ erzeugt und sind ideal f&uuml;r Testzwecke. Ein tempor&auml;res
+ Label kann durch den Befehl <command>glabel create</command>
+ erzeugt werden. Weitere Informationen finden sich in der
+ Manualpage &man.glabel.8;.</para>
+
+<!-- XXXTR: How do you create a file system label without running newfs
+ or when there is no newfs (e.g.: cd9660)? -->
+
+ <para>Um ein permanentes Label auf einem
+ <acronym>UFS</acronym>2-Dateisystem ohne
+ L&ouml;schung von Daten zu erzeugen, kann man folgenden
+ Befehl verwenden:</para>
+
+ <screen>&prompt.root; <userinput>tunefs -L <replaceable>home</replaceable> <replaceable>/dev/da3</replaceable></userinput></screen>
+
+ <warning>
+ <para>Wenn das Dateisystem voll ist, kann dies zu
+ Datenkorruption f&uuml;hren; aber egal wie, falls das
+ Dateisystem voll ist, sollte das Hauptziel die
+ Entfernung ungen&uuml;tzter Dateien und nicht das
+ Hinzuf&uuml;gen von Labeln sein.</para>
+ </warning>
+
+ <para>Ein Label sollte nun in
+ <filename class="directory">/dev/ufs</filename> vorhanden
+ sein, der zu <filename>/etc/fstab</filename>
+ hinzugef&uuml;gt wird:</para>
+
+ <programlisting>/dev/ufs/home /home ufs rw 2 2</programlisting>
+
+ <note>
+ <para>Das Dateisystem darf nicht gemountet sein beim
+ Versuch, <command>tunefs</command> auszuf&uuml;hren.</para>
+ </note>
+
+ <para>Nun kann das Dateisystem wie &uuml;blich gemountet
+ werden:</para>
+
+ <screen>&prompt.root; <userinput>mount /home</userinput></screen>
+
+ <para>Von nun an kann der Ger&auml;te-Knotenpunkt sich ohne
+ negative Effekte auf das System &auml;ndern, solange das
+ Kernelmodul <filename>geom_label.ko</filename> beim
+ Systemstart mittels <filename>/boot/loader.conf</filename>
+ geladen wird oder die
+ <literal>GEOM_LABEL</literal>-Kernel-Option aktiv ist.</para>
+
+ <para>Dateisysteme k&ouml;nnen auch mit einem Standard-Label
+ erzeugt werden (mittels des Flags <option>-L</option> in
+ <command>newfs</command>). Lesen Sie bitte die Manualpage
+ von &man.newfs.8; f&uuml;r weitere Informationen.</para>
+
+ <para>Der folgende Befehl kann genutzt werden, um das Label
+ zu beseitigen:</para>
+
+ <screen>&prompt.root; <userinput>glabel destroy home</userinput></screen>
+
+ <para>Das folgende Beispiel zeigt Ihnen, wie Sie Label f&uuml;r
+ die Partitionen einer Bootplatte erzeugen.</para>
+
+ <example>
+ <title>Die Partitionen einer Bootplatte labeln</title>
+
+ <para>Durch das Erstellen von permanenten Labeln f&uuml;r die
+ Partitionen einer Bootplatte sollte das System selbst dann noch
+ normal starten k&ouml;nnen, wenn Sie die Platte an einen
+ anderen Controller anschlie&szlig;en oder in ein anderes
+ System installieren. In diesem Beispiel nehmen wir an, dass
+ nur eine einzige <acronym>ATA</acronym>-Platte verwendet wird,
+ die Ihr System derzeit als <devicename>ad0</devicename>
+ erkennt. Weiters nehmen wir an, dass Sie das
+ Standard-Partionierungsschema von &os; vewendet haben und Ihre
+ Platte daher die Dateisysteme
+ <filename class="directory">/</filename>,
+ <filename class="directory">/var</filename>,
+ <filename class="directory">/usr</filename> sowie
+ <filename class="directory">/tmp</filename> aufweist.
+ Zus&auml;tzlich wurde eine Swap-Partition angelegt.</para>
+
+ <para>Starten Sie das System neu. Am &man.loader.8;-Prompt
+ dr&uuml;cken Sie die Taste <keycap>4</keycap>, um in den
+ Single-User-Modus zu gelangen. Dort f&uuml;hren Sie die
+ folgenden Befehle aus:</para>
+
+ <screen>&prompt.root; <userinput>glabel label rootfs /dev/ad0s1a</userinput>
+GEOM_LABEL: Label for provider /dev/ad0s1a is label/rootfs
+&prompt.root; <userinput>glabel label var /dev/ad0s1d</userinput>
+GEOM_LABEL: Label for provider /dev/ad0s1d is label/var
+&prompt.root; <userinput>glabel label usr /dev/ad0s1f</userinput>
+GEOM_LABEL: Label for provider /dev/ad0s1f is label/usr
+&prompt.root; <userinput>glabel label tmp /dev/ad0s1e</userinput>
+GEOM_LABEL: Label for provider /dev/ad0s1e is label/tmp
+&prompt.root; <userinput>glabel label swap /dev/ad0s1b</userinput>
+GEOM_LABEL: Label for provider /dev/ad0s1b is label/swap
+&prompt.root; <userinput>exit</userinput></screen>
+
+ <para>Das System startet daraufhin in den Multi-User-Modus.
+ Nachdem der Startvorgang abgeschlossen ist, editieren Sie die
+ Datei <filename>/etc/fstab</filename> und ersetzen die
+ konventionellen Ger&auml;tedateien durch die entsprechenden
+ Label. Ihre modifizierte <filename>/etc/fstab</filename>
+ sollte nun &auml;hnlich der folgenden Ausgabe aussehen:</para>
+
+ <programlisting># Device Mountpoint FStype Options Dump Pass#
+/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</programlisting>
+
+ <para>Starten Sie Ihr System neu. Traten keine Probleme auf,
+ wird das System normal hochfahren und Sie erhalten die folgende
+ Ausgabe, wenn Sie den Befehl <command>mount</command>
+ ausf&uuml;hren:</para>
+
+ <screen>&prompt.root; <userinput>mount</userinput>
+/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)</screen>
+ </example>
+
+ <para>Beginnend mit &os;&nbsp;7.2, unterst&uuml;tzt
+ &man.glabel.8; einen neuen Labeltyp f&uuml;r
+ <acronym>UFS</acronym>-Dateisysteme. Dieser basiert auf der
+ eindeutigen Dateisystem-ID <literal>ufsid</literal>.
+ Derartige Label finden sich im Verzeichnis
+ <filename class="directory">/dev/ufsid</filename> und werden
+ w&auml;hrend des Systemstarts automatisch erzeugt. Es ist
+ m&ouml;glich, diese <literal>ufsid</literal>-Label zum
+ automatischen Einh&auml;ngen von Partitionen in der Datei
+ <filename>/etc/fstab</filename> einzusetzen. Verwenden Sie
+ den Befehl <command>glabel status</command>, um eine Liste
+ aller Dateisysteme und ihrer <literal>ufsid</literal>-Label
+ zu erhalten:</para>
+
+ <screen>&prompt.user; <userinput>glabel status</userinput>
+ Name Status Components
+ufsid/486b6fc38d330916 N/A ad4s1d
+ufsid/486b6fc16926168e N/A ad4s1f</screen>
+
+ <para>In diesem Beispiel repr&auml;sentiert
+ <devicename>ad4s1d</devicename> das
+ <filename class="directory">/var</filename>-Dateisystem,
+ w&auml;hrend <devicename>ad4s1f</devicename> dem
+ <filename class="directory">/usr</filename>-Dateisystem
+ entspricht. Wenn Sie die angegebenen
+ <literal>ufsid</literal>-Werte verwenden, k&ouml;nnen
+ diese Dateisysteme durch die folgenden Eintr&auml;ge in
+ der Datei <filename>/etc/fstab</filename> gemountet
+ werden:</para>
+
+ <programlisting>/dev/ufsid/486b6fc38d330916 /var ufs rw 2 2
+/dev/ufsid/486b6fc16926168e /usr ufs rw 2 2</programlisting>
+
+ <para>Jede Partition, die ein <literal>ufsid</literal>-Label
+ aufweist, kann auf diese Art gemountet werden. Dies hat
+ den Vorteil, dass Sie keine permanenten Label mehr anlegen
+ m&uuml;ssen, wobei sich die Platten nach wie vor &uuml;ber
+ ger&auml;teunabh&auml;ngige Namen ansprechen und mounten
+ lassen.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="geom-gjournal">
+ <title>UFS Journaling in GEOM</title>
+
+ <indexterm>
+ <primary>GEOM</primary>
+ </indexterm>
+ <indexterm>
+ <primary>Journaling</primary>
+ </indexterm>
+
+ <para>Mit &os;&nbsp;7.0 wurde eine lang erwartete Funktion,
+ das Journaling, implementiert. Diese Funktion wird &uuml;ber
+ das <acronym>GEOM</acronym>-Subsystem realisiert und kann
+ &uuml;ber das Werkzeug &man.gjournal.8; eingerichtet
+ werden.</para>
+
+ <para>Was ist Journaling? Bei Journaling wird ein Protokoll
+ &uuml;ber alle Dateisystemtransaktionen angelegt, inklusive
+ aller Ver&auml;nderungen, aus denen ein kompletter
+ Schreibvorgang besteht, bevor diese &Auml;nderungen (Metadaten
+ sowie tats&auml;chliche Schreibvorg&auml;nge) physikalisch auf
+ der Festplatte ausgef&uuml;hrt werden. Dieses Protokoll kann
+ sp&auml;ter erneut aufgerufen werden, um diese Vorg&auml;nge
+ zu wiederholen (beispielsweise um Systeminkonsistenzen zu
+ vermeiden).</para>
+
+ <para>Diese Technik bietet eine weitere M&ouml;glichkeit,
+ sich vor Datenverlust und Dateisystem-Inkonsistenzen zu
+ sch&uuml;tzen. Im Gegensatz zu Soft Updates (die
+ Metadaten-Aktualisierungen verfolgen und erzwingen) und
+ Snapshots (die ein Image eines Dateisystems darstellen) wird
+ bei Journaling ein tats&auml;chliches Protokoll in einem
+ speziell daf&uuml;r bereitgestellten Bereich der Festplatte
+ (oder manchmal sogar auf einer separaten Platte)
+ gespeichert.</para>
+
+ <para>Im Gegensatz zu anderen Journaling-Dateisystemen arbeitet
+ die <command>gjournal</command>-Methode blockbasiert und wurde
+ nicht als Teil des Dateisystems implementiert, sondern als
+ <acronym>GEOM</acronym>-Erweiterung.</para>
+
+ <para>Um die <command>gjournal</command>-Unterst&uuml;tzung zu
+ aktivieren, muss der &os;-Kernel die folgende Option enthalten
+ (was seit &os;&nbsp;7.0 bereits in der Voreinstellung der Fall
+ ist):</para>
+
+ <programlisting>options UFS_GJOURNAL</programlisting>
+
+ <para>Um ein Volume mit Journalunterst&uuml;tzung beim Systemstart
+ automatisch zu mounten, muss das Kernelmodul
+ <filename>geom_journal.ko</filename> ebenfalls automatisch geladen
+ werden (durch einen entsprechenden Eintrag in der Datei
+ <filename>/boot/loader.conf</filename>):</para>
+
+ <programlisting>geom_journal_load="YES"</programlisting>
+
+ <para>Alternativ k&ouml;nnen Sie auch einen angepassten Kernel
+ bauen, der diese Funktionalit&auml;t enth&auml;lt, indem Sie die
+ folgende Zeile in Ihrer Kernelkonfigurationsdatei
+ aufnehmen:</para>
+
+ <programlisting>options GEOM_JOURNAL</programlisting>
+
+ <para>Das Anlegen eines neuen Journals auf einem freien Dateisystem
+ erfolgt durch die folgenden Schritte (im Folgenden wird
+ angenommen, dass es sich bei <devicename>da4</devicename> um
+ eine neue <acronym>SCSI</acronym>-Platte handelt):</para>
+
+ <screen>&prompt.root; <userinput>gjournal load</userinput>
+&prompt.root; <userinput>gjournal label /dev/da4</userinput></screen>
+
+ <para>Danach sollten die Ger&auml;tedateien
+ <devicename>/dev/da4</devicename> sowie
+ <devicename>/dev/da4.journal</devicename> vorhanden sein. Nun
+ k&ouml;nnen Sie auf diesem Ger&auml;t ein Dateisystem
+ anlegen:</para>
+
+ <screen>&prompt.root; <userinput>newfs -O 2 -J /dev/da4.journal</userinput></screen>
+
+ <para>Dieser Befehl erzeugt ein <acronym>UFS</acronym>2-Dateisystem
+ auf dem Ger&auml;t, f&uuml;r das im letzten Schritt das
+ Journaling aktiviert wurde.</para>
+
+ <para>Danach h&auml;ngen Sie das neue Dateisystem mit
+ <command>mount</command> in Ihren Verzeichnisbaum ein:</para>
+
+ <screen>&prompt.root; <userinput>mount /dev/da4.journal <replaceable>/mnt</replaceable></userinput></screen>
+
+ <note>
+ <para>Falls auf Ihrem System mehrere Slices angelegt sind
+ (beispielsweise <devicename>ad4s1</devicename> sowie
+ <devicename>ad4s2</devicename>), wird
+ <command>gjournal</command> f&uuml;r jedes Slice ein
+ Journal anlegen (also <devicename>ad4s1.journal</devicename>
+ sowie <devicename>ad4s2.journal</devicename>).</para>
+ </note>
+
+ <para>Um die Leistung zu optimieren, kann das Journal auf eine
+ externe Platte ausgelagert werden. In einem solchen Fall
+ geben Sie die Ger&auml;tedatei der Platte nach dem Ger&auml;t
+ an, f&uuml;r das Sie Journaling aktivieren wollen.
+ Theoretisch ist es auch m&ouml;glich, Journaling auf bereits
+ existierenden Dateisystemen durch das Werkzeug
+ <command>tunefs</command> zu aktivieren. Machen Sie aber
+ in jedem Fall ein Backup Ihrer Daten, bevor Sie versuchen,
+ ein existierendes Dateisystem zu &auml;ndern.
+ <command>gjournal</command> wird zwar den Vorgang abbrechen,
+ wenn es das Journal nicht erzeugen kann, allerdings sch&uuml;tzt
+ Sie dies nicht vor Datenverlust durch einen fehlerhaften Einsatz
+ von <command>tunefs</command>.</para>
+
+ <para>Es ist m&ouml;glich, Journale auch f&uuml;r die Bootplatte
+ eines &os;-System zu verwenden. Lesen Sie bitte den Artikel
+ <ulink
+ url="&url.articles.gjournal-desktop.en;/article.html">
+ Implementing UFS Journaling on a Desktop PC</ulink>, wenn Sie
+ an einer derartigen Konfiguration interessiert sind.</para>
+ </sect1>
+</chapter>
+
+<!--
+ Local Variables:
+ mode: sgml
+ sgml-declaration: "../chapter.decl"
+ sgml-indent-data: t
+ sgml-omittag: nil
+ sgml-always-quote-attributes: t
+ sgml-parent-document: ("../book.sgml" "part" "chapter")
+ End:
+-->