20.4. RAID1 - Spiegelung

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.

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 (da(4)) SCSI-Platten sind.

20.4.1. Die primäre Platte spiegeln

Angenommen, FreeBSD wurde auf der ersten Platte da0 installiert, dann sollte gmirror(8) angewiesen werden, seine primären Daten auf dieser Platte zu speichern.

Bevor Sie den Spiegel aufbauen, sollten Sie die maximale Protokollierung aktivieren und den Zugang zum Gerät gestatten. Dazu setzen Sie die sysctl(8)-Option kern.geom.debugflags auf den folgenden Wert:

# sysctl kern.geom.debugflags=17

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 /dev/mirror/gm, indem Sie den folgenden Befehl ausführen:

Warnung:

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 FreeBSD aufsetzen. Die im folgenden beschriebene Vorgehensweise ist ebenfalls nicht kompatibel mit den Standard-Installationseinstellungen von FreeBSD 9.X, die das neue GPT-Partitionsschema verwenden. GEOM wird GPT-Metadaten überschreiben, was zu Datenverlust und einem möglicherweise nicht bootbarem System führt.

# gmirror label -vb round-robin gm0 /dev/da0

Ihr System sollte wie folgt antworten:

Metadata value stored on /dev/da0.
Done.

Initialisieren Sie GEOM. Dadurch wird das Kernelmodul /boot/kernel/geom_mirror.ko geladen:

# gmirror load

Anmerkung:

Wenn dieser Befehl erfolgreich ausgeführt wurde, wird die Gerätedatei gm0 im Verzeichnis /dev/mirror erzeugt.

Stellen Sie sicher, dass das Kernelmodul geom_mirror.ko beim Systemstart automatisch geladen wird:

# echo 'geom_mirror_load="YES"' >> /boot/loader.conf

Bearbeiten Sie die Datei /etc/fstab und ersetzen Sie alle Verweise auf die alte Gerätedatei da0 durch die neue Gerätedatei gm0 des Plattenspiegels. Um die Datei /etc/fstab bearbeiten zu können, müssen Sie als Benutzer root am System angemeldet sein.

Anmerkung:

Sollte vi(1) ihr bevorzugter Texteditor sein, kouml;nnen Sie diese Änderungen ganz einfach wie folgt durchführen:

# vi /etc/fstab

Bevor Sie die Datei bearbeiten, sollten Sie ein Backup anlegen. Haben Sie die Datei mit vi(1) geöffnet, können Sie durch die Eingabe von :w /etc/fstab.bak eine Sicherungskopie der Datei anlegen. Danach ersetzen Sie alle alten Referenzen auf da0 durch gm0, indem Sie :%s/da/mirror\/gm/g eingeben.

Die geänderte fstab sollte nun ähnlich wie im folgenden Beispiel aussehen. Es spielt dabei keine Rolle, ob Sie SCSI- oder ATA-Platten verwenden. Das RAID-Gerät heißt in jedem Fall gm.

# 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

Führen Sie einen Systemneustart durch:

# shutdown -r now

Wenn das System gestartet wird, sollten Sie nun nur noch gm0-Geräte anstatt der bisherigen da0-Geräte sehen. Nachdem das System vollständig initialisiert wurde, können Sie die neue Konfiguration testen, indem Sie den Befehl mount ausführen:

# mount
Filesystem         1K-blocks    Used    Avail Capacity  Mounted on
/dev/mirror/gm0s1a   1012974  224604   707334    24%    /
devfs                      1       1        0   100%    /dev
/dev/mirror/gm0s1f  45970182   28596 42263972     0%    /home
/dev/mirror/gm0s1d   6090094 1348356  4254532    24%    /usr
/dev/mirror/gm0s1e   3045006 2241420   559986    80%    /var
devfs                      1       1        0   100%    /var/named/dev

Hier ist alles in Ordnung. Alle Werte sehen aus wie erwartet. Um die Synchronisierung zu beginnen, integrieren Sie nun die Platte da1 in den Spiegel, indem Sie den folgenden Befehl eingeben:

# gmirror insert gm0 /dev/da1

Während die Platten gespiegelt werden, können Sie den Fortschritt durch die Eingabe des folgenden Befehls überprüfen:

# gmirror status

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:

      Name    Status  Components
mirror/gm0  COMPLETE  da0
                      da1

Sollten Probleme aufgetreten oder sollte die Synchronisierung noch nicht abgeschlossen sein, wäre der Status DEGRADED anstatt COMPLETE.

20.4.2. Fehlerbehebung

20.4.2.1. Das System weigert sich zu starten

Falls das System startet und eine Eingabeaufforderung ähnlich der folgenden erscheint:

ffs_mountroot: can't find rootvp
Root mount failed: 6
mountroot>

Starten Sie den Rechner neu mit der Power- oder Resettaste. Wählen Sie im Startmenü Option sechs (6). Dadurch erscheint eine Eingabeaufforderung für loader(8). Laden Sie nun das Kernelmodul händisch:

OK? load geom_mirror
OK? boot

Falls dies funktioniert, wurde das Modul (aus welchen Gründen auch immer) nicht richtig geladen. Prüfen Sie, ob Ihr Eintrag in der Datei /boot/loader.conf korrekt ist. Sollte das Problem weiterhin bestehen, nehmen Sie die Zeile

options	GEOM_MIRROR

in die Konfigurationsdatei des Kernels auf und führen Sie einen Rebuild und eine erneute Installation durch. Dies sollte das Problem beseitigen.

20.4.3. Wiederherstellung des Systems nach einem Plattenausfall

Das Schöne an der Plattenspiegelung ist, dass eine kaputte Platte ersetzt werden kann, ohne dass Sie dabei Daten verlieren.

Basierend auf der vorhin besprochenen RAID1-Konfiguration, nehmen wir nun an, dass die Platte da1 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:

# gmirror forget gm0
# gmirror insert gm0 /dev/da1

Der Befehl gmirror status erlaubt es Ihnen, den Fortschritt bei der Wiederherstellung der Plattenspiegelung zu beobachten. Das ist alles, was Sie tun müssen.

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.

Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.