MFde: Update the German documentation set.
doc/de_DE.ISO8859-1/books/faq/book.sgml 1.1056 -> 1.1059 [X] doc/de_DE.ISO8859-1/books/handbook/geom/chapter.sgml new translation [Y] doc/de_DE.ISO8859-1/books/handbook/mac/chapter.sgml fixes only Obtained from: The FreeBSD German Documentation Project [X] Contributed by: Benedict Reuschling (benedict att reuschling dott org) [Y] Translated by: Daniel Seuffert (DS att praxisvermittlung24 dott de) and jkois@
This commit is contained in:
parent
a00fb463cf
commit
ca7e79c77f
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=34263
3 changed files with 954 additions and 67 deletions
de_DE.ISO8859-1/books
|
@ -3,9 +3,9 @@
|
|||
The FreeBSD German Documentation Project
|
||||
|
||||
$FreeBSD$
|
||||
$FreeBSDde: de-docproj/books/faq/book.sgml,v 1.688 2009/05/11 18:23:53 bcr Exp $
|
||||
$FreeBSDde: de-docproj/books/faq/book.sgml,v 1.691 2009/05/11 18:58:13 bcr Exp $
|
||||
|
||||
basiert auf: 1.1056
|
||||
basiert auf: 1.1059
|
||||
|
||||
-->
|
||||
|
||||
|
@ -33,7 +33,7 @@ $FreeBSDde: de-docproj/books/faq/book.sgml,v 1.688 2009/05/11 18:23:53 bcr Exp $
|
|||
</collab>
|
||||
</authorgroup>
|
||||
|
||||
<pubdate>$FreeBSDde: de-docproj/books/faq/book.sgml,v 1.688 2009/05/11 18:23:53 bcr Exp $</pubdate>
|
||||
<pubdate>$FreeBSDde: de-docproj/books/faq/book.sgml,v 1.691 2009/05/11 18:58:13 bcr Exp $</pubdate>
|
||||
|
||||
<copyright>
|
||||
<year>1995</year>
|
||||
|
@ -12123,40 +12123,41 @@ hint.sio.7.irq="12"</programlisting>
|
|||
wird bei dieser Antwort gesetzt sein. Die
|
||||
Erkennungsroutine ist dann in der Lage, dafür zu
|
||||
sorgen, dass Karten mit Modellnummern (zugeordnet von
|
||||
Microsoft/Intel) kleiner als X <quote>off-line</quote>
|
||||
gesetzt werden. Sie prüft dann, ob immer noch Karten
|
||||
da sind, die auf die Frage antworten. Falls die Antwort
|
||||
<literal>0</literal> war, sind keine Karten mit IDs
|
||||
größer X vorhanden. Nun prüft die
|
||||
Erkennungsroutine, ob Karten unterhalb
|
||||
<literal>X</literal> vorhanden sind. Dann setzt die
|
||||
µsoft;/&intel;) kleiner als <literal>X</literal>
|
||||
<quote>off-line</quote> gesetzt werden. Sie prüft dann, ob
|
||||
immer noch Karten da sind, die auf die Frage antworten. Falls die
|
||||
Antwort <literal>0</literal> war, sind keine Karten mit IDs
|
||||
größer <literal>X</literal> vorhanden. Die
|
||||
Erkennungsroutine wird daraufhin anfragen, ob Karten unterhalb
|
||||
<literal>X</literal> vorhanden sind. Schließlich setzt die
|
||||
Erkennungsroutine alle Karten größer als
|
||||
X-(limit/4) off-line und wiederholt die Frage. Wenn diese
|
||||
<literal>X - (limit / 4)</literal> off-line
|
||||
und wiederholt die Frage. Wenn diese
|
||||
halbbinäre Suche nach IDs in Folge genügend oft
|
||||
wiederholt worden ist, wird die Erkennungsroutine
|
||||
schließlich alle in einem Rechner befindlichen
|
||||
PnP-Karten identifiziert haben und das mit einer
|
||||
Iterationszahl sehr viel kleiner als 2^64.</para>
|
||||
Iterationszahl sehr viel kleiner als
|
||||
2<superscript>64</superscript>.</para>
|
||||
|
||||
<para>Die IDs bestehen aus zwei 32-Bit-Feldern (daher 2^64)
|
||||
+ acht Bit Prüfsumme. Die ersten 32 Bit sind die
|
||||
Herstellerkennung. Es wurde zwar nicht bestätigt,
|
||||
aber es wird angenommen, dass unterschiedliche
|
||||
<para>Die IDs bestehen aus zwei 32-Bit-Feldern (daher
|
||||
2<superscript>64</superscript>) + acht Bit Prüfsumme. Die
|
||||
ersten 32 Bit sind die Herstellerkennung. Es wurde zwar nicht
|
||||
bestätigt, aber es wird angenommen, dass unterschiedliche
|
||||
Kartentypen desselben Herstellers unterschiedliche 32-Bit
|
||||
Herstellerkennungen besitzen können. 32 Bit nur
|
||||
Herstellerkennungen besitzen können. 32 Bit nur
|
||||
für eindeutige Hersteller zu benötigen, scheint
|
||||
etwas übertrieben.</para>
|
||||
|
||||
<para>Die niedrigen 32 Bit sind eine Seriennummer,
|
||||
Ethernetadresse - etwas, das die betreffende Karte
|
||||
einzigartig macht. Die Hersteller dürfen niemals
|
||||
eine zweite Karte mit denselben niedrigen 32 Bit
|
||||
herstellen, es sei denn, die höheren 32 Bit sind
|
||||
unterschiedlich. Sie können also mehrere Karten des
|
||||
selben Typs im Rechner haben und die gesamten 64 Bit
|
||||
bleiben stets eindeutig.</para>
|
||||
<para>Die niedrigen 32 Bit sind eine Seriennummer oder etwas
|
||||
anderes, das die betreffende Karte einzigartig macht. Die
|
||||
Hersteller dürfen niemals eine zweite Karte mit denselben
|
||||
niedrigen 32 Bit herstellen, es sei denn, die höheren
|
||||
32 Bit sind unterschiedlich. Sie können also mehrere
|
||||
Karten des selben Typs im Rechner haben und die gesamten
|
||||
64 Bit bleiben stets eindeutig.</para>
|
||||
|
||||
<para>Die 32-Bit-Gruppen können niemals nur aus Nullen
|
||||
<para>Die 32 Bit-Gruppen können niemals nur aus Nullen
|
||||
bestehen. Das erlaubt es, bei der binären Suche zu
|
||||
Beginn nur auf von Null verschiedene Bits zu
|
||||
achten.</para>
|
||||
|
@ -12192,13 +12193,13 @@ hint.sio.7.irq="12"</programlisting>
|
|||
<para>Im obigen Teil wurde sehr viel vereinfacht, aber die
|
||||
grundlegende Idee sollte klar geworden sein.</para>
|
||||
|
||||
<para>Microsoft hat einige der primären
|
||||
<para>µsoft; hat einige der primären
|
||||
Druckerstatusports für PnP übernommen, da keine
|
||||
Karte diese Adressen für die entgegengesetzten
|
||||
I/O-Zyklen decodiert. Ich habe während der
|
||||
frühen Überprüfungsperiode des
|
||||
PnP-Vorschlags eine echte IBM Druckerkarte gefunden, die
|
||||
Schreibzugriffe auf dem Statusport decodiert hat, aber MS
|
||||
Schreibzugriffe auf dem Statusport decodiert hat, aber µsoft;
|
||||
hat nur <quote>tough</quote> gesagt. Also schreiben sie
|
||||
auf den Druckerstatusport, um Adressen zu setzen, benutzen
|
||||
zusätzlich diese Adresse + <literal>0x800</literal>
|
||||
|
@ -12215,31 +12216,10 @@ hint.sio.7.irq="12"</programlisting>
|
|||
</question>
|
||||
|
||||
<answer>
|
||||
<para>&os.current; stellt seit Februar 2003
|
||||
Major-Numbers für Geräte zur Laufzeit automatisch
|
||||
bereit. Nach Möglichkeit sollte diese neue
|
||||
Funktion benutzt werden, anstatt eine Major-Number
|
||||
statisch festzulegen. Weitere Hinweise finden Sie in
|
||||
<filename>src/sys/conf/majors</filename>.</para>
|
||||
|
||||
<para>Wenn Sie eine statisch festgelegte Major-Number
|
||||
benötigen, hängt das weitere Verfahren davon ab,
|
||||
ob Sie den Treiber frei verfügbar machen wollen.
|
||||
Falls dem so ist, senden Sie uns bitte eine Kopie der
|
||||
Treiber-Sourcen und zusätzlich die entsprechenden
|
||||
Änderungen der Datei <filename>files.i386</filename>,
|
||||
ein Beispiel für einen Eintrag in der
|
||||
Konfigurationsdatei und den entsprechenden Code für
|
||||
&man.MAKEDEV.8;, der die Gerätedateien für Ihr
|
||||
Gerät erzeugt. Falls Sie nicht beabsichtigen,
|
||||
den Treiber frei verfügbar zu machen, oder es
|
||||
aufgrund von Lizenzbeschränkungen nicht können,
|
||||
dann ist die Major-Number 32 für zeichenorientierte
|
||||
und die Major-Number 8 für blockorientierte
|
||||
Geräte speziell für diesen Zweck reserviert. In
|
||||
jedem Fall würden wir uns freuen, auf der Mailingliste
|
||||
&a.hackers; etwas über Ihren neuen Treiber zu
|
||||
hören.</para>
|
||||
<para>&os; Versionen stellen seit Februar 2003
|
||||
Major-Numbers für Geräte automatisch zur Laufzeit
|
||||
bereit (lesen Sie &man.devfs.5;), damit ist das nicht mehr
|
||||
nötig.</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
|
@ -12265,7 +12245,8 @@ hint.sio.7.irq="12"</programlisting>
|
|||
erzeugen denkbar ungünstigste Voraussetzungen
|
||||
für zukünftige Tiefensuchen. Falls man die
|
||||
Gesamtzahl der zu erstellenden Verzeichnisse wüsste,
|
||||
wäre die Lösung die, (gesamt / fs_ncg) pro
|
||||
wäre die Lösung die,
|
||||
<literal>(gesamt / fs_ncg)</literal> pro
|
||||
Zylindergruppe zu erstellen, bevor fortgefahren wird.
|
||||
Offensichtlich müsste man eine Heuristik
|
||||
erstellen, um die Zahl zu schätzen. Sogar die
|
||||
|
@ -12279,7 +12260,7 @@ hint.sio.7.irq="12"</programlisting>
|
|||
Jedenfalls ist mein Schluss, dass dies ein
|
||||
fruchtbares Gebiet für Experimente ist.</para>
|
||||
|
||||
<para>Kirk McKusick, September 1998</para>
|
||||
<para>&a.mckusick;, September 1998</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
|
|
|
@ -3,21 +3,927 @@
|
|||
The FreeBSD German Documentation Project
|
||||
|
||||
$FreeBSD$
|
||||
$FreeBSDde: de-docproj/books/handbook/geom/chapter.sgml,v 1.1 2005/08/15 19:21:38 jkois Exp $
|
||||
basiert auf:
|
||||
$FreeBSDde: de-docproj/books/handbook/geom/chapter.sgml,v 1.15 2009/05/12 08:18:51 jkois Exp $
|
||||
basiert auf: 1.48
|
||||
-->
|
||||
|
||||
<chapter id="geom">
|
||||
<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>Übersetzt von </contrib>
|
||||
</author>
|
||||
<author>
|
||||
<firstname>Johann</firstname>
|
||||
<surname>Kois</surname>
|
||||
</author>
|
||||
</authorgroup>
|
||||
</chapterinfo>
|
||||
|
||||
<title>GEOM - Modular Disk Transformation Framework
|
||||
(noch nicht übersetzt)</title>
|
||||
<title>GEOM: Modulares Framework zur
|
||||
Plattentransformation</title>
|
||||
|
||||
<para>Dieses Kapitel ist noch nicht übersetzt.
|
||||
Lesen Sie bitte <ulink
|
||||
url="&url.books.handbook.en;/geom.html">
|
||||
das Original in englischer Sprache</ulink>. Wenn Sie helfen
|
||||
wollen, dieses Kapitel zu übersetzen, senden Sie bitte
|
||||
eine E-Mail an die Mailingliste &a.de.translators;.</para>
|
||||
<sect1 id="GEOM-synopsis">
|
||||
<title>Ü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>-Überwachungswerkzeuge, welche das
|
||||
Framework zur Konfiguration nutzen. Dieses Kapitel enthält
|
||||
keine tiefschü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ührlicher
|
||||
Führer für
|
||||
<acronym>RAID</acronym>-Konfigurationen. Nur durch GEOM
|
||||
unterstützte <acronym>RAID</acronym>-Klassen werden
|
||||
erörtert.</para>
|
||||
|
||||
<para>Nach Lesen dieses Kapitels werden Sie folgendes
|
||||
wissen:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Welche Art von
|
||||
<acronym>RAID</acronym>-Unterstützung durch GEOM
|
||||
verfü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ü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ührung in GEOM</title>
|
||||
|
||||
<para>GEOM erlaubt den Zugriff und die Kontrolle von Klassen
|
||||
— Master Boot Records, <acronym>BSD</acronym>-Label usw.
|
||||
— durch die Nutzung von Datenträgern (Providern) oder
|
||||
den besonderen Dateien in <filename
|
||||
role="directory">/dev</filename>. Verschiedene Software
|
||||
<acronym>RAID</acronym>-Konfigurationen unterstützend, wird
|
||||
GEOM Ihnen transparenten Zugriff auf das Betriebssystem und
|
||||
System-Dienstprogramme gewä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äger
|
||||
zusammenzufassen. In vielen Fällen wird dies durch die
|
||||
Nutzung von Hardware-Controllern bewerkstelligt. Das
|
||||
GEOM-Subsystem unterstü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öcke aufgeteilt, welche über alle
|
||||
angeschlossenen Laufwerke in einem Datenfeld (Array) geschrieben
|
||||
werden. Anstatt darauf warten zu mü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ätzlich gesteigert werden.</para>
|
||||
|
||||
<para>Jedes Laufwerk in einem <acronym>RAID</acronym>0-Stripe
|
||||
muss die gleiche Größe haben, da
|
||||
I/O-Anforderungen fü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ä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ätenamen derjenigen Platten,
|
||||
welche gestriped werden sollen, und erzeugen Sie ein neues
|
||||
Stripe-Gerät. Das folgende Beispiel verwendet zwei
|
||||
unbenutzte und unpartitionierte
|
||||
<acronym>ATA</acronym>-Platten, die gestriped werden sollen.
|
||||
Lauten die Gerä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ä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äte im
|
||||
Verzeichnis <filename
|
||||
class="directory">/dev/stripe</filename> (zusätzlich zum
|
||||
Gerät <devicename>st0</devicename>) erzeugt haben. Diese
|
||||
schliessen <devicename>st0a</devicename> und
|
||||
<devicename>st0c</devicename> ein. Nun kann ein Dateisystem
|
||||
auf dem Gerä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 über Ihren Bildschirm
|
||||
und nach ein paar Sekunden wird der Prozess abgeschlossen
|
||||
sein. Der Datenträger wurde erzeugt und kann in den
|
||||
Verzeichnisbaum eingehä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ährend des
|
||||
Startvorgangs zu mounten, müssen Sie die
|
||||
Datenträ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>>> /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"' >> /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ängig von der
|
||||
Konfiguration der Platte. Dadurch kann spä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öße aufweist. In dieser
|
||||
Übung gehen wir davon aus, dass es direkt
|
||||
zugängliche (&man.da.4;) <acronym>SCSI</acronym>-Platten
|
||||
sind.</para>
|
||||
|
||||
<sect2>
|
||||
<title>Die primä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ä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ä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önnen Sie den Spiegel aufbauen. Beginnen Sie den
|
||||
Prozess, indem Sie die Metadaten-Informationen auf das Gerät
|
||||
der primären Platte speichern. Konkret erzeugen Sie dabei
|
||||
das Gerät
|
||||
<filename class="devicefile">/dev/mirror/gm</filename>, indem Sie
|
||||
den folgenden Befehl ausführen:</para>
|
||||
|
||||
<warning>
|
||||
<para>Die Spiegelung der Bootplatte kann zu Datenverlust
|
||||
führen, wenn Sie Daten im letzten Sektor der Platte
|
||||
gespeichert haben. Dieses Risiko lässt sich minimieren,
|
||||
wenn Sie den Spiegel unmittelbar nach der Installation von
|
||||
&os; aufsetzen.</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ührt wurde, wird
|
||||
die Gerä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"' >> /boot/loader.conf</userinput></screen>
|
||||
|
||||
<para>Bearbeiten Sie die Datei <filename>/etc/fstab</filename>
|
||||
und ersetzen Sie alle Verweise auf die alte Gerätedatei
|
||||
<devicename>da0</devicename> durch die neue Gerätedatei
|
||||
<devicename>gm0</devicename> des Plattenspiegels. Um die Datei
|
||||
<filename>/etc/fstab</filename> bearbeiten zu können,
|
||||
mü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 Änderungen ganz einfach wie
|
||||
folgt durchfü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öffnet,
|
||||
kö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änderte <filename>fstab</filename> sollte nun
|
||||
änhlich 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ät heiß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ü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äte anstatt der bisherigen
|
||||
<devicename>da0</devicename>-Geräte sehen. Nachdem das
|
||||
System vollständig initialisiert wurde, können Sie
|
||||
die neue Konfiguration testen, indem Sie den Befehl
|
||||
<command>mount</command> ausfü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ährend die Platten gespiegelt werden, können
|
||||
Sie den Fortschritt durch die Eingabe des folgenden Befehls
|
||||
überprü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 ählich der folgenden erhalten, wenn Sie
|
||||
den Befehl erneut ausfü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ä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
|
||||
ä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ählen Sie im Startmenü Option sechs
|
||||
(6). Dadurch erscheint eine Eingabeaufforderung für
|
||||
&man.loader.8;. Laden Sie nun das Kernelmodul
|
||||
händisch:</para>
|
||||
|
||||
<screen>OK? <userinput>load geom_mirror</userinput>
|
||||
OK? <userinput>boot</userinput></screen>
|
||||
|
||||
<para>Falls dies funktioniert, wurde das Modul (aus welchen
|
||||
Gründen auch immer) nicht richtig geladen. Prü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ü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ö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üssen Sie
|
||||
feststellen, welche Platte ausgefallen ist und das System
|
||||
herunterfahren. Nun können Sie die kaputte Platte gegen
|
||||
eine neue Platte austaushen 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üssen.</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="geom-ggate">
|
||||
<title>GEOM Gate Netzwerkgeräte</title>
|
||||
|
||||
<para>GEOM unterstützt die Verwendung entfernter Gerä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ä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ü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ät ü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ät momentan entweder
|
||||
auf dem Server oder irgendeiner anderen Maschine
|
||||
gemountet ist.</para>
|
||||
</note>
|
||||
|
||||
<para>Wenn das Gerät nicht länger gebraucht wird,
|
||||
dann kann es mit dem Befehl &man.umount.8;
|
||||
ausgehä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ährend der Initialisierung des Systems legt der
|
||||
&os;-Kernel für jedes gefundene Gerät Knotenpunkte
|
||||
an. Diese Methode für die Überprüfung auf
|
||||
vorhandene Geräte wirft einige Fragen auf. Was passiert
|
||||
beispielsweise, wenn ein neues
|
||||
<acronym>USB</acronym>-Laufwerk hinzugefügt wird?
|
||||
Es ist sehr wahrscheinlich, dass ein
|
||||
Flash-Speicher-Gerät den Gerätenamen
|
||||
<devicename>da0</devicename> erhält, während
|
||||
gleichzeitig das bisherige <devicename>da0</devicename>
|
||||
zu <devicename>da1</devicename> wird. Dies verursacht
|
||||
Probleme beim Einhängen von Dateisystemen, wenn diese
|
||||
in der <filename>/etc/fstab</filename> aufgeführt
|
||||
sind und schlussendlich mag das auch dazu führen,
|
||||
dass das System nicht mehr startet.</para>
|
||||
|
||||
<para>Eine Lösung für dieses Problem ist das
|
||||
Aneinanderketten der <acronym>SCSI</acronym>-Geräte,
|
||||
damit ein neues Gerät, welches der
|
||||
<acronym>SCSI</acronym>-Karte hinzugefügt wird,
|
||||
unbenutzte Gerätenummern erhält. Aber was
|
||||
geschieht, wenn ein <acronym>USB</acronym>-Gerät
|
||||
möglicherweise die primäre
|
||||
<acronym>SCSI</acronym>-Platte ersetzt? Dies kann
|
||||
passieren, weil <acronym>USB</acronym>-Geräte
|
||||
normalerweise vor der <acronym>SCSI</acronym>-Karte
|
||||
geprüft werden. Eine Lösung ist das
|
||||
Hinzufügen dieser Geräte, nachdem das System
|
||||
gestartet ist. Eine andere Lösung könnte sein,
|
||||
nur ein einzelnes <acronym>ATA</acronym>-Laufwerk zu
|
||||
nutzen und die <acronym>SCSI</acronym>-Geräte niemals
|
||||
in der <filename>/etc/fstab</filename> aufzuführen.</para>
|
||||
|
||||
<para>Es gibt allerdings eine bessere Lö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ägers speichert, wird
|
||||
das Label persistent bleiben (auch über Neustarts hinweg).
|
||||
Durch Nutzung dieses Labels als Gerät kann das
|
||||
Dateisystem immer gemountet sein, unabhängig davon,
|
||||
durch welchen Gerä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 über Neustarts hinweg. Lesen
|
||||
Sie die &man.glabel.8;-Manualpage fü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önnen dauerhaft (permanent)
|
||||
oder temporär sein. Permanente Label kö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önnen auß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äres Label verschwindet mit dem
|
||||
nächsten Systemstart. Diese Label werden im
|
||||
Verzeichnis <filename class="directory">/dev/label</filename>
|
||||
erzeugt und sind ideal für Testzwecke. Ein temporä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ö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ühren; aber egal wie, falls das
|
||||
Dateisystem voll ist, sollte das Hauptziel die
|
||||
Entfernung ungenützter Dateien und nicht das
|
||||
Hinzufü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ü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ühren.</para>
|
||||
</note>
|
||||
|
||||
<para>Nun kann das Dateisystem wie üblich gemountet
|
||||
werden:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>mount /home</userinput></screen>
|
||||
|
||||
<para>Von nun an kann der Geräte-Knotenpunkt sich ohne
|
||||
negative Effekte auf das System ä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ö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ü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ür
|
||||
die Partitionen einer Bootplatte erzeugen.</para>
|
||||
|
||||
<example>
|
||||
<title>Die Partitionen einer Bootplatte labeln</title>
|
||||
|
||||
<para>Durch das Erstellen von permanenten Labeln für die
|
||||
Partitionen einer Bootplatte sollte das System selbst dann noch
|
||||
normal starten können, wenn Sie die Platte an einen
|
||||
anderen Controller anschließ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ätzlich wurde eine Swap-Partition angelegt.</para>
|
||||
|
||||
<para>Starten Sie das System neu. Am &man.loader.8;-Prompt
|
||||
drücken Sie die Taste <keycap>4</keycap>, um in den
|
||||
Single-User-Modus zu gelangen. Dort fü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ätedateien durch die entsprechenden
|
||||
Label. Ihre modifizierte <filename>/etc/fstab</filename>
|
||||
sollte nun ä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ü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; 7.2, unterstützt
|
||||
&man.glabel.8; einen neuen Labeltyp fü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ährend des Systemstarts automatisch erzeugt. Es ist
|
||||
möglich, diese <literal>ufsid</literal>-Label zum
|
||||
automatischen Einhä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äsentiert
|
||||
<devicename>ad4s1d</devicename> das
|
||||
<filename class="directory">/var</filename>-Dateisystem,
|
||||
während <devicename>ad4s1f</devicename> dem
|
||||
<filename class="directory">/usr</filename>-Dateisystem
|
||||
entspricht. Wenn Sie die angegebenen
|
||||
<literal>ufsid</literal>-Werte verwenden, können
|
||||
diese Dateisysteme durch die folgenden Einträ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üssen, wobei sich die Platten nach wie vor über
|
||||
geräteunabhä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; 7.0 wurde eine lang erwartete Funktion,
|
||||
das <acronym>UFS</acronym>-Journaling, implementiert. Diese
|
||||
Funktion wird über das
|
||||
<acronym>GEOM</acronym>-Subsystem realisiert und kann
|
||||
über das Werkzeug &man.gjournal.8; eingerichtet
|
||||
werden.</para>
|
||||
|
||||
<para>Was ist Journaling? Bei Journaling wird ein Protokoll
|
||||
über alle Dateisystemtransaktionen angelegt, inklusive
|
||||
aller Veränderungen, aus denen ein kompletter
|
||||
Schreibvorgang besteht, bevor diese Änderungen (Metadaten
|
||||
sowie tatsächliche Schreibvorgänge) physikalisch auf
|
||||
der Festplatte ausgeführt werden. Dieses Protokoll kann
|
||||
später erneut aufgerufen werden, um diese Vorgänge
|
||||
zu wiederholen (beispielsweise um Systeminkonstistenzen zu
|
||||
vermeiden.</para>
|
||||
|
||||
<para>Diese Technik bietet eine weitere Möglichkeit,
|
||||
sich vor Datenverlust und Dateisystem-Inkonsistenzen zu
|
||||
schü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ächliches Protokoll in einem
|
||||
speziell dafü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ützung zu
|
||||
aktivieren, muss der &os;-Kernel die folgende Option enthalten
|
||||
(was auf 7.X-Systemen bereits in der Voreinstellung der Fall
|
||||
ist):</para>
|
||||
|
||||
<programlisting>options UFS_GJOURNAL</programlisting>
|
||||
|
||||
<para>Um eine Volume mit Journalunterstü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önnen Sie auch einen angepassten Kernel
|
||||
bauen, der diese Funktionalität enthä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 label /dev/da4</userinput>
|
||||
&prompt.root; <userinput>gjournal load</userinput></screen>
|
||||
|
||||
<para>Danach sollten die Gerätedateien
|
||||
<devicename>/dev/da4</devicename> sowie
|
||||
<devicename>/dev/da4.journal</devicename> vorhanden sein. Nun
|
||||
können Sie auf diesem Gerä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, für das Journaling
|
||||
aktiviert wurde.</para>
|
||||
|
||||
<para>Danach hä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ür jedes Slice ein
|
||||
Journal anlegen (also <devicename>ad4s1.journal</devicename>
|
||||
sowie <devicename>ad4s2.journal</devicename>). Wird der
|
||||
Befehl zweimal ausgeführt, werden auch für jedes
|
||||
Slice zwei <quote>Journale</quote> angelegt.</para>
|
||||
</note>
|
||||
|
||||
<para>Unter bestimmten Umständen ist es sinnvoll, das Journal
|
||||
auf eine externe Platte auszulagern. In einem solchen Fall
|
||||
geben Sie die Gerätedatei der Platte nach dem Gerät
|
||||
an, für das Sie Journaling aktivieren wollen.
|
||||
Theoretisch ist es auch mö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 ändern.
|
||||
<command>gjournal</command> wird zwar den Vorgang abbrechen,
|
||||
wenn es das Journal nicht erzeugen kann, allerdings schützt
|
||||
Sie dies nicht vor Datenverlust durch einen fehlerhaften Einsatz
|
||||
von <command>tunefs</command>.</para>
|
||||
|
||||
<para>Es ist möglich, Journale auch fü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>
|
||||
|
||||
<!--
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
The FreeBSD German Documentation Project
|
||||
|
||||
$FreeBSD$
|
||||
$FreeBSDde: de-docproj/books/handbook/mac/chapter.sgml,v 1.3 2004/08/22 17:13:30 mheinen Exp $
|
||||
$FreeBSDde: de-docproj/books/handbook/mac/chapter.sgml,v 1.6 2009/05/12 11:04:48 jkois Exp $
|
||||
basiert auf:
|
||||
-->
|
||||
|
||||
|
|
Loading…
Reference in a new issue