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$
|
||||
$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">
|
||||
<info><title>GEOM: Modulares Framework zur
|
||||
|
@ -246,210 +246,578 @@ Done.</screen>
|
|||
<indexterm>
|
||||
<primary>Disk Mirroring</primary>
|
||||
</indexterm>
|
||||
<indexterm>
|
||||
<primary>RAID1</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>Spiegelung (<acronym>RAID1</acronym> / Mirroring) ist eine
|
||||
Technik, bei der identische Daten auf mehr als ein Laufwerk
|
||||
geschrieben werden. Spiegel werden in der Regel zum Schutz vor
|
||||
Datenverlust aufgrund von Festplattenausfällen verwendet. Jedes
|
||||
Laufwerk in einem Spiegel enthält eine identische Kopie der
|
||||
Daten. Wenn ein einzelnes Laufwerk ausfällt, funktioniert der
|
||||
Spiegel weiterhin und die Daten werden von den restlichen
|
||||
Festplatten bereit gestellt. Der Rechner läuft einfach weiter
|
||||
und der Administrator hat die Gelegentheit, das defekte Laufwerk
|
||||
auszutauschen.</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>
|
||||
<para>Zwei häufige Situationen werden in diesem Beispiel
|
||||
erläutert. Im ersten Beispiel wird ein Spiegel aus zwei
|
||||
neuen Laufwerken erstellt, der die existierende Platte ersetzt.
|
||||
Das zweite Beispiel erzeugt ein Spiegel mit einem einzigen
|
||||
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>
|
||||
<title>Die primäre Platte spiegeln</title>
|
||||
<para>Traditionell sind die Laufwerke in einem Spiegel vom
|
||||
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
|
||||
<filename>da0</filename> installiert, dann sollte
|
||||
&man.gmirror.8; angewiesen werden, seine primären Daten
|
||||
auf dieser Platte zu speichern.</para>
|
||||
<warning>
|
||||
<para>Die hier gezeigten Verfahren löschen keine Daten. Dennoch
|
||||
sollte, wie bei jeder größeren Operation, zuerst eine
|
||||
vollständige Sicherung erstellt werden.</para>
|
||||
</warning>
|
||||
|
||||
<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>
|
||||
<sect2 xml:id="geom-mirror-metadata">
|
||||
<title>Probleme mit Metadaten</title>
|
||||
|
||||
<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
|
||||
Prozess, indem Sie die Metadaten-Informationen auf das Gerät
|
||||
der primären Platte speichern. Konkret erzeugen Sie dabei
|
||||
das Gerät
|
||||
<filename>/dev/mirror/gm</filename>, indem Sie
|
||||
den folgenden Befehl ausführen:</para>
|
||||
<para><acronym>GPT</acronym>-Metadaten können mit &man.gpart.8;
|
||||
gelöscht werden. Dieses Beispiel löscht sowohl die primären,
|
||||
als auch die <acronym>GPT</acronym>-Partitionstabelle von der
|
||||
Festplatte <filename>ada8</filename>:</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. 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>gpart destroy -F ada8</userinput></screen>
|
||||
|
||||
<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.
|
||||
Done.</screen>
|
||||
<para>Wenn der Spiegel nicht aktiv ist, sich jedoch noch alte
|
||||
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
|
||||
<filename>/boot/kernel/geom_mirror.ko</filename> geladen:</para>
|
||||
<screen>&prompt.root; <userinput>gmirror clear ada8</userinput></screen>
|
||||
|
||||
<screen>&prompt.root; <userinput>gmirror load</userinput></screen>
|
||||
|
||||
<note>
|
||||
<para>Wenn dieser Befehl erfolgreich ausgeführt wurde, wird
|
||||
die Gerätedatei <filename>gm0</filename> im
|
||||
Verzeichnis <filename>/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
|
||||
<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>
|
||||
<para>&man.gmirror.8; speichert einen Datenblock an Metadaten am
|
||||
Ende der Festplatte. Da das
|
||||
<acronym>GPT</acronym>-Partitionschema die Metadaten auch am
|
||||
Ende der Platte speichert, wird es nicht empfohlen, mit
|
||||
&man.gmirror.8; einen Spiegel aus einem gesamten
|
||||
<acronym>GPT</acronym>-Datenträger zu erstellen. In diesen
|
||||
Fällen sollte eine <acronym>MBR</acronym>-Partitionierung
|
||||
benutzt werden, weil hier nur eine Partitionstabelle am Anfang
|
||||
der Platte gespeichert wird und somit nicht mit den Metadaten
|
||||
des Spiegels im Konflikt steht.</para>
|
||||
</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>
|
||||
|
||||
<sect3>
|
||||
<title>Das System weigert sich zu starten</title>
|
||||
<title>Probleme beim Bootvorgang</title>
|
||||
|
||||
<para>Falls das System startet und eine Eingabeaufforderung
|
||||
ähnlich der folgenden erscheint:</para>
|
||||
<sect4>
|
||||
<title>BIOS-Einstellungen</title>
|
||||
|
||||
<programlisting>ffs_mountroot: can't find rootvp
|
||||
Root mount failed: 6
|
||||
mountroot></programlisting>
|
||||
<para>Möglicherweise müssen die
|
||||
<acronym>BIOS</acronym>-Einstellungen geändert werden, um
|
||||
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
|
||||
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>
|
||||
<sect4>
|
||||
<title>Probleme beim Booten</title>
|
||||
|
||||
<screen>OK? <userinput>load geom_mirror</userinput>
|
||||
OK? <userinput>boot</userinput></screen>
|
||||
<para>Wenn der Bootvorgang mit der folgenden Meldung
|
||||
abbricht, ist irgendwas mit dem Spiegel nicht in
|
||||
Ordnung:</para>
|
||||
|
||||
<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>
|
||||
<screen>Mounting from ufs:/dev/mirror/gm0s1a failed with error 19.
|
||||
|
||||
<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
|
||||
Sie einen Rebuild und eine erneute Installation durch. Dies
|
||||
sollte das Problem beseitigen.</para>
|
||||
Manual root filesystem specification:
|
||||
<fstype>:<device> [options]
|
||||
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>
|
||||
</sect2>
|
||||
|
||||
|
@ -457,29 +825,51 @@ OK? <userinput>boot</userinput></screen>
|
|||
<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>Das Schöne an der Plattenspiegelung ist, dass eine Platte
|
||||
ausfallen kann, ohne dass Sie dabei Daten verlieren. Falls
|
||||
<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
|
||||
<acronym>RAID</acronym>1-Konfiguration, nehmen wir nun an, dass
|
||||
die Platte <filename>da1</filename> 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 austauschen und das System wieder starten.
|
||||
Nachdem der Systemstart abgeschlossen ist, verwenden Sie die
|
||||
folgenden Befehle, um die Plattenspiegelung wieder zu
|
||||
reaktivieren:</para>
|
||||
<para>Um das ausgefallene Laufwerk zu ersetzen, muss das System
|
||||
heruntergefahren werden und das ausgefallene Laufwerk durch
|
||||
ein neues Laufwerk von gleicher oder größerer Kapazität
|
||||
ersetzt werden. Hersteller verwenden oft etwas
|
||||
willkürliche Werte für die Kapazität. Der einzige Weg, um
|
||||
wirklich sicher zu sein, ist die Gesamtzahl der Sektoren von
|
||||
<command>diskinfo -V</command> zu vergleichen. Ein Laufwerk
|
||||
mit größerer Kapazität wird funktionieren, allerdings wird der
|
||||
zusätzliche Platz ungenutzt bleiben.</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 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>
|
||||
erlaubt es Ihnen, den Fortschritt bei der Wiederherstellung der
|
||||
Plattenspiegelung zu beobachten. Das ist alles, was Sie tun
|
||||
müssen.</para>
|
||||
<screen>&prompt.root; <userinput>gmirror insert gm0 /dev/ada4</userinput></screen>
|
||||
|
||||
<para>Die Wiederherstellung beginnt, sobald das neue Laufwerk in
|
||||
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>
|
||||
</sect1>
|
||||
|
||||
|
|
Loading…
Reference in a new issue