Index: head/de_DE.ISO8859-1/books/handbook/geom/chapter.xml =================================================================== --- head/de_DE.ISO8859-1/books/handbook/geom/chapter.xml (revision 48460) +++ head/de_DE.ISO8859-1/books/handbook/geom/chapter.xml (revision 48461) @@ -1,1094 +1,1484 @@ GEOM: Modulares Framework zur Plattentransformation TomRhodesGeschrieben von DanielSeuffertÜbersetzt von JohannKois Übersicht GEOM GEOM Disk Framework GEOM Dieses Kapitel behandelt den Einsatz von Laufwerken mit dem GEOM-Framework in &os;. Dies beinhaltet auch die wichtigen RAID-Überwachungswerkzeuge, welche das Framework zur Konfiguration nutzen. Dieses Kapitel enthält keine tiefschürfenden Betrachtungen, wie GEOM I/O nutzt oder steuert, sein zugrundeliegendes Subsystem oder den Quelltext von GEOM. Diese Information wird durch die &man.geom.4;-Manualpage und seine zahlreichen SEE ALSO-Verweise bereitgestellt. Dieses Kapitel ist auch kein ausführlicher Führer für RAID-Konfigurationen. Nur durch GEOM unterstützte RAID-Klassen werden erörtert. Nach Lesen dieses Kapitels werden Sie folgendes wissen: Welche Art von RAID-Unterstützung durch GEOM verfügbar ist. Wie man die Basis-Dienstprogramme nutzt, um verschiedene RAID-Stufen zu konfigurieren, zu manipulieren und zu warten. Wie man mittels GEOM spiegelt, striped, verschlüsselt und entfernte Laufwerke verbindet. Wie man an Laufwerken, welche an das GEOM-Framework angeschlossen sind, Fehler behebt. Bevor Sie dieses Kapitel lesen, sollten Sie: Verstehen, wie &os; Laufwerke behandelt (). Wissen wie man einen neuen &os;-Kernel installiert und konfiguriert (). Einführung in GEOM GEOM erlaubt den Zugriff und die Kontrolle von Klassen — Master Boot Records, BSD-Label usw. — durch die Nutzung von Datenträgern (Providern) oder den besonderen Dateien in /dev. Verschiedene Software RAID-Konfigurationen unterstützend, wird GEOM Ihnen transparenten Zugriff auf das Betriebssystem und System-Dienstprogramme gewähren. RAID0 - Striping TomRhodesGeschrieben von MurrayStokely GEOM Striping Striping (stripe = Streifen) ist eine Methode, um verschiedene Laufwerke in einem einzigen Datenträger zusammenzufassen. In vielen Fällen wird dies durch die Nutzung von Hardware-Controllern bewerkstelligt. Das GEOM-Subsystem unterstützt Software-RAID0 (welches auch als Striping bekannt ist). In einem RAID0-System werden die Daten in einzelne Blöcke aufgeteilt, welche über alle angeschlossenen Laufwerke in einem Datenfeld (Array) geschrieben werden. Anstatt darauf warten zu müssen, dass 256K auf ein einzelnes Laufwerk geschrieben werden, kann ein RAID0-System gleichzeitig 64K auf jedes von 4 Laufwerken schreiben mit entsprechend besserer I/O-Leistung. Dieser Durchsatz kann durch die Verwendung mehrerer Controller noch zusätzlich gesteigert werden. Jedes Laufwerk in einem RAID0-Stripe muss die gleiche Größe haben, da I/O-Anforderungen für das Lesen und Schreiben abwechselnd auf mehrere Laufwerke parallel erfolgen. Disk Striping Illustration Erzeugen eines Stripe von unformatierten ATA-Platten Laden Sie das geom_stripe.ko-Modul: &prompt.root; kldload geom_stripe Stellen Sie sicher, dass ein geeigneter Mount-Punkt existiert. Falls dieser Datenträger eine Root-Partition werden soll, dann nutzen Sie zeitweise einen anderen Mount-Punkt, beispielsweise /mnt: &prompt.root; mkdir /mnt Bestimmen Sie die Gerätenamen derjenigen Platten, welche gestriped werden sollen, und erzeugen Sie ein neues Stripe-Gerät. Das folgende Beispiel verwendet zwei unbenutzte und unpartitionierte ATA-Platten, die gestriped werden sollen. Lauten die Gerätenamen /dev/ad2 und /dev/ad3, so verwenden Sie folgenden Befehl: &prompt.root; gstripe label -v st0 /dev/ad2 /dev/ad3 Metadata value stored on /dev/ad2. Metadata value stored on /dev/ad3. Done. Schreiben Sie einen Standard-Label (auch als Partitions-Tabelle bekannt) auf den neuen Datenträger und installieren Sie den normalen Bootstrap-Code: &prompt.root; bsdlabel -wB /dev/stripe/st0 Dieser Prozess sollte zwei weitere Geräte im Verzeichnis /dev/stripe (zusätzlich zum Gerät st0) erzeugt haben. Diese schliessen st0a und st0c ein. Nun kann ein Dateisystem auf dem Gerät st0a mit dem newfs-Dienstprogramm erzeugt werden: &prompt.root; newfs -U /dev/stripe/st0a Viele Zahlen rauschen nun über Ihren Bildschirm und nach ein paar Sekunden wird der Prozess abgeschlossen sein. Der Datenträger wurde erzeugt und kann in den Verzeichnisbaum eingehängt werden. Um das erzeugte Stripe manuell zu mounten: &prompt.root; mount /dev/stripe/st0a /mnt Um das erzeugte Dateisystem automatisch während des Startvorgangs zu mounten, müssen Sie die Datenträgerinformation in die Datei /etc/fstab schreiben. Dazu legen Sie einen permanenten Mountpunkt namens stripe an: &prompt.root; mkdir /stripe &prompt.root; echo "/dev/stripe/st0a /stripe ufs rw 2 2" \ >> /etc/fstab Das geom_stripe.ko-Modul muss ebenfalls automatisch beim Systemstart geladen werden (durch die Aufnahme der folgenden Zeile in die Datei /boot/loader.conf): &prompt.root; echo 'geom_stripe_load="YES"' >> /boot/loader.conf RAID1 - Spiegelung GEOM Disk Mirroring + + RAID1 + - 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. + Spiegelung (RAID1 / 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. - 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;) SCSI-Platten - sind. + 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. - - Die primäre Platte spiegeln + 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. - Angenommen, &os; wurde auf der ersten Platte - da0 installiert, dann sollte - &man.gmirror.8; angewiesen werden, seine primären Daten - auf dieser Platte zu speichern. + + Die hier gezeigten Verfahren löschen keine Daten. Dennoch + sollte, wie bei jeder größeren Operation, zuerst eine + vollständige Sicherung erstellt werden. + - 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 - kern.geom.debugflags auf den folgenden - Wert: + + Probleme mit Metadaten - &prompt.root; sysctl kern.geom.debugflags=17 + 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: + GPT-Partitionstabellen und alte Metadaten + aus einem vorherigen Spiegel. - 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: + GPT-Metadaten können mit &man.gpart.8; + gelöscht werden. Dieses Beispiel löscht sowohl die primären, + als auch die GPT-Partitionstabelle von der + Festplatte ada8: - - 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.X, die das neue - GPT-Partitionsschema verwenden. GEOM wird - GPT-Metadaten überschreiben, was zu - Datenverlust und einem möglicherweise nicht bootbarem System - führt. - + &prompt.root; gpart destroy -F ada8 - &prompt.root; gmirror label -vb round-robin gm0 /dev/da0 + 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 + ada8 aus dem aktiven Spiegel + gm4 entfernt: - Ihr System sollte wie folgt antworten: + &prompt.root; gmirror remove gm4 ada8 - Metadata value stored on /dev/da0. -Done. + Wenn der Spiegel nicht aktiv ist, sich jedoch noch alte + Metadaten auf der Festplatte befinden, benutzen Sie + gmirror clear, um die Metadaten zu + entfernen: - Initialisieren Sie GEOM. Dadurch wird das Kernelmodul - /boot/kernel/geom_mirror.ko geladen: + &prompt.root; gmirror clear ada8 + &man.gmirror.8; speichert einen Datenblock an Metadaten am + Ende der Festplatte. Da das + GPT-Partitionschema die Metadaten auch am + Ende der Platte speichert, wird es nicht empfohlen, mit + &man.gmirror.8; einen Spiegel aus einem gesamten + GPT-Datenträger zu erstellen. In diesen + Fällen sollte eine MBR-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. + + + + Einen Spiegel mit zwei neuen Festplatten + erstellen + + In diesem Beispiel wurde &os; bereits auf der vorhandenen + Festplatte ada0 installiert. Zwei neue + Platten, ada1 und + ada2, 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. + + Das Kernelmodul geom_mirror.ko muss + entweder in den Kernel eingebaut, oder zur Laufzeit geladen + werden. Sie können das Modul manuell laden: + &prompt.root; gmirror load - - Wenn dieser Befehl erfolgreich ausgeführt wurde, wird - die Gerätedatei gm0 im - Verzeichnis /dev/mirror - erzeugt. - + Erstellen Sie den Spiegel mit den beiden neuen + Festplatten: - Stellen Sie sicher, dass das Kernelmodul - geom_mirror.ko beim Systemstart automatisch - geladen wird: + &prompt.root; gmirror label -v gm0 /dev/ada1 /dev/ada2 - &prompt.root; echo 'geom_mirror_load="YES"' >> /boot/loader.conf + gm0 ist ein vom Benutzer gewählter + Name, der dem neuen Spiegel zugeordnet wird. Nachdem der + Spiegel gestartet wurde, erscheint dieser Gerätename in + /dev/mirror/. - 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. + MBR- und + bsdlabel-Partitionstabellen können + jetzt auf dem neuen Spiegel erzeugt werden. Dieses Beispiel + verwendet das herkömmliche Dateisystem-Layout für + /, swap, /var, + /tmp und /usr. Eine + einzelne Root- und Swap-Partition würde ebenfalls + funktionieren. - - Sollte &man.vi.1; ihr bevorzugter Texteditor sein, - kouml;nnen Sie diese Änderungen ganz einfach wie - folgt durchführen: + 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 ada0 gespeichert sind. - &prompt.root; vi /etc/fstab + &prompt.root; gpart create -s MBR mirror/gm0 +&prompt.root; gpart add -t freebsd -a 4k mirror/gm0 +&prompt.root; gpart show mirror/gm0 +=> 63 156301423 mirror/gm0 MBR (74G) + 63 63 - free - (31k) + 126 156301299 1 freebsd (74G) + 156301425 61 - free - (30k) - 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 - :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. - + &prompt.root; gpart create -s BSD mirror/gm0s1 +&prompt.root; gpart add -t freebsd-ufs -a 4k -s 2g mirror/gm0s1 +&prompt.root; gpart add -t freebsd-swap -a 4k -s 4g mirror/gm0s1 +&prompt.root; gpart add -t freebsd-ufs -a 4k -s 2g mirror/gm0s1 +&prompt.root; gpart add -t freebsd-ufs -a 4k -s 1g mirror/gm0s1 +&prompt.root; gpart add -t freebsd-ufs -a 4k mirror/gm0s1 +&prompt.root; gpart show mirror/gm0s1 +=> 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) - 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. + Damit von dem Spiegel gebootet werden kann, muss der + Bootcode in den MBR installiert, ein + bsdlabel erstellt und die aktive Partition gesetzt + werden: - # 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 + &prompt.root; gpart bootcode -b /boot/mbr mirror/gm0 +&prompt.root; gpart set -a active -i 1 mirror/gm0 +&prompt.root; gpart bootcode -b /boot/boot mirror/gm0s1 - Führen Sie einen Systemneustart durch: + Erstellen Sie die Dateisysteme auf dem neuen Spiegel und + aktivieren Sie Soft-Updates: - &prompt.root; shutdown -r now + &prompt.root; newfs -U /dev/mirror/gm0s1a +&prompt.root; newfs -U /dev/mirror/gm0s1d +&prompt.root; newfs -U /dev/mirror/gm0s1e +&prompt.root; newfs -U /dev/mirror/gm0s1f - 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: + Die Dateisysteme der vorhandenen Platte + ada0 können jetzt mit &man.dump.8; und + &man.restore.8; auf den Spiegel kopiert werden. - &prompt.root; 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 +&prompt.root; mount /dev/mirror/gm0s1a /mnt +&prompt.root; dump -C16 -b64 -0aL -f - / | (cd /mnt && restore -rf -) +&prompt.root; mount /dev/mirror/gm0s1d /mnt/var +&prompt.root; mount /dev/mirror/gm0s1e /mnt/tmp +&prompt.root; mount /dev/mirror/gm0s1f /mnt/usr +&prompt.root; dump -C16 -b64 -0aL -f - /var | (cd /mnt/var && restore -rf -) +&prompt.root; dump -C16 -b64 -0aL -f - /tmp | (cd /mnt/tmp && restore -rf -) +&prompt.root; dump -C16 -b64 -0aL -f - /usr | (cd /mnt/usr && restore -rf -) - 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: + Fügen Sie die Dateisysteme für den Spiegel in + /etc/rc.conf hinzu: - &prompt.root; gmirror insert gm0 /dev/da1 + # 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 - Während die Platten gespiegelt werden, können - Sie den Fortschritt durch die Eingabe des folgenden Befehls - überprüfen: + Wenn das Modul geom_mirror.ko nicht + im Kernel enthalten ist, können Sie + /mnt/boot/loader.conf bearbeiten, damit + das Modul beim Systemstart geladen wird: - &prompt.root; gmirror status + geom_mirror_load="YES" - 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: + Starten Sie das System neu und überprüfen Sie, ob + alle Daten erfolgreich kopiert wurden. Das + BIOS 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. - Name Status Components -mirror/gm0 COMPLETE da0 - da1 + Falls es Probleme beim Booten gibt, lesen Sie den + . Die alte + Festplatte ada0 kann vom System + getrennt und als Offline-Sicherung aufbewahrt werden. - Sollten Probleme aufgetreten oder sollte die - Synchronisierung noch nicht abgeschlossen sein, wäre - der Status DEGRADED anstatt - COMPLETE. + Im laufenden Betrieb verhält sich der Spiegel genau + wie ein einzelnes Laufwerk. + Einen Spiegel mit einem vorhandenen Laufwerk + erstellen + + In diesem Beispiel wurde &os; bereits auf der + Festplatte ada0 installiert und eine + weitere Platte, ada1, 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 gmirror 512 Byte an + Metadaten am Ende der Festplatte speichert, und die bestehende + Platte, ada0, in der Regel den Platz + bereits belegt hat. + + Laden Sie das Kernelmodul + geom_mirror.ko: + + &prompt.root; gmirror load + + Prüfen Sie mit diskinfo die Mediengröße + der vorhandenen Festplatte: + + &prompt.root; diskinfo -v ada0 | head -n3 +/dev/ada0 + 512 # sectorsize + 1000204821504 # mediasize in bytes (931G) + + 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 + ada0, 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 + gzero.nop beschränken, auch wenn die neue + Festplatte ada1 mehr Platz zur Verfügung + hätte. Beachten Sie, dass + 1000204821504 in der zweiten Zeile + der ermittelten Mediengröße von diskinfo + entspricht. + + &prompt.root; geom zero load +&prompt.root; gnop create -s 1000204821504 gzero +&prompt.root; gmirror label -v gm0 gzero.nop ada1 +&prompt.root; gmirror forget gm0 + + Da gzero.nop keine Daten speichert, + sieht der Spiegel sie als nicht verbunden an. Der Spiegel ist + so konfiguriert, dass er nicht verbundene Komponenten einfach + vergisst. Das Ergebnis ist ein Spiegel mit nur + einer einzigen Platte, ada1. + + Sehen Sie sich nach der Erstellung von + gm0 die Partitionstabelle von + ada0 an. Diese Ausgabe stammt von einer + 1 TB Festplatte. Falls am Ende der Platte noch freier + Speicherplatz ist, kann der Inhalt von + ada0 direkt auf den Spiegel kopiert + werden. + + 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. + + &prompt.root; gpart show ada0 +=> 63 1953525105 ada0 MBR (931G) + 63 1953525105 1 freebsd [active] (931G) + + In diesem Fall muss die Partitionstabelle bearbeitet + werden, um die Kapazität von mirror/gm0 + um einen Sektor zu reduzieren. Dieses Verfahren wird später + erläutert. + + In beiden Fällen sollte die Partitionstabelle der primären + Platte mit gpart backup gesichert + werden. + + &prompt.root; gpart backup ada0 > table.ada0 +&prompt.root; gpart backup ada0s1 > table.ada0s1 + + Diese Kommandos erstellen zwei Dateien, + table.ada0 und + table.ada0s1. Das Beispiel verwendet + eine 1 TB Festplatte: + + &prompt.root; cat table.ada0 +MBR 4 +1 freebsd 63 1953525105 [active] + + &prompt.root; cat table.ada0s1 +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 + + 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. + + &prompt.root; cat table.ada0 +MBR 4 +1 freebsd 63 1953525104 [active] + + &prompt.root; cat table.ada0s1 +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 984640880 + + Wenn mindestens ein Sektor der Platte nicht zugewiesen + wurde, kann die Platte ohne Modifikation verwendet + werden. + + Jetzt kann die Partitionstabelle auf + mirror/gm0 wiederhergestellt + werden: + + &prompt.root; gpart restore mirror/gm0 < table.ada0 +&prompt.root; gpart restore mirror/gm0s1 < table.ada0s1 + + Prüfen Sie die Partitionstabellen mit + gpart show. Dieses Beispiel nutzt + gm0s1a für /, + gm0s1d für /var, + gm0s1e für /usr, + gm0s1f für /data1 + und gm0s1g für + /data2. + + &prompt.root; gpart show mirror/gm0 +=> 63 1953525104 mirror/gm0 MBR (931G) + 63 1953525042 1 freebsd [active] (931G) + 1953525105 62 - free - (31k) + +&prompt.root; gpart show mirror/gm0s1 +=> 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) + + Sowohl die Slice, als auch die letzte Partition, muss + mindestens einen freien Block am Ende der Platte haben. + + Erstellen Sie Dateisysteme auf diesen neuen + Partitionen: + +&prompt.root; newfs -U /dev/mirror/gm0s1a +&prompt.root; newfs -U /dev/mirror/gm0s1d +&prompt.root; newfs -U /dev/mirror/gm0s1e +&prompt.root; newfs -U /dev/mirror/gm0s1f +&prompt.root; newfs -U /dev/mirror/gm0s1g + + Damit Sie von dem Spiegel booten können, müssen Sie den + Bootcode in den MBR installieren, ein + bsdlabel anlegen und das aktive Slice setzen: + + &prompt.root; gpart bootcode -b /boot/mbr mirror/gm0 +&prompt.root; gpart set -a active -i 1 mirror/gm0 +&prompt.root; gpart bootcode -b /boot/boot mirror/gm0s1 + + Bearbeiten Sie /etc/fstab, um die + neuen Partitionen auf dem Spiegel nutzen zu können. Speichern + Sie zunächst eine Kopie der Datei unter + /etc/fstab.orig: + + &prompt.root; cp /etc/fstab /etc/fstab.orig + + Ersetzen Sie in /etc/fstab + /dev/ada0 durch + mirror/gm0. + + # 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 + + Wenn das Modul geom_mirror.ko nicht + im Kernel enthalten ist, können Sie + /boot/loader.conf bearbeiten, damit + das Modul beim Systemstart geladen wird: + + geom_mirror_load="YES" + + 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 dump + -L sichern, wird zunächst ein Snapshot des + Dateisystems erstellt, was einige Zeit dauern kann. + + &prompt.root; mount /dev/mirror/gm0s1a /mnt +&prompt.root; dump -C16 -b64 -0aL -f - / | (cd /mnt && restore -rf -) +&prompt.root; mount /dev/mirror/gm0s1d /mnt/var +&prompt.root; mount /dev/mirror/gm0s1e /mnt/usr +&prompt.root; mount /dev/mirror/gm0s1f /mnt/data1 +&prompt.root; mount /dev/mirror/gm0s1g /mnt/data2 +&prompt.root; dump -C16 -b64 -0aL -f - /usr | (cd /mnt/usr && restore -rf -) +&prompt.root; dump -C16 -b64 -0aL -f - /var | (cd /mnt/var && restore -rf -) +&prompt.root; dump -C16 -b64 -0aL -f - /data1 | (cd /mnt/data1 && restore -rf -) +&prompt.root; dump -C16 -b64 -0aL -f - /data2 | (cd /mnt/data2 && restore -rf -) + + Starten Sie das System neu und booten Sie von + ada1. Wenn alles funktioniert, wird + das System von mirror/gm0 booten, + welches jetzt die gleichen Daten enthält wie + ada0. Lesen Sie , falls es Probleme beim + Booten gibt. + + An dieser Stelle besteht der Spiegel immer noch aus der + einzelnen Platte ada1. + + Nachdem erfolgreich von mirror/gm0 + gebootet wurde, besteht der letzte Schritt darin, + ada0 in den Spiegel einzufügen. + + + Wenn Sie ada0 in den Spiegel + einfügen, wird der Inhalt der Platte mit den Daten aus + dem Spiegel überschrieben. Sie müssen sicherstellen, das + mirror/gm0 den gleichen Inhalt wie + ada0 hat, bevor Sie + ada0 zum Spiegel hinzufügen. Falls der + zuvor mit &man.dump.8; und &man.restore.8; kopierte Inhalt + nicht mit dem von ada0 identisch ist, + machen Sie die Änderungen an /etc/fstab + rückgängig, starten Sie das System neu und beginnen Sie die + Prozedur von vorn. + + + &prompt.root; gmirror insert gm0 ada0 +GEOM_MIRROR: Device gm0: rebuilding provider ada0 + + Die Synchronisation zwischen den beiden Platten wird + direkt gestartet. Verwenden Sie gmirror + status um den Fortschritt zu beobachten. + + &prompt.root; gmirror status + Name Status Components +girror/gm0 DEGRADED ada1 (ACTIVE) + ada0 (SYNCHRONIZING, 64%) + + Nach einer Weile wird die Wiederherstellung abgeschlossen + sein. + + GEOM_MIRROR: Device gm0: rebuilding provider ada0 finished. +&prompt.root; gmirror status + Name Status Components +mirror/gm0 COMPLETE ada1 (ACTIVE) + ada0 (ACTIVE) + + mirror/gm0 besteht nun aus den beiden + Platten ada0 und + ada1. Der Inhalt der beiden Platten wird + automatisch miteinander synchronisiert. Im laufenden Betrieb + verhält sich mirror/gm0 wie eine einzelne + Festplatte. + + + Fehlerbehebung - Das System weigert sich zu starten + Probleme beim Bootvorgang - Falls das System startet und eine Eingabeaufforderung - ähnlich der folgenden erscheint: + + BIOS-Einstellungen - ffs_mountroot: can't find rootvp -Root mount failed: 6 -mountroot> + Möglicherweise müssen die + BIOS-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. + - 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: + + Probleme beim Booten - OK? load geom_mirror -OK? boot + Wenn der Bootvorgang mit der folgenden Meldung + abbricht, ist irgendwas mit dem Spiegel nicht in + Ordnung: - 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 + Mounting from ufs:/dev/mirror/gm0s1a failed with error 19. - options GEOM_MIRROR +Loader variables: + vfs.root.mountfrom=ufs:/dev/mirror/gm0s1a + vfs.root.mountfrom.options=rw - in die Konfigurationsdatei des Kernels auf und führen - Sie einen Rebuild und eine erneute Installation durch. Dies - sollte das Problem beseitigen. +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> + + Dieses Problem kann durch ein nicht geladenes + Kernelmodul geom_mirror.ko in + /boot/loader.conf verursacht werden. + Um das Problem zu beheben, booten Sie von einem + &os;-Installationsmedium und wählen Sie + Shell an der Eingabeaufforderung. Laden + Sie dann das Modul und hängen Sie den Spiegel ein: + + &prompt.root; gmirror load +&prompt.root; mount /dev/mirror/gm0s1a /mnt + + Bearbeiten Sie dann + /mnt/boot/loader.conf und fügen Sie + eine Zeile für das Kernelmodul hinzu: + + geom_mirror_load="YES" + + Speichern Sie die Datei und starten Sie das System + neu. + + Andere Probleme, die error 19 + verursachen können, sind nur mit mehr Aufwand zu beheben. + Obwohl das System von ada0 booten + sollte, wird ein weiterer Prompt erscheinen, wenn + /etc/fstab fehlerhaft ist. Geben + Sie am Loader-Prompt ufs:/dev/ada0s1a ein + und drücken Sie Enter. Machen Sie die + Änderungen an /etc/fstab rückgängig und + hängen Sie anstelle des Spiegels die originale Festplatte + (ada0) ein. Starten Sie dann das + System neu und versuchen Sie den Vorgang erneut. + + Enter full pathname of shell or RETURN for /bin/sh: +&prompt.root; cp /etc/fstab.orig /etc/fstab +&prompt.root; reboot + 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. + Das Schöne an der Plattenspiegelung ist, dass eine Platte + ausfallen kann, ohne dass Sie dabei Daten verlieren. Falls + ada0 aus dem obigen Beispiel ausfällt, + steht der Spiegel weiterhin zur Verfügung und bietet die Daten + von der verbleibenden Platte ada1 + an. - 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: + 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 + diskinfo -V zu vergleichen. Ein Laufwerk + mit größerer Kapazität wird funktionieren, allerdings wird der + zusätzliche Platz ungenutzt bleiben. + Nachdem der Rechner wieder eingeschaltet ist, wird der + Spiegel im degraded Modus ausgeführt werden. + Der Spiegel wird angewiesen, Laufwerke zu vergessen, die noch + nicht verbunden sind: + &prompt.root; gmirror forget gm0 - &prompt.root; gmirror insert gm0 /dev/da1 + Alte Metadaten sollten von der Ersatzfestplatte nach den + Anweisungen in gelöscht + werden. Anschließend kann die Ersatzfestplatte, in diesem + Beispiel ada4, in den Spiegel eingefügt + werden: - Der Befehl gmirror - erlaubt es Ihnen, den Fortschritt bei der Wiederherstellung der - Plattenspiegelung zu beobachten. Das ist alles, was Sie tun - müssen. + &prompt.root; gmirror insert gm0 /dev/ada4 + + 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. + + Der Fortschritt der Wiederherstellung kann mit + gmirror status überwacht werden. Während + der Wiederherstellung ist der Status + DEGRADED. Wenn der Vorgang + abgeschlossen ist, wechselt der Status zu + COMPLETE. <acronym>RAID</acronym>3 - Byte-Level Striping mit dedizierter Parität Mark Gladman Geschrieben von Daniel Gerzo Tom Rhodes Basierend auf Dokumentation von Murray Stokely Björn Heidotting Übersetzt von GEOM RAID3 RAID3 ist eine Methode, die mehrere Festplatten zu einem einzigen Volume mit einer dedizierten Paritätsfestplatte kombiniert. In einem RAID3-System werden die Daten in einzelne Bytes aufgeteilt und dann über alle Laufwerke, mit Ausnahme der Paritätsfestplatte, geschrieben. Beim Lesen von Daten in einer RAID3 Implementierung werden alle Festplatten im Array parallel genutzt. Die Leistung kann durch den Einsatz von mehreren Controllern weiter erhöht werden. Ein RAID3-Array hat eine Fehlertoleranz von 1 Laufwerk und bietet dabei eine Kapazität von 1 - 1/n der Gesamtkapazität der Laufwerke im Array, wobei n die Anzahl der Festplatten im Array darstellt. So eine Konfiguration ist meistens für die Speicherung von größeren Dateien geeignet, wie beispielsweise Multimediadateien. Mindestens 3 Festplatten sind erforderlich, um ein RAID3 zu erstellen. Jede Festplatte muss von der gleichen Größe sein, da die I/O-Anfragen für Lesen oder Schreiben auf mehreren Festplatten parallel stattfinden. Aufgrund der Beschaffenheit von RAID3, muss die Anzahl der Laufwerke 3, 5, 9, 17 bzw. 2^n + 1 sein. Dieser Abschnitt beschreibt, wie ein Software RAID3 auf einem &os;-System erstellt wird. Obwohl es theoretisch möglich ist &os; von einem RAID3-Array zu booten, wird von solch einer ungewöhnlichen Konfiguration dringend abgeraten. Ein dediziertes <acronym>RAID</acronym>3-Array erstellen In &os; wird die Unterstützung für RAID3 über die GEOM-Klasse &man.graid3.8; implementiert. Zum Erstellen eines dedizierten RAID3-Arrays sind folgende Schritte erforderlich. Laden Sie zunächst das Modul geom_raid3.ko mit einem der folgenden Befehle: &prompt.root; graid3 load oder: &prompt.root; kldload geom_raid3 Stellen Sie sicher, dass ein geeigneter Mountpoint existiert. Dieser Befehl erstellt ein neues Verzeichnis, welches als Mountpoint verwendet werden kann: &prompt.root; mkdir /multimedia Bestimmen Sie die Gerätenamen der Festplatten, die dem Array hinzugefügt werden und erstellen Sie ein neues RAID3 Gerät. Das letzte aufgeführte Gerät wird als dediziertes Paritätslaufwerk verwendet. Dieses Beispiel verwendet drei unpartionierte ATA-Platten: ada1 und ada2 für die Daten, sowie ada3 für die Parität. &prompt.root; graid3 label -v gr0 /dev/ada1 /dev/ada2 /dev/ada3 Metadata value stored on /dev/ada1. Metadata value stored on /dev/ada2. Metadata value stored on /dev/ada3. Done. Partitionieren Sie das neu erstelle Gerät gr0 und erstellen Sie darauf ein UFS-Dateisystem: &prompt.root; gpart create -s GPT /dev/raid3/gr0 &prompt.root; gpart add -t freebsd-ufs /dev/raid3/gr0 &prompt.root; newfs -j /dev/raid3/gr0p1 Viele Zahlen rauschen nun über den Bildschirm und nach einer gewissen Zeit ist der Vorgang abgeschlossen. Das Volume wurde erstellt und kann jetzt in den Verzeichnisbaum eingehangen werden: &prompt.root; mount /dev/raid3/gr0p1 /multimedia/ Das RAID3-Array ist nun einsatzbereit. Weitere Konfigurationsschritte sind erforderlich, um die Einstellungen nach einem Systemneustart zu erhalten. Das Modul geom_raid3.ko muss geladen werden, bevor das Array eingehangen werden kann. Damit das Kernelmodul automatisch beim Systemstart geladen wird, muss die folgende Zeile in /boot/loader.conf hinzugefügt werden: geom_raid3_load="YES" Die folgenden Informationen über das Volume müssen in /etc/fstab hinzugefügt werden, um das Dateisystem des Arrays automatisch beim Systemstart zu aktivieren: /dev/raid3/gr0p1 /multimedia ufs rw 2 2 GEOM Gate Netzwerkgeräte GEOM unterstützt die Verwendung entfernter Geräte wie Festplatten, CD-ROMs, Dateien usw. mittels Nutzung der Gate-Dienstprogramme. Dies ist vergleichbar mit NFS. Zu Beginn muss eine Exportdatei erzeugt werden. Diese Datei legt fest, wer Zugriff auf die exportierten Ressourcen hat und welche Zugriffstechniken angeboten werden. Um zum Beispiel den vierten Slice auf der ersten SCSI-Platte zu exportieren, ist die folgende Datei /etc/gg.exports mehr als ausreichend: 192.168.1.0/24 RW /dev/da0s4d Sie wird allen Hosts innerhalb des privaten Netzwerkes den Zugriff auf das Dateisystem auf der Partition da0s4d erlauben. Um dieses Gerät zu exportieren, stellen Sie bitte sicher, dass es momentan nicht gemounted ist und starten Sie den &man.ggated.8; Server-Daemon: &prompt.root; ggated Um nun mount auf der Client-Maschine auszuführen, geben Sie bitte die folgenden Befehle ein: &prompt.root; ggatec create -o rw 192.168.1.1 /dev/da0s4d ggate0 &prompt.root; mount /dev/ggate0 /mnt Von nun an kann auf das Gerät über den Mount-Punkt /mnt zugegriffen werden. Es sollte darauf hingewiesen werden, dass dies scheitern wird, falls das Gerät momentan entweder auf dem Server oder irgendeiner anderen Maschine gemountet ist. Wenn das Gerät nicht länger gebraucht wird, dann kann es mit dem Befehl &man.umount.8; ausgehängt werden (genauso wie jedes andere Laufwerk auch). Das Labeln von Laufwerken GEOM Disk Labels Während der Initialisierung des Systems legt der &os;-Kernel für jedes gefundene Gerät Knotenpunkte an. Diese Methode für die Überprüfung auf vorhandene Geräte wirft einige Fragen auf. Was passiert beispielsweise, wenn ein neues USB-Laufwerk hinzugefügt wird? Es ist sehr wahrscheinlich, dass ein Flash-Speicher-Gerät den Gerätenamen da0 erhält, während gleichzeitig das bisherige da0 zu da1 wird. Dies verursacht Probleme beim Einhängen von Dateisystemen, wenn diese in der /etc/fstab aufgeführt sind und schlussendlich mag das auch dazu führen, dass das System nicht mehr startet. Eine Lösung für dieses Problem ist das Aneinanderketten der SCSI-Geräte, damit ein neues Gerät, welches der SCSI-Karte hinzugefügt wird, unbenutzte Gerätenummern erhält. Aber was geschieht, wenn ein USB-Gerät möglicherweise die primäre SCSI-Platte ersetzt? Dies kann passieren, weil USB-Geräte normalerweise vor der SCSI-Karte geprüft werden. Eine Lösung ist das Hinzufügen dieser Geräte, nachdem das System gestartet ist. Eine andere Lösung könnte sein, nur ein einzelnes ATA-Laufwerk zu nutzen und die SCSI-Geräte niemals in der /etc/fstab aufzuführen. Es gibt allerdings eine bessere Lösung. Durch Verwendung des glabel-Dienstprogramms kann ein Administrator oder Benutzer seine Laufwerke mit Labeln versehen und diese in der /etc/fstab nutzen. Da glabel seine Label im letzten Sektor jedes vorhandenen Datenträgers speichert, wird das Label persistent bleiben (auch über Neustarts hinweg). Durch Nutzung dieses Labels als Gerät kann das Dateisystem immer gemountet sein, unabhängig davon, durch welchen Geräte-Knotenpunkt auf ihn zugegriffen wird. Der Label muss permanent (dauerhaft) sein. Man kann das Dienstprogramm glabel nutzen, um sowohl transiniente als auch permanente Label zu erzeugen. Aber nur permanente (persistente) Label bleiben konsistent über Neustarts hinweg. Lesen Sie die &man.glabel.8;-Manualpage für weitere Unterschiede zwischen den Label-Typen. Label-Typen und Beispiele Es gibt zwei Arten von Labeln: generische Label und Dateisystem-Label. Label können dauerhaft (permanent) oder temporär sein. Permanente Label können mit &man.tunefs.8; oder &man.newfs.8; in einem speziellen spezielles Verzeichnis in /dev erzeugt werden, welches entsprechend der Dateisystem-Art benannt wird. UFS2-Dateisystem-Label werden zum Beispiel im Verzeichnis /dev/ufs angelegt. Permanente Label können außerdem durch den Befehl glabel label erzeugt werden. Diese Label sind dann allerdings nicht dateisystemspezisch und werden im Unterverzeichnis /dev/label erzeugt. Ein temporäres Label verschwindet mit dem nächsten Systemstart. Diese Label werden im Verzeichnis /dev/label erzeugt und sind ideal für Testzwecke. Ein temporäres Label kann durch den Befehl glabel create erzeugt werden. Weitere Informationen finden sich in der Manualpage &man.glabel.8;. Um ein permanentes Label auf einem UFS2-Dateisystem ohne Löschung von Daten zu erzeugen, kann man folgenden Befehl verwenden: &prompt.root; tunefs -L home /dev/da3 Wenn das Dateisystem voll ist, kann dies zu Datenkorruption führen; aber egal wie, falls das Dateisystem voll ist, sollte das Hauptziel die Entfernung ungenützter Dateien und nicht das Hinzufügen von Labeln sein. Ein Label sollte nun in /dev/ufs vorhanden sein, der zu /etc/fstab hinzugefügt wird: /dev/ufs/home /home ufs rw 2 2 Das Dateisystem darf nicht gemountet sein beim Versuch, tunefs auszuführen. Nun kann das Dateisystem wie üblich gemountet werden: &prompt.root; mount /home Von nun an kann der Geräte-Knotenpunkt sich ohne negative Effekte auf das System ändern, solange das Kernelmodul geom_label.ko beim Systemstart mittels /boot/loader.conf geladen wird oder die GEOM_LABEL-Kernel-Option aktiv ist. Dateisysteme können auch mit einem Standard-Label erzeugt werden (mittels des Flags in newfs). Lesen Sie bitte die Manualpage von &man.newfs.8; für weitere Informationen. Der folgende Befehl kann genutzt werden, um das Label zu beseitigen: &prompt.root; glabel destroy home Das folgende Beispiel zeigt Ihnen, wie Sie Label für die Partitionen einer Bootplatte erzeugen. Die Partitionen einer Bootplatte labeln Durch das Erstellen von permanenten Labeln für die Partitionen einer Bootplatte sollte das System selbst dann noch normal starten können, wenn Sie die Platte an einen anderen Controller anschließen oder in ein anderes System installieren. In diesem Beispiel nehmen wir an, dass nur eine einzige ATA-Platte verwendet wird, die Ihr System derzeit als ad0 erkennt. Weiters nehmen wir an, dass Sie das Standard-Partionierungsschema von &os; vewendet haben und Ihre Platte daher die Dateisysteme /, /var, /usr sowie /tmp aufweist. Zusätzlich wurde eine Swap-Partition angelegt. Starten Sie das System neu. Am &man.loader.8;-Prompt drücken Sie die Taste 4, um in den Single-User-Modus zu gelangen. Dort führen Sie die folgenden Befehle aus: &prompt.root; glabel label rootfs /dev/ad0s1a GEOM_LABEL: Label for provider /dev/ad0s1a is label/rootfs &prompt.root; glabel label var /dev/ad0s1d GEOM_LABEL: Label for provider /dev/ad0s1d is label/var &prompt.root; glabel label usr /dev/ad0s1f GEOM_LABEL: Label for provider /dev/ad0s1f is label/usr &prompt.root; glabel label tmp /dev/ad0s1e GEOM_LABEL: Label for provider /dev/ad0s1e is label/tmp &prompt.root; glabel label swap /dev/ad0s1b GEOM_LABEL: Label for provider /dev/ad0s1b is label/swap &prompt.root; exit Das System startet daraufhin in den Multi-User-Modus. Nachdem der Startvorgang abgeschlossen ist, editieren Sie die Datei /etc/fstab und ersetzen die konventionellen Gerätedateien durch die entsprechenden Label. Ihre modifizierte /etc/fstab sollte nun ähnlich der folgenden Ausgabe aussehen: # Device Mountpoint FStype Options Dump Pass# /dev/label/swap none swap sw 0 0 /dev/label/rootfs / ufs rw 1 1 /dev/label/tmp /tmp ufs rw 2 2 /dev/label/usr /usr ufs rw 2 2 /dev/label/var /var ufs rw 2 2 Starten Sie Ihr System neu. Traten keine Probleme auf, wird das System normal hochfahren und Sie erhalten die folgende Ausgabe, wenn Sie den Befehl mount ausführen: &prompt.root; mount /dev/label/rootfs on / (ufs, local) devfs on /dev (devfs, local) /dev/label/tmp on /tmp (ufs, local, soft-updates) /dev/label/usr on /usr (ufs, local, soft-updates) /dev/label/var on /var (ufs, local, soft-updates) Beginnend mit &os; 7.2, unterstützt &man.glabel.8; einen neuen Labeltyp für UFS-Dateisysteme. Dieser basiert auf der eindeutigen Dateisystem-ID ufsid. Derartige Label finden sich im Verzeichnis /dev/ufsid und werden während des Systemstarts automatisch erzeugt. Es ist möglich, diese ufsid-Label zum automatischen Einhängen von Partitionen in der Datei /etc/fstab einzusetzen. Verwenden Sie den Befehl glabel status, um eine Liste aller Dateisysteme und ihrer ufsid-Label zu erhalten: &prompt.user; glabel status Name Status Components ufsid/486b6fc38d330916 N/A ad4s1d ufsid/486b6fc16926168e N/A ad4s1f In diesem Beispiel repräsentiert ad4s1d das /var-Dateisystem, während ad4s1f dem /usr-Dateisystem entspricht. Wenn Sie die angegebenen ufsid-Werte verwenden, können diese Dateisysteme durch die folgenden Einträge in der Datei /etc/fstab gemountet werden: /dev/ufsid/486b6fc38d330916 /var ufs rw 2 2 /dev/ufsid/486b6fc16926168e /usr ufs rw 2 2 Jede Partition, die ein ufsid-Label aufweist, kann auf diese Art gemountet werden. Dies hat den Vorteil, dass Sie keine permanenten Label mehr anlegen müssen, wobei sich die Platten nach wie vor über geräteunabhängige Namen ansprechen und mounten lassen. UFS Journaling in GEOM GEOM Journaling Mit &os; 7.0 wurde eine lang erwartete Funktion, das Journaling, implementiert. Diese Funktion wird über das GEOM-Subsystem realisiert und kann über das Werkzeug &man.gjournal.8; eingerichtet werden. Was ist Journaling? Bei Journaling wird ein Protokoll über alle Dateisystemtransaktionen angelegt, inklusive aller Veränderungen, aus denen ein kompletter Schreibvorgang besteht, bevor diese Änderungen (Metadaten sowie tatsächliche Schreibvorgänge) physisch auf der Festplatte ausgeführt werden. Dieses Protokoll kann später erneut aufgerufen werden, um diese Vorgänge zu wiederholen (beispielsweise um Systeminkonsistenzen zu vermeiden). Diese Technik bietet eine weitere Möglichkeit, sich vor Datenverlust und Dateisystem-Inkonsistenzen zu schützen. Im Gegensatz zu Soft Updates (die Metadaten-Aktualisierungen verfolgen und erzwingen) und Snapshots (die ein Image eines Dateisystems darstellen) wird bei Journaling ein tatsächliches Protokoll in einem speziell dafür bereitgestellten Bereich der Festplatte (oder manchmal sogar auf einer separaten Platte) gespeichert. Im Gegensatz zu anderen Journaling-Dateisystemen arbeitet die gjournal-Methode blockbasiert und wurde nicht als Teil des Dateisystems implementiert, sondern als GEOM-Erweiterung. Um die gjournal-Unterstützung zu aktivieren, muss der &os;-Kernel die folgende Option enthalten (was seit &os; 7.0 bereits in der Voreinstellung der Fall ist): options UFS_GJOURNAL Um ein Volume mit Journalunterstützung beim Systemstart automatisch zu mounten, muss das Kernelmodul geom_journal.ko ebenfalls automatisch geladen werden (durch einen entsprechenden Eintrag in der Datei /boot/loader.conf): geom_journal_load="YES" Alternativ können Sie auch einen angepassten Kernel bauen, der diese Funktionalität enthält, indem Sie die folgende Zeile in Ihrer Kernelkonfigurationsdatei aufnehmen: options GEOM_JOURNAL Das Anlegen eines neuen Journals auf einem freien Dateisystem erfolgt durch die folgenden Schritte (im Folgenden wird angenommen, dass es sich bei da4 um eine neue SCSI-Platte handelt): &prompt.root; gjournal load &prompt.root; gjournal label /dev/da4 Danach sollten die Gerätedateien /dev/da4 sowie /dev/da4.journal vorhanden sein. Nun können Sie auf diesem Gerät ein Dateisystem anlegen: &prompt.root; newfs -O 2 -J /dev/da4.journal Dieser Befehl erzeugt ein UFS2-Dateisystem auf dem Gerät, für das im letzten Schritt das Journaling aktiviert wurde. Danach hängen Sie das neue Dateisystem mit mount in Ihren Verzeichnisbaum ein: &prompt.root; mount /dev/da4.journal /mnt Falls auf Ihrem System mehrere Slices angelegt sind (beispielsweise ad4s1 sowie ad4s2), wird gjournal für jedes Slice ein Journal anlegen (also ad4s1.journal sowie ad4s2.journal). Um die Leistung zu optimieren, kann das Journal auf eine externe Platte ausgelagert werden. In einem solchen Fall geben Sie die Gerätedatei der Platte nach dem Gerät an, für das Sie Journaling aktivieren wollen. Theoretisch ist es auch möglich, Journaling auf bereits existierenden Dateisystemen durch das Werkzeug tunefs zu aktivieren. Machen Sie aber in jedem Fall ein Backup Ihrer Daten, bevor Sie versuchen, ein existierendes Dateisystem zu ändern. gjournal wird zwar den Vorgang abbrechen, wenn es das Journal nicht erzeugen kann, allerdings schützt Sie dies nicht vor Datenverlust durch einen fehlerhaften Einsatz von tunefs. Es ist möglich, Journale auch für die Bootplatte eines &os;-System zu verwenden. Lesen Sie bitte den Artikel Implementing UFS Journaling on a Desktop PC, wenn Sie an einer derartigen Konfiguration interessiert sind.