Update to r39909:
Rework the gmirror section to create mirrors properly.
This commit is contained in:
parent
31b1c079e9
commit
490865b44f
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=48461
1 changed files with 587 additions and 197 deletions
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
$FreeBSD$
|
$FreeBSD$
|
||||||
$FreeBSDde$
|
$FreeBSDde$
|
||||||
basiert auf: r38401
|
basiert auf: r39909
|
||||||
-->
|
-->
|
||||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="GEOM">
|
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="GEOM">
|
||||||
<info><title>GEOM: Modulares Framework zur
|
<info><title>GEOM: Modulares Framework zur
|
||||||
|
@ -246,210 +246,578 @@ Done.</screen>
|
||||||
<indexterm>
|
<indexterm>
|
||||||
<primary>Disk Mirroring</primary>
|
<primary>Disk Mirroring</primary>
|
||||||
</indexterm>
|
</indexterm>
|
||||||
|
<indexterm>
|
||||||
|
<primary>RAID1</primary>
|
||||||
|
</indexterm>
|
||||||
|
|
||||||
<para>Spiegelung (Mirroring) ist eine Technik, welche von vielen
|
<para>Spiegelung (<acronym>RAID1</acronym> / Mirroring) ist eine
|
||||||
Firmen und Heimnutzern eingesetzt wird, um Daten ohne
|
Technik, bei der identische Daten auf mehr als ein Laufwerk
|
||||||
Unterbrechung zu sichern. Wenn ein Spiegel existiert, dann
|
geschrieben werden. Spiegel werden in der Regel zum Schutz vor
|
||||||
bedeutet dies einfach nur, dass PlatteB die PlatteA
|
Datenverlust aufgrund von Festplattenausfällen verwendet. Jedes
|
||||||
dupliziert. Oder PlatteC+D duplizieren PlatteA+A. Der
|
Laufwerk in einem Spiegel enthält eine identische Kopie der
|
||||||
wichtigste Aspekt ist, dass Daten einer Platte oder
|
Daten. Wenn ein einzelnes Laufwerk ausfällt, funktioniert der
|
||||||
Partition dupliziert werden, unabhängig von der
|
Spiegel weiterhin und die Daten werden von den restlichen
|
||||||
Konfiguration der Platte. Dadurch kann später diese
|
Festplatten bereit gestellt. Der Rechner läuft einfach weiter
|
||||||
Information leichter wiederhergestellt, ohne
|
und der Administrator hat die Gelegentheit, das defekte Laufwerk
|
||||||
Zugriffsunterbrechung gesichert oder sogar physisch in einem
|
auszutauschen.</para>
|
||||||
Datentresor gelagert werden.</para>
|
|
||||||
|
|
||||||
<para>Stellen Sie zu Beginn sicher, dass ihr System zwei
|
<para>Zwei häufige Situationen werden in diesem Beispiel
|
||||||
Platten mit identischer Größe aufweist. In dieser
|
erläutert. Im ersten Beispiel wird ein Spiegel aus zwei
|
||||||
Übung gehen wir davon aus, dass es direkt
|
neuen Laufwerken erstellt, der die existierende Platte ersetzt.
|
||||||
zugängliche (&man.da.4;) <acronym>SCSI</acronym>-Platten
|
Das zweite Beispiel erzeugt ein Spiegel mit einem einzigen
|
||||||
sind.</para>
|
Laufwerk, kopiert dann die Daten von der alten Platte und fügt
|
||||||
|
die alte Platte zum Spiegel hinzu. Obwohl dieses Verfahren
|
||||||
|
etwas komplizierter ist, wird nur ein neues Laufwerk
|
||||||
|
benötigt.</para>
|
||||||
|
|
||||||
<sect2>
|
<para>Traditionell sind die Laufwerke in einem Spiegel vom
|
||||||
<title>Die primäre Platte spiegeln</title>
|
gleichen Modell und besitzen die gleiche Kapazität. Dies ist
|
||||||
|
jedoch keine Voraussetzung für &man.gmirror.8;. Hier können
|
||||||
|
Spiegel mit unterschiedlichen Kapazitäten verwendet werden. Die
|
||||||
|
Kapazität richtet sich dann nach dem kleinsten Laufwerk im
|
||||||
|
Spiegel. Zusätzlicher Speicherplatz auf größeren Laufwerken
|
||||||
|
bleibt dann ungenutzt. Werden später weitere Laufwerke zum
|
||||||
|
Spiegel hinzugefügt, müssen diese mindestens so viel Kapazität
|
||||||
|
haben wie das kleinste Laufwerk im Spiegel.</para>
|
||||||
|
|
||||||
<para>Angenommen, &os; wurde auf der ersten Platte
|
<warning>
|
||||||
<filename>da0</filename> installiert, dann sollte
|
<para>Die hier gezeigten Verfahren löschen keine Daten. Dennoch
|
||||||
&man.gmirror.8; angewiesen werden, seine primären Daten
|
sollte, wie bei jeder größeren Operation, zuerst eine
|
||||||
auf dieser Platte zu speichern.</para>
|
vollständige Sicherung erstellt werden.</para>
|
||||||
|
</warning>
|
||||||
|
|
||||||
<para>Bevor Sie den Spiegel aufbauen, sollten Sie die maximale
|
<sect2 xml:id="geom-mirror-metadata">
|
||||||
Protokollierung aktivieren und den Zugang zum Gerät
|
<title>Probleme mit Metadaten</title>
|
||||||
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>Viele Plattensysteme speichern Metadaten am Ende der
|
||||||
|
Platte. Alte Metadaten sollten vor der Wiederverwendung in
|
||||||
|
einem Spiegel gelöscht werden, da die meisten Probleme aus
|
||||||
|
zwei Arten von übrig gebliebenen Metadaten resultieren:
|
||||||
|
<acronym>GPT</acronym>-Partitionstabellen und alte Metadaten
|
||||||
|
aus einem vorherigen Spiegel.</para>
|
||||||
|
|
||||||
<para>Nun können Sie den Spiegel aufbauen. Beginnen Sie den
|
<para><acronym>GPT</acronym>-Metadaten können mit &man.gpart.8;
|
||||||
Prozess, indem Sie die Metadaten-Informationen auf das Gerät
|
gelöscht werden. Dieses Beispiel löscht sowohl die primären,
|
||||||
der primären Platte speichern. Konkret erzeugen Sie dabei
|
als auch die <acronym>GPT</acronym>-Partitionstabelle von der
|
||||||
das Gerät
|
Festplatte <filename>ada8</filename>:</para>
|
||||||
<filename>/dev/mirror/gm</filename>, indem Sie
|
|
||||||
den folgenden Befehl ausführen:</para>
|
|
||||||
|
|
||||||
<warning>
|
<screen>&prompt.root; <userinput>gpart destroy -F ada8</userinput></screen>
|
||||||
<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. Die im folgenden beschriebene Vorgehensweise ist
|
|
||||||
ebenfalls nicht kompatibel mit den
|
|
||||||
Standard-Installationseinstellungen von
|
|
||||||
&os; 9.<replaceable>X</replaceable>, die das neue
|
|
||||||
<acronym>GPT</acronym>-Partitionsschema verwenden. GEOM wird
|
|
||||||
<acronym>GPT</acronym>-Metadaten überschreiben, was zu
|
|
||||||
Datenverlust und einem möglicherweise nicht bootbarem System
|
|
||||||
führt.</para>
|
|
||||||
</warning>
|
|
||||||
|
|
||||||
<screen>&prompt.root; <userinput>gmirror label -vb round-robin gm0 /dev/da0</userinput></screen>
|
<para>Mit &man.gmirror.8; kann eine Platte aus einem aktiven
|
||||||
|
Spiegel entfernt und gleichzeitig die Metadaten gelöscht
|
||||||
|
werden. In diesem Beispiel wird die Platte
|
||||||
|
<filename>ada8</filename> aus dem aktiven Spiegel
|
||||||
|
<filename>gm4</filename> entfernt:</para>
|
||||||
|
|
||||||
<para>Ihr System sollte wie folgt antworten:</para>
|
<screen>&prompt.root; <userinput>gmirror remove gm4 ada8</userinput></screen>
|
||||||
|
|
||||||
<screen>Metadata value stored on /dev/da0.
|
<para>Wenn der Spiegel nicht aktiv ist, sich jedoch noch alte
|
||||||
Done.</screen>
|
Metadaten auf der Festplatte befinden, benutzen Sie
|
||||||
|
<command>gmirror clear</command>, um die Metadaten zu
|
||||||
|
entfernen:</para>
|
||||||
|
|
||||||
<para>Initialisieren Sie GEOM. Dadurch wird das Kernelmodul
|
<screen>&prompt.root; <userinput>gmirror clear ada8</userinput></screen>
|
||||||
<filename>/boot/kernel/geom_mirror.ko</filename> geladen:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.root; <userinput>gmirror load</userinput></screen>
|
<para>&man.gmirror.8; speichert einen Datenblock an Metadaten am
|
||||||
|
Ende der Festplatte. Da das
|
||||||
<note>
|
<acronym>GPT</acronym>-Partitionschema die Metadaten auch am
|
||||||
<para>Wenn dieser Befehl erfolgreich ausgeführt wurde, wird
|
Ende der Platte speichert, wird es nicht empfohlen, mit
|
||||||
die Gerätedatei <filename>gm0</filename> im
|
&man.gmirror.8; einen Spiegel aus einem gesamten
|
||||||
Verzeichnis <filename>/dev/mirror</filename>
|
<acronym>GPT</acronym>-Datenträger zu erstellen. In diesen
|
||||||
erzeugt.</para>
|
Fällen sollte eine <acronym>MBR</acronym>-Partitionierung
|
||||||
</note>
|
benutzt werden, weil hier nur eine Partitionstabelle am Anfang
|
||||||
|
der Platte gespeichert wird und somit nicht mit den Metadaten
|
||||||
<para>Stellen Sie sicher, dass das Kernelmodul
|
des Spiegels im Konflikt steht.</para>
|
||||||
<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
|
|
||||||
<filename>da0</filename> durch die neue Gerätedatei
|
|
||||||
<filename>gm0</filename> des Plattenspiegels. Um die Datei
|
|
||||||
<filename>/etc/fstab</filename> bearbeiten zu können,
|
|
||||||
müssen Sie als Benutzer <systemitem class="username">root</systemitem> 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 <filename>da0</filename> durch
|
|
||||||
<filename>gm0</filename>, indem Sie
|
|
||||||
<userinput>:%s/da/mirror\/gm/g</userinput> eingeben.</para>
|
|
||||||
</note>
|
|
||||||
|
|
||||||
<para>Die geänderte <filename>fstab</filename> sollte nun
|
|
||||||
ä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ät heißt in jedem Fall
|
|
||||||
<filename>gm</filename>.</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
|
|
||||||
<filename>gm0</filename>-Geräte anstatt der bisherigen
|
|
||||||
<filename>da0</filename>-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 <filename>da1</filename> 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 ähnlich 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>
|
||||||
|
|
||||||
<sect2>
|
<sect2>
|
||||||
|
<title>Einen Spiegel mit zwei neuen Festplatten
|
||||||
|
erstellen</title>
|
||||||
|
|
||||||
|
<para>In diesem Beispiel wurde &os; bereits auf der vorhandenen
|
||||||
|
Festplatte <filename>ada0</filename> installiert. Zwei neue
|
||||||
|
Platten, <filename>ada1</filename> und
|
||||||
|
<filename>ada2</filename>, wurden bereits mit dem System
|
||||||
|
verbunden. Ein neuer Spiegel soll mit diesen beiden Platten
|
||||||
|
erzeugt und verwendet werden, um die alte vorhandene Platte zu
|
||||||
|
ersetzen.</para>
|
||||||
|
|
||||||
|
<para>Das Kernelmodul <filename>geom_mirror.ko</filename> muss
|
||||||
|
entweder in den Kernel eingebaut, oder zur Laufzeit geladen
|
||||||
|
werden. Sie können das Modul manuell laden:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>gmirror load</userinput></screen>
|
||||||
|
|
||||||
|
<para>Erstellen Sie den Spiegel mit den beiden neuen
|
||||||
|
Festplatten:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>gmirror label -v gm0 /dev/ada1 /dev/ada2</userinput></screen>
|
||||||
|
|
||||||
|
<para><filename>gm0</filename> ist ein vom Benutzer gewählter
|
||||||
|
Name, der dem neuen Spiegel zugeordnet wird. Nachdem der
|
||||||
|
Spiegel gestartet wurde, erscheint dieser Gerätename in
|
||||||
|
<filename>/dev/mirror/</filename>.</para>
|
||||||
|
|
||||||
|
<para><acronym>MBR</acronym>- und
|
||||||
|
<application>bsdlabel</application>-Partitionstabellen können
|
||||||
|
jetzt auf dem neuen Spiegel erzeugt werden. Dieses Beispiel
|
||||||
|
verwendet das herkömmliche Dateisystem-Layout für
|
||||||
|
<filename>/</filename>, swap, <filename>/var</filename>,
|
||||||
|
<filename>/tmp</filename> und <filename>/usr</filename>. Eine
|
||||||
|
einzelne Root- und Swap-Partition würde ebenfalls
|
||||||
|
funktionieren.</para>
|
||||||
|
|
||||||
|
<para>Die Partitionen auf dem Spiegel müssen nicht zwingend die
|
||||||
|
gleiche Größe wie die auf der Festplatte haben, aber sie
|
||||||
|
müssen groß genug sein, um alle Daten aufnehmen zu können, die
|
||||||
|
bereits auf <filename>ada0</filename> gespeichert sind.</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>gpart create -s MBR mirror/gm0</userinput>
|
||||||
|
&prompt.root; <userinput>gpart add -t freebsd -a 4k mirror/gm0</userinput>
|
||||||
|
&prompt.root; <userinput>gpart show mirror/gm0</userinput>
|
||||||
|
=> 63 156301423 mirror/gm0 MBR (74G)
|
||||||
|
63 63 - free - (31k)
|
||||||
|
126 156301299 1 freebsd (74G)
|
||||||
|
156301425 61 - free - (30k)</screen>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>gpart create -s BSD mirror/gm0s1</userinput>
|
||||||
|
&prompt.root; <userinput>gpart add -t freebsd-ufs -a 4k -s 2g mirror/gm0s1</userinput>
|
||||||
|
&prompt.root; <userinput>gpart add -t freebsd-swap -a 4k -s 4g mirror/gm0s1</userinput>
|
||||||
|
&prompt.root; <userinput>gpart add -t freebsd-ufs -a 4k -s 2g mirror/gm0s1</userinput>
|
||||||
|
&prompt.root; <userinput>gpart add -t freebsd-ufs -a 4k -s 1g mirror/gm0s1</userinput>
|
||||||
|
&prompt.root; <userinput>gpart add -t freebsd-ufs -a 4k mirror/gm0s1</userinput>
|
||||||
|
&prompt.root; <userinput>gpart show mirror/gm0s1</userinput>
|
||||||
|
=> 0 156301299 mirror/gm0s1 BSD (74G)
|
||||||
|
0 2 - free - (1.0k)
|
||||||
|
2 4194304 1 freebsd-ufs (2.0G)
|
||||||
|
4194306 8388608 2 freebsd-swap (4.0G)
|
||||||
|
12582914 4194304 4 freebsd-ufs (2.0G)
|
||||||
|
16777218 2097152 5 freebsd-ufs (1.0G)
|
||||||
|
18874370 137426928 6 freebsd-ufs (65G)
|
||||||
|
156301298 1 - free - (512B)</screen>
|
||||||
|
|
||||||
|
<para>Damit von dem Spiegel gebootet werden kann, muss der
|
||||||
|
Bootcode in den <acronym>MBR</acronym> installiert, ein
|
||||||
|
bsdlabel erstellt und die aktive Partition gesetzt
|
||||||
|
werden:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>gpart bootcode -b /boot/mbr mirror/gm0</userinput>
|
||||||
|
&prompt.root; <userinput>gpart set -a active -i 1 mirror/gm0</userinput>
|
||||||
|
&prompt.root; <userinput>gpart bootcode -b /boot/boot mirror/gm0s1</userinput></screen>
|
||||||
|
|
||||||
|
<para>Erstellen Sie die Dateisysteme auf dem neuen Spiegel und
|
||||||
|
aktivieren Sie Soft-Updates:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>newfs -U /dev/mirror/gm0s1a</userinput>
|
||||||
|
&prompt.root; <userinput>newfs -U /dev/mirror/gm0s1d</userinput>
|
||||||
|
&prompt.root; <userinput>newfs -U /dev/mirror/gm0s1e</userinput>
|
||||||
|
&prompt.root; <userinput>newfs -U /dev/mirror/gm0s1f</userinput></screen>
|
||||||
|
|
||||||
|
<para>Die Dateisysteme der vorhandenen Platte
|
||||||
|
<filename>ada0</filename> können jetzt mit &man.dump.8; und
|
||||||
|
&man.restore.8; auf den Spiegel kopiert werden.</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>mount /dev/mirror/gm0s1a /mnt</userinput>
|
||||||
|
&prompt.root; <userinput>dump -C16 -b64 -0aL -f - / | (cd /mnt && restore -rf -)</userinput>
|
||||||
|
&prompt.root; <userinput>mount /dev/mirror/gm0s1d /mnt/var</userinput>
|
||||||
|
&prompt.root; <userinput>mount /dev/mirror/gm0s1e /mnt/tmp</userinput>
|
||||||
|
&prompt.root; <userinput>mount /dev/mirror/gm0s1f /mnt/usr</userinput>
|
||||||
|
&prompt.root; <userinput>dump -C16 -b64 -0aL -f - /var | (cd /mnt/var && restore -rf -)</userinput>
|
||||||
|
&prompt.root; <userinput>dump -C16 -b64 -0aL -f - /tmp | (cd /mnt/tmp && restore -rf -)</userinput>
|
||||||
|
&prompt.root; <userinput>dump -C16 -b64 -0aL -f - /usr | (cd /mnt/usr && restore -rf -)</userinput></screen>
|
||||||
|
|
||||||
|
<para>Fügen Sie die Dateisysteme für den Spiegel in
|
||||||
|
<filename>/etc/rc.conf</filename> hinzu:</para>
|
||||||
|
|
||||||
|
<programlisting># Device Mountpoint FStype Options Dump Pass#
|
||||||
|
/dev/mirror/gm0s1a / ufs rw 1 1
|
||||||
|
/dev/mirror/gm0s1b none swap sw 0 0
|
||||||
|
/dev/mirror/gm0s1d /var ufs rw 2 2
|
||||||
|
/dev/mirror/gm0s1e /tmp ufs rw 2 2
|
||||||
|
/dev/mirror/gm0s1f /usr ufs rw 2 2</programlisting>
|
||||||
|
|
||||||
|
<para>Wenn das Modul <filename>geom_mirror.ko</filename> nicht
|
||||||
|
im Kernel enthalten ist, können Sie
|
||||||
|
<filename>/mnt/boot/loader.conf</filename> bearbeiten, damit
|
||||||
|
das Modul beim Systemstart geladen wird:</para>
|
||||||
|
|
||||||
|
<programlisting>geom_mirror_load="YES"</programlisting>
|
||||||
|
|
||||||
|
<para>Starten Sie das System neu und überprüfen Sie, ob
|
||||||
|
alle Daten erfolgreich kopiert wurden. Das
|
||||||
|
<acronym>BIOS</acronym> wird den Spiegel vermutlich als
|
||||||
|
zwei einzelne Laufwerke erkennen. Da beide Laufwerke
|
||||||
|
jedoch identisch sind, spielt es keine Rolle, welches
|
||||||
|
Laufwerk zum Booten ausgewählt wird.</para>
|
||||||
|
|
||||||
|
<para>Falls es Probleme beim Booten gibt, lesen Sie den
|
||||||
|
<xref linkend="gmirror-troubleshooting"/>. Die alte
|
||||||
|
Festplatte <filename>ada0</filename> kann vom System
|
||||||
|
getrennt und als Offline-Sicherung aufbewahrt werden.</para>
|
||||||
|
|
||||||
|
<para>Im laufenden Betrieb verhält sich der Spiegel genau
|
||||||
|
wie ein einzelnes Laufwerk.</para>
|
||||||
|
</sect2>
|
||||||
|
|
||||||
|
<sect2>
|
||||||
|
<title>Einen Spiegel mit einem vorhandenen Laufwerk
|
||||||
|
erstellen</title>
|
||||||
|
|
||||||
|
<para>In diesem Beispiel wurde &os; bereits auf der
|
||||||
|
Festplatte <filename>ada0</filename> installiert und eine
|
||||||
|
weitere Platte, <filename>ada1</filename>, wurde an
|
||||||
|
das System angeschlossen. Zunächst wird ein Spiegel mit
|
||||||
|
einer Festplatte erstellt, dann das vorhandene System auf
|
||||||
|
den Spiegel kopiert. Zuletzt wird die alte Festplatte in den
|
||||||
|
Spiegel eingefügt. Diese etwas komplexere Vorgehensweise ist
|
||||||
|
erforderlich, da <command>gmirror</command> 512 Byte an
|
||||||
|
Metadaten am Ende der Festplatte speichert, und die bestehende
|
||||||
|
Platte, <filename>ada0</filename>, in der Regel den Platz
|
||||||
|
bereits belegt hat.</para>
|
||||||
|
|
||||||
|
<para>Laden Sie das Kernelmodul
|
||||||
|
<filename>geom_mirror.ko</filename>:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>gmirror load</userinput></screen>
|
||||||
|
|
||||||
|
<para>Prüfen Sie mit <command>diskinfo</command> die Mediengröße
|
||||||
|
der vorhandenen Festplatte:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>diskinfo -v ada0 | head -n3</userinput>
|
||||||
|
/dev/ada0
|
||||||
|
512 # sectorsize
|
||||||
|
1000204821504 # mediasize in bytes (931G)</screen>
|
||||||
|
|
||||||
|
<para>Jetzt können Sie den Spiegel auf der neuen Festplatte
|
||||||
|
erzeugen. Um sicherzustellen, dass die Kapazität nicht größer
|
||||||
|
ist, als die Kapazität der vorhandenen Platte
|
||||||
|
<filename>ada0</filename>, benutzen Sie &man.gnop.8; um eine
|
||||||
|
Platte mit der exakt gleichen Größe zu imitieren. Diese
|
||||||
|
Platte speichert keine Daten und wird nur verwendet, um die
|
||||||
|
Größe des Spiegels zu begrenzen. &man.gmirror.8; wird die
|
||||||
|
Kapazität des Spiegels auf die Größe von
|
||||||
|
<filename>gzero.nop</filename> beschränken, auch wenn die neue
|
||||||
|
Festplatte <filename>ada1</filename> mehr Platz zur Verfügung
|
||||||
|
hätte. Beachten Sie, dass
|
||||||
|
<replaceable>1000204821504</replaceable> in der zweiten Zeile
|
||||||
|
der ermittelten Mediengröße von <command>diskinfo</command>
|
||||||
|
entspricht.</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>geom zero load</userinput>
|
||||||
|
&prompt.root; <userinput>gnop create -s 1000204821504 gzero</userinput>
|
||||||
|
&prompt.root; <userinput>gmirror label -v gm0 gzero.nop ada1</userinput>
|
||||||
|
&prompt.root; <userinput>gmirror forget gm0</userinput></screen>
|
||||||
|
|
||||||
|
<para>Da <filename>gzero.nop</filename> keine Daten speichert,
|
||||||
|
sieht der Spiegel sie als nicht verbunden an. Der Spiegel ist
|
||||||
|
so konfiguriert, dass er nicht verbundene Komponenten einfach
|
||||||
|
<quote>vergisst</quote>. Das Ergebnis ist ein Spiegel mit nur
|
||||||
|
einer einzigen Platte, <filename>ada1</filename>.</para>
|
||||||
|
|
||||||
|
<para>Sehen Sie sich nach der Erstellung von
|
||||||
|
<filename>gm0</filename> die Partitionstabelle von
|
||||||
|
<filename>ada0</filename> an. Diese Ausgabe stammt von einer
|
||||||
|
1 TB Festplatte. Falls am Ende der Platte noch freier
|
||||||
|
Speicherplatz ist, kann der Inhalt von
|
||||||
|
<filename>ada0</filename> direkt auf den Spiegel kopiert
|
||||||
|
werden.</para>
|
||||||
|
|
||||||
|
<para>Falls jedoch der gesamte Speicherplatz auf der Platte
|
||||||
|
zugeordnet ist, dann gibt es keinen Platz mehr für die 512
|
||||||
|
Byte Metadaten für den Spiegel am Ende der Platte, wie in
|
||||||
|
dieser Auflistung zu sehen.</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>gpart show ada0</userinput>
|
||||||
|
=> 63 1953525105 ada0 MBR (931G)
|
||||||
|
63 1953525105 1 freebsd [active] (931G)</screen>
|
||||||
|
|
||||||
|
<para>In diesem Fall muss die Partitionstabelle bearbeitet
|
||||||
|
werden, um die Kapazität von <filename>mirror/gm0</filename>
|
||||||
|
um einen Sektor zu reduzieren. Dieses Verfahren wird später
|
||||||
|
erläutert.</para>
|
||||||
|
|
||||||
|
<para>In beiden Fällen sollte die Partitionstabelle der primären
|
||||||
|
Platte mit <command>gpart backup</command> gesichert
|
||||||
|
werden.</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>gpart backup ada0 > table.ada0</userinput>
|
||||||
|
&prompt.root; <userinput>gpart backup ada0s1 > table.ada0s1</userinput></screen>
|
||||||
|
|
||||||
|
<para>Diese Kommandos erstellen zwei Dateien,
|
||||||
|
<filename>table.ada0</filename> und
|
||||||
|
<filename>table.ada0s1</filename>. Das Beispiel verwendet
|
||||||
|
eine 1 TB Festplatte:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>cat table.ada0</userinput>
|
||||||
|
MBR 4
|
||||||
|
1 freebsd 63 1953525105 [active]</screen>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>cat table.ada0s1</userinput>
|
||||||
|
BSD 8
|
||||||
|
1 freebsd-ufs 0 4194304
|
||||||
|
2 freebsd-swap 4194304 33554432
|
||||||
|
4 freebsd-ufs 37748736 50331648
|
||||||
|
5 freebsd-ufs 88080384 41943040
|
||||||
|
6 freebsd-ufs 130023424 838860800
|
||||||
|
7 freebsd-ufs 968884224 984640881</screen>
|
||||||
|
|
||||||
|
<para>Wenn am Ende der Platte kein Platz vorhanden ist, muss
|
||||||
|
die Größe des Slice und der letzten Partition verringert
|
||||||
|
werden. Bearbeiten Sie die beiden Dateien, und verringern
|
||||||
|
Sie die Größe der Slice und der Partition jeweils um eins.
|
||||||
|
Dies bezieht sich auf die letzten Zahlen in der Liste.</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>cat table.ada0</userinput>
|
||||||
|
MBR 4
|
||||||
|
1 freebsd 63 <emphasis>1953525104</emphasis> [active]</screen>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>cat table.ada0s1</userinput>
|
||||||
|
BSD 8
|
||||||
|
1 freebsd-ufs 0 4194304
|
||||||
|
2 freebsd-swap 4194304 33554432
|
||||||
|
4 freebsd-ufs 37748736 50331648
|
||||||
|
5 freebsd-ufs 88080384 41943040
|
||||||
|
6 freebsd-ufs 130023424 838860800
|
||||||
|
7 freebsd-ufs 968884224 <emphasis>984640880</emphasis></screen>
|
||||||
|
|
||||||
|
<para>Wenn mindestens ein Sektor der Platte nicht zugewiesen
|
||||||
|
wurde, kann die Platte ohne Modifikation verwendet
|
||||||
|
werden.</para>
|
||||||
|
|
||||||
|
<para>Jetzt kann die Partitionstabelle auf
|
||||||
|
<filename>mirror/gm0</filename> wiederhergestellt
|
||||||
|
werden:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>gpart restore mirror/gm0 < table.ada0</userinput>
|
||||||
|
&prompt.root; <userinput>gpart restore mirror/gm0s1 < table.ada0s1</userinput></screen>
|
||||||
|
|
||||||
|
<para>Prüfen Sie die Partitionstabellen mit
|
||||||
|
<command>gpart show</command>. Dieses Beispiel nutzt
|
||||||
|
<filename>gm0s1a</filename> für <filename>/</filename>,
|
||||||
|
<filename>gm0s1d</filename> für <filename>/var</filename>,
|
||||||
|
<filename>gm0s1e</filename> für <filename>/usr</filename>,
|
||||||
|
<filename>gm0s1f</filename> für <filename>/data1</filename>
|
||||||
|
und <filename>gm0s1g</filename> für
|
||||||
|
<filename>/data2</filename>.</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>gpart show mirror/gm0</userinput>
|
||||||
|
=> 63 1953525104 mirror/gm0 MBR (931G)
|
||||||
|
63 1953525042 1 freebsd [active] (931G)
|
||||||
|
1953525105 62 - free - (31k)
|
||||||
|
|
||||||
|
&prompt.root; <userinput>gpart show mirror/gm0s1</userinput>
|
||||||
|
=> 0 1953525042 mirror/gm0s1 BSD (931G)
|
||||||
|
0 2097152 1 freebsd-ufs (1.0G)
|
||||||
|
2097152 16777216 2 freebsd-swap (8.0G)
|
||||||
|
18874368 41943040 4 freebsd-ufs (20G)
|
||||||
|
60817408 20971520 5 freebsd-ufs (10G)
|
||||||
|
81788928 629145600 6 freebsd-ufs (300G)
|
||||||
|
710934528 1242590514 7 freebsd-ufs (592G)
|
||||||
|
1953525042 63 - free - (31k)</screen>
|
||||||
|
|
||||||
|
<para>Sowohl die Slice, als auch die letzte Partition, muss
|
||||||
|
mindestens einen freien Block am Ende der Platte haben.</para>
|
||||||
|
|
||||||
|
<para>Erstellen Sie Dateisysteme auf diesen neuen
|
||||||
|
Partitionen:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>newfs -U /dev/mirror/gm0s1a</userinput>
|
||||||
|
&prompt.root; <userinput>newfs -U /dev/mirror/gm0s1d</userinput>
|
||||||
|
&prompt.root; <userinput>newfs -U /dev/mirror/gm0s1e</userinput>
|
||||||
|
&prompt.root; <userinput>newfs -U /dev/mirror/gm0s1f</userinput>
|
||||||
|
&prompt.root; <userinput>newfs -U /dev/mirror/gm0s1g</userinput></screen>
|
||||||
|
|
||||||
|
<para>Damit Sie von dem Spiegel booten können, müssen Sie den
|
||||||
|
Bootcode in den <acronym>MBR</acronym> installieren, ein
|
||||||
|
bsdlabel anlegen und das aktive Slice setzen:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>gpart bootcode -b /boot/mbr mirror/gm0</userinput>
|
||||||
|
&prompt.root; <userinput>gpart set -a active -i 1 mirror/gm0</userinput>
|
||||||
|
&prompt.root; <userinput>gpart bootcode -b /boot/boot mirror/gm0s1</userinput></screen>
|
||||||
|
|
||||||
|
<para>Bearbeiten Sie <filename>/etc/fstab</filename>, um die
|
||||||
|
neuen Partitionen auf dem Spiegel nutzen zu können. Speichern
|
||||||
|
Sie zunächst eine Kopie der Datei unter
|
||||||
|
<filename>/etc/fstab.orig</filename>:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>cp /etc/fstab /etc/fstab.orig</userinput></screen>
|
||||||
|
|
||||||
|
<para>Ersetzen Sie in <filename>/etc/fstab</filename>
|
||||||
|
<filename>/dev/ada0</filename> durch
|
||||||
|
<filename>mirror/gm0</filename>.</para>
|
||||||
|
|
||||||
|
<programlisting># Device>>>>>>>>>>Mountpoint>>>>>>FStype>>Options>Dump>>>>Pass#
|
||||||
|
/dev/mirror/gm0s1a>>>>>>/>>>>>>>>>>>>>>>ufs>>>>>rw>>>>>>1>>>>>>>1
|
||||||
|
/dev/mirror/gm0s1b>>>>>>none>>>>>>>>>>>>swap>>>>sw>>>>>>0>>>>>>>0
|
||||||
|
/dev/mirror/gm0s1d>>>>>>/var>>>>>>>>>>>>ufs>>>>>rw>>>>>>2>>>>>>>2
|
||||||
|
/dev/mirror/gm0s1e>>>>>>/usr>>>>>>>>>>>>ufs>>>>>rw>>>>>>2>>>>>>>2
|
||||||
|
/dev/mirror/gm0s1f>>>>>>/data1>>>>>>>>>>ufs>>>>>rw>>>>>>2>>>>>>>2
|
||||||
|
/dev/mirror/gm0s1g>>>>>>/data2>>>>>>>>>>ufs>>>>>rw>>>>>>2>>>>>>>2</programlisting>
|
||||||
|
|
||||||
|
<para>Wenn das Modul <filename>geom_mirror.ko</filename> nicht
|
||||||
|
im Kernel enthalten ist, können Sie
|
||||||
|
<filename>/boot/loader.conf</filename> bearbeiten, damit
|
||||||
|
das Modul beim Systemstart geladen wird:</para>
|
||||||
|
|
||||||
|
<programlisting>geom_mirror_load="YES"</programlisting>
|
||||||
|
|
||||||
|
<para>Die Dateisysteme der ursprünglichen Platte können jetzt
|
||||||
|
mit &man.dump.8; und &man.restore.8; auf den Spiegel kopiert
|
||||||
|
werden. Wenn Sie das Dateisystem mit <command>dump
|
||||||
|
-L</command> sichern, wird zunächst ein Snapshot des
|
||||||
|
Dateisystems erstellt, was einige Zeit dauern kann.</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>mount /dev/mirror/gm0s1a /mnt</userinput>
|
||||||
|
&prompt.root; <userinput>dump -C16 -b64 -0aL -f - / | (cd /mnt && restore -rf -)</userinput>
|
||||||
|
&prompt.root; <userinput>mount /dev/mirror/gm0s1d /mnt/var</userinput>
|
||||||
|
&prompt.root; <userinput>mount /dev/mirror/gm0s1e /mnt/usr</userinput>
|
||||||
|
&prompt.root; <userinput>mount /dev/mirror/gm0s1f /mnt/data1</userinput>
|
||||||
|
&prompt.root; <userinput>mount /dev/mirror/gm0s1g /mnt/data2</userinput>
|
||||||
|
&prompt.root; <userinput>dump -C16 -b64 -0aL -f - /usr | (cd /mnt/usr && restore -rf -)</userinput>
|
||||||
|
&prompt.root; <userinput>dump -C16 -b64 -0aL -f - /var | (cd /mnt/var && restore -rf -)</userinput>
|
||||||
|
&prompt.root; <userinput>dump -C16 -b64 -0aL -f - /data1 | (cd /mnt/data1 && restore -rf -)</userinput>
|
||||||
|
&prompt.root; <userinput>dump -C16 -b64 -0aL -f - /data2 | (cd /mnt/data2 && restore -rf -)</userinput></screen>
|
||||||
|
|
||||||
|
<para>Starten Sie das System neu und booten Sie von
|
||||||
|
<filename>ada1</filename>. Wenn alles funktioniert, wird
|
||||||
|
das System von <filename>mirror/gm0</filename> booten,
|
||||||
|
welches jetzt die gleichen Daten enthält wie
|
||||||
|
<filename>ada0</filename>. Lesen Sie <xref
|
||||||
|
linkend="gmirror-troubleshooting"/>, falls es Probleme beim
|
||||||
|
Booten gibt.</para>
|
||||||
|
|
||||||
|
<para>An dieser Stelle besteht der Spiegel immer noch aus der
|
||||||
|
einzelnen Platte <filename>ada1</filename>.</para>
|
||||||
|
|
||||||
|
<para>Nachdem erfolgreich von <filename>mirror/gm0</filename>
|
||||||
|
gebootet wurde, besteht der letzte Schritt darin,
|
||||||
|
<filename>ada0</filename> in den Spiegel einzufügen.</para>
|
||||||
|
|
||||||
|
<important>
|
||||||
|
<para>Wenn Sie <filename>ada0</filename> in den Spiegel
|
||||||
|
einfügen, wird der Inhalt der Platte mit den Daten aus
|
||||||
|
dem Spiegel überschrieben. Sie müssen sicherstellen, das
|
||||||
|
<filename>mirror/gm0</filename> den gleichen Inhalt wie
|
||||||
|
<filename>ada0</filename> hat, bevor Sie
|
||||||
|
<filename>ada0</filename> zum Spiegel hinzufügen. Falls der
|
||||||
|
zuvor mit &man.dump.8; und &man.restore.8; kopierte Inhalt
|
||||||
|
nicht mit dem von <filename>ada0</filename> identisch ist,
|
||||||
|
machen Sie die Änderungen an <filename>/etc/fstab</filename>
|
||||||
|
rückgängig, starten Sie das System neu und beginnen Sie die
|
||||||
|
Prozedur von vorn.</para>
|
||||||
|
</important>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>gmirror insert gm0 ada0</userinput>
|
||||||
|
GEOM_MIRROR: Device gm0: rebuilding provider ada0</screen>
|
||||||
|
|
||||||
|
<para>Die Synchronisation zwischen den beiden Platten wird
|
||||||
|
direkt gestartet. Verwenden Sie <command>gmirror
|
||||||
|
status</command> um den Fortschritt zu beobachten.</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>gmirror status</userinput>
|
||||||
|
Name Status Components
|
||||||
|
girror/gm0 DEGRADED ada1 (ACTIVE)
|
||||||
|
ada0 (SYNCHRONIZING, 64%)</screen>
|
||||||
|
|
||||||
|
<para>Nach einer Weile wird die Wiederherstellung abgeschlossen
|
||||||
|
sein.</para>
|
||||||
|
|
||||||
|
<screen>GEOM_MIRROR: Device gm0: rebuilding provider ada0 finished.
|
||||||
|
&prompt.root; <userinput>gmirror status</userinput>
|
||||||
|
Name Status Components
|
||||||
|
mirror/gm0 COMPLETE ada1 (ACTIVE)
|
||||||
|
ada0 (ACTIVE)</screen>
|
||||||
|
|
||||||
|
<para><filename>mirror/gm0</filename> besteht nun aus den beiden
|
||||||
|
Platten <filename>ada0</filename> und
|
||||||
|
<filename>ada1</filename>. Der Inhalt der beiden Platten wird
|
||||||
|
automatisch miteinander synchronisiert. Im laufenden Betrieb
|
||||||
|
verhält sich <filename>mirror/gm0</filename> wie eine einzelne
|
||||||
|
Festplatte.</para>
|
||||||
|
</sect2>
|
||||||
|
|
||||||
|
<sect2 xml:id="gmirror-troubleshooting">
|
||||||
<title>Fehlerbehebung</title>
|
<title>Fehlerbehebung</title>
|
||||||
|
|
||||||
<sect3>
|
<sect3>
|
||||||
<title>Das System weigert sich zu starten</title>
|
<title>Probleme beim Bootvorgang</title>
|
||||||
|
|
||||||
<para>Falls das System startet und eine Eingabeaufforderung
|
<sect4>
|
||||||
ähnlich der folgenden erscheint:</para>
|
<title>BIOS-Einstellungen</title>
|
||||||
|
|
||||||
<programlisting>ffs_mountroot: can't find rootvp
|
<para>Möglicherweise müssen die
|
||||||
Root mount failed: 6
|
<acronym>BIOS</acronym>-Einstellungen geändert werden, um
|
||||||
mountroot></programlisting>
|
von dem neuen gespiegelten Laufwerk zu booten. Beide
|
||||||
|
Platten des Spiegels können zum Booten verwendet werden.
|
||||||
|
Als Komponenten des Spiegels enthalten sie identische
|
||||||
|
Daten.</para>
|
||||||
|
</sect4>
|
||||||
|
|
||||||
<para>Starten Sie den Rechner neu mit der Power- oder
|
<sect4>
|
||||||
Resettaste. Wählen Sie im Startmenü Option sechs
|
<title>Probleme beim Booten</title>
|
||||||
(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>
|
<para>Wenn der Bootvorgang mit der folgenden Meldung
|
||||||
OK? <userinput>boot</userinput></screen>
|
abbricht, ist irgendwas mit dem Spiegel nicht in
|
||||||
|
Ordnung:</para>
|
||||||
|
|
||||||
<para>Falls dies funktioniert, wurde das Modul (aus welchen
|
<screen>Mounting from ufs:/dev/mirror/gm0s1a failed with error 19.
|
||||||
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>
|
Loader variables:
|
||||||
|
vfs.root.mountfrom=ufs:/dev/mirror/gm0s1a
|
||||||
|
vfs.root.mountfrom.options=rw
|
||||||
|
|
||||||
<para>in die Konfigurationsdatei des Kernels auf und führen
|
Manual root filesystem specification:
|
||||||
Sie einen Rebuild und eine erneute Installation durch. Dies
|
<fstype>:<device> [options]
|
||||||
sollte das Problem beseitigen.</para>
|
Mount <device> using filesystem <fstype>
|
||||||
|
and with the specified (optional) option list.
|
||||||
|
|
||||||
|
eg. ufs:/dev/da0s1a
|
||||||
|
zfs:tank
|
||||||
|
cd9660:/dev/acd0 ro
|
||||||
|
(which is equivalent to: mount -t cd9660 -o ro /dev/acd0 /)
|
||||||
|
|
||||||
|
? List valid disk boot devices
|
||||||
|
. Yield 1 second (for background tasks)
|
||||||
|
<empty line> Abort manual input
|
||||||
|
|
||||||
|
mountroot></screen>
|
||||||
|
|
||||||
|
<para>Dieses Problem kann durch ein nicht geladenes
|
||||||
|
Kernelmodul <filename>geom_mirror.ko</filename> in
|
||||||
|
<filename>/boot/loader.conf</filename> verursacht werden.
|
||||||
|
Um das Problem zu beheben, booten Sie von einem
|
||||||
|
&os;-Installationsmedium und wählen Sie
|
||||||
|
<literal>Shell</literal> an der Eingabeaufforderung. Laden
|
||||||
|
Sie dann das Modul und hängen Sie den Spiegel ein:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>gmirror load</userinput>
|
||||||
|
&prompt.root; <userinput>mount /dev/mirror/gm0s1a /mnt</userinput></screen>
|
||||||
|
|
||||||
|
<para>Bearbeiten Sie dann
|
||||||
|
<filename>/mnt/boot/loader.conf</filename> und fügen Sie
|
||||||
|
eine Zeile für das Kernelmodul hinzu:</para>
|
||||||
|
|
||||||
|
<programlisting>geom_mirror_load="YES"</programlisting>
|
||||||
|
|
||||||
|
<para>Speichern Sie die Datei und starten Sie das System
|
||||||
|
neu.</para>
|
||||||
|
|
||||||
|
<para>Andere Probleme, die <literal>error 19</literal>
|
||||||
|
verursachen können, sind nur mit mehr Aufwand zu beheben.
|
||||||
|
Obwohl das System von <filename>ada0</filename> booten
|
||||||
|
sollte, wird ein weiterer Prompt erscheinen, wenn
|
||||||
|
<filename>/etc/fstab</filename> fehlerhaft ist. Geben
|
||||||
|
Sie am Loader-Prompt <literal>ufs:/dev/ada0s1a</literal> ein
|
||||||
|
und drücken Sie <keycap>Enter</keycap>. Machen Sie die
|
||||||
|
Änderungen an <filename>/etc/fstab</filename> rückgängig und
|
||||||
|
hängen Sie anstelle des Spiegels die originale Festplatte
|
||||||
|
(<filename>ada0</filename>) ein. Starten Sie dann das
|
||||||
|
System neu und versuchen Sie den Vorgang erneut.</para>
|
||||||
|
|
||||||
|
<screen>Enter full pathname of shell or RETURN for /bin/sh:
|
||||||
|
&prompt.root; <userinput>cp /etc/fstab.orig /etc/fstab</userinput>
|
||||||
|
&prompt.root; <userinput>reboot</userinput></screen>
|
||||||
|
</sect4>
|
||||||
</sect3>
|
</sect3>
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
|
@ -457,29 +825,51 @@ OK? <userinput>boot</userinput></screen>
|
||||||
<title>Wiederherstellung des Systems nach einem
|
<title>Wiederherstellung des Systems nach einem
|
||||||
Plattenausfall</title>
|
Plattenausfall</title>
|
||||||
|
|
||||||
<para>Das Schöne an der Plattenspiegelung ist, dass eine
|
<para>Das Schöne an der Plattenspiegelung ist, dass eine Platte
|
||||||
kaputte Platte ersetzt werden kann, ohne dass Sie dabei
|
ausfallen kann, ohne dass Sie dabei Daten verlieren. Falls
|
||||||
Daten verlieren.</para>
|
<filename>ada0</filename> aus dem obigen Beispiel ausfällt,
|
||||||
|
steht der Spiegel weiterhin zur Verfügung und bietet die Daten
|
||||||
|
von der verbleibenden Platte <filename>ada1</filename>
|
||||||
|
an.</para>
|
||||||
|
|
||||||
<para>Basierend auf der vorhin besprochenen
|
<para>Um das ausgefallene Laufwerk zu ersetzen, muss das System
|
||||||
<acronym>RAID</acronym>1-Konfiguration, nehmen wir nun an, dass
|
heruntergefahren werden und das ausgefallene Laufwerk durch
|
||||||
die Platte <filename>da1</filename> ausgefallen ist und daher
|
ein neues Laufwerk von gleicher oder größerer Kapazität
|
||||||
ersetzt werden muss. Um dies zu tun, müssen Sie
|
ersetzt werden. Hersteller verwenden oft etwas
|
||||||
feststellen, welche Platte ausgefallen ist und das System
|
willkürliche Werte für die Kapazität. Der einzige Weg, um
|
||||||
herunterfahren. Nun können Sie die kaputte Platte gegen
|
wirklich sicher zu sein, ist die Gesamtzahl der Sektoren von
|
||||||
eine neue Platte austauschen und das System wieder starten.
|
<command>diskinfo -V</command> zu vergleichen. Ein Laufwerk
|
||||||
Nachdem der Systemstart abgeschlossen ist, verwenden Sie die
|
mit größerer Kapazität wird funktionieren, allerdings wird der
|
||||||
folgenden Befehle, um die Plattenspiegelung wieder zu
|
zusätzliche Platz ungenutzt bleiben.</para>
|
||||||
reaktivieren:</para>
|
|
||||||
|
<para>Nachdem der Rechner wieder eingeschaltet ist, wird der
|
||||||
|
Spiegel im <quote>degraded</quote> Modus ausgeführt werden.
|
||||||
|
Der Spiegel wird angewiesen, Laufwerke zu vergessen, die noch
|
||||||
|
nicht verbunden sind:</para>
|
||||||
|
|
||||||
<screen>&prompt.root; <userinput>gmirror forget gm0</userinput></screen>
|
<screen>&prompt.root; <userinput>gmirror forget gm0</userinput></screen>
|
||||||
|
|
||||||
<screen>&prompt.root; <userinput>gmirror insert gm0 /dev/da1</userinput></screen>
|
<para>Alte Metadaten sollten von der Ersatzfestplatte nach den
|
||||||
|
Anweisungen in <xref linkend="geom-mirror-metadata"/> gelöscht
|
||||||
|
werden. Anschließend kann die Ersatzfestplatte, in diesem
|
||||||
|
Beispiel <filename>ada4</filename>, in den Spiegel eingefügt
|
||||||
|
werden:</para>
|
||||||
|
|
||||||
<para>Der Befehl <command>gmirror</command> <option>status</option>
|
<screen>&prompt.root; <userinput>gmirror insert gm0 /dev/ada4</userinput></screen>
|
||||||
erlaubt es Ihnen, den Fortschritt bei der Wiederherstellung der
|
|
||||||
Plattenspiegelung zu beobachten. Das ist alles, was Sie tun
|
<para>Die Wiederherstellung beginnt, sobald das neue Laufwerk in
|
||||||
müssen.</para>
|
den Spiegel eingesetzt wird. Das Kopieren der Daten vom
|
||||||
|
Spiegel auf das neue Laufwerk kann eine Weile dauern. Die
|
||||||
|
Leistung des Spiegels ist während dieser Zeit stark reduziert,
|
||||||
|
deswegen sollten neue Laufwerke idealerweise dann eingefügt
|
||||||
|
werden, wenn der Rechner nicht benötigt wird.</para>
|
||||||
|
|
||||||
|
<para>Der Fortschritt der Wiederherstellung kann mit
|
||||||
|
<command>gmirror status</command> überwacht werden. Während
|
||||||
|
der Wiederherstellung ist der Status
|
||||||
|
<computeroutput>DEGRADED</computeroutput>. Wenn der Vorgang
|
||||||
|
abgeschlossen ist, wechselt der Status zu
|
||||||
|
<computeroutput>COMPLETE</computeroutput>.</para>
|
||||||
</sect2>
|
</sect2>
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue