TomRhodesWritten by GEOM: Modulares Framework für PlattentransformationSynopsisGEOMGEOM Disk FrameworkGEOMDieses Kapitel behandelt die Nutzung 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 GEOMGEOM 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.TomRhodesWritten by MurrayStokelyRAID0 - StripingGEOMStripingStriping (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 stellt Unterstützung für
Software-RAID0 zur Verfügung,
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, daß 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 noch
durch die Verwendung mehrerer Controller
zusätzlich gesteigert werden.Jedes Laufwerk in einem RAID0-Stripe
muß die gleiche Größe haben, da
I/O-Anforderungen für das Lesen und Schreiben
abwechselnd auf mehrere Laufwerke parallel erfolgen.Disk Striping IllustrationErzeugen eines Stripe von unformatierten ATA-PlattenLaden Sie das geom_stripe
-Modul:&prompt.root; kldload geom_stripeStellen Sie sicher, daß ein geeigneter
Mount-Punkt Existiert. Falls dieser Datenträger
eine Root-Partition werden soll, dann nutzen Sie
zeitweise einen anderen Mount-Punkt wie z.B.
/mnt:&prompt.root; mkdir /mntBestimmen Sie die Gerätenamen derjenigen
Platten, welche gestriped werden sollen, und erzeugen
Sie ein neues Stripe-Gerät. um zum Beispiel zwei
unbenutzte und unpartitionierte
ATA-Platten zu stripen Im Falle von
/dev/ad2 und
/dev/ad3:&prompt.root; gstripe label -v st0 /dev/ad2 /dev/ad3Schreiben 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/st0Dieser 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/st0aViele Zahlen rauschen nun über Ihren Bildschirm und
nach ein paar Sekunden wird der Prozess abgeschlossen sein.
Der Datenträger wurde erzeugt und ist bereit, um
gemountet zu werden.Um das erzeugte Stripe manuell zu mounten:&prompt.root; mount /dev/stripe/st0a /mntUm das erzeugte Dateisystem automatisch während des
Startvorgangs zu mounten, müssen Sie die
Datenträger-Information in die Datei
/etc/fstab schreiben:&prompt.root; echo "/dev/stripe/st0a /mnt ufs rw 2 2" \>> /etc/fstabDas geom_stripe-Modul muß ebenfalls
automatisch beim Systemstart geladen werden durch Hinzufügung
folgender Zeile zu /boot/loader.conf:&prompt.root; echo 'geom_stripe_load="YES"' >> /boot/loader.confRAID1 - SpiegelungGEOMDisk Mirroring
T
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, daß PlatteB die PlatteA dupliziert.
Oder PlatteC+D duplizieren PlatteA+A. Der wichtigste Aspekt ist,
daß 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, daß ihr System zwei Platten
mit identischer Größe aufweist. In dieser Übung
gehen wir davon aus, daß es direkt zugängliche
(&man.da.4;) SCSI-Platten sind.Beginnen Sie mit der Installation von &os; auf die erste
Platte mit nur 2 Partitionen. Eine soll eine Swap-Partition
sein mit der doppelten Größe des RAM
und der gesamte verbelibende Rest soll für Root-Dateisystem
(/) genutzt werden.
Es ist möglich separate Platten für andere Mount-Punkte
zu verwenden, dies wird jedoch den Schwierigkeitgrad
verzehnfachen durch das händische Abändern der
Einstellungen von &man.bsdlabel.8; und &man.fdisk.8;.Starten Sie neu und warten Sie ab, bis das System
vollständig initalisiert ist. Sobald der Prozess
abgeschlossen ist loggen Sie sich bitte als Nutzer
root ein.Erzeugen Sie das Gerät /dev/mirror/gm
und verbinden Sie es mit /dev/da1:&prompt.root; gmirror label -vnb round-robin gm0 /dev/da1Das System sollte folgendermassen anworten:
Metadata value stored on /dev/da1.
Done.Initialisieren Sie GEOM, dies wird durch das
/boot/kernel/geom_mirror.ko-Kernelmodul
laden:&prompt.root; gmirror loadDieser Befehl sollte den gm0
Geräte-Knotenpunkt (device node) unter dem Verzeichnis
/dev/mirror
erzeugt haben.Instalieren Sie den typischen fdisk-Label
und Boot-Code auf dem neuen Gerät
gm0:&prompt.root; fdisk -vBI /dev/mirror/gm0Installieren Sie nun die typische bsdlabel
-Information:&prompt.root; bsdlabel -wB /dev/mirror/gm0s1Falls mehrere Slices und Partitionen existieren, ist es
erforderlich die Flags für die zwei obigen Befehle
abzuändern. Sie müssen die exakte Slice- und
Partitionsgröße der anderen Platte wiedergeben.Nutzen Sie das Dienstprogramm &man.newfs.8;, um ein
UFS-Dateisystem auf dem Geräte-Knotenpunkt
gm0s1a zu erzeugen:&prompt.root; newfs -U /dev/mirror/gm0s1aDies sollte das System dazu veranlasst haben einige
Informationen und ein Bündel von Zahlen auszugeben.
Das ist gut so. Suchen Sie den Bildschirm nach etwaigen
Fehlermeldungen ab und hängen Sie das Gerät
zum Mount-Punkt /mnt
ein:&prompt.root; mount /dev/mirror/gm0s1a /mntVerschieben Sie nun alle Daten von der Startplatte
zu diesem neuen Dateisystem. Dieses Beispiel nutzt die
Befehle &man.dump.8; und &man.restore.8;, allerdings
würde auch &man.dd.1; in diesem Szenario
funktionieren.&prompt.root; dump -L -0 -f- / |(cd /mnt && restore -r -v -f-)Dies muß für jedes Dateisystem
durchgeführt werden. Verschieben Sie einfach
das geeignete Dateisystem auf den richtigen Platz
durch Nutzung des obigen Befehls.Bearbeiten Sie nun die duplizierte Datei /mnt/etc/fstab
und entfernen oder auskommentieren Sie die Swap-Datei
Es sollte angemerkt werden, daß das
Auskommentieren der Swap-Datei in der
fstab höchstwahrscheinlich
eine andere Art nach sich zieht, wie Swap-Platz zur
Verfügung gestellt wird. Lesen Sie hierzu bitte
für
weitergehende Informationen.. Ändern Sie die anderen Dateisystem-Informationen,
um die neue Platte zu nutzen, wie im folgenden Beispiel
gezeigt:# Device Mountpoint FStype Options Dump Pass#
#/dev/da0s2b none swap sw 0 0
/dev/mirror/gm0s1a / ufs rw 1 1Erzeugen Sie nun eine neue
boot.config-Datei auf der laufenden
wie auf der neuen Root-Partition. Diese Datei wird dem
BIOS des Systems helfen
vom richtigen Laufwerk zu starten:&prompt.root; echo "1:da(1,a)/boot/loader" > /boot.config&prompt.root; echo "1:da(1,a)/boot/loader" > /mnt/boot.configWir haben es auf beiden Root-Partitionen erzeugt,
um sicherzustellen, daß der Startvorgang richtig
abläuft. Falls aus irgendeinem Grunde das System
nicht von der neuen Root-Partition lesen kann ist eine
Ausweichmöglichkeit vorhanden.Vergewissern Sie sich, daß das Modul
geom_mirror.ko beim Starten geladen
wird durch Ausführung dieses Befehls:&prompt.root; echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.confStarten Sie das System neu:&prompt.root; shutdown -r nowWenn alles glatt gegangen ist, sollte das System
vom Gerät gm0s1a gestartet
sein und eine Eingabeaufforderung sollte auf Sie warten.
Falls etwas schief gegangen ist, lesen Sie bitte den
folgenden Abschnitt Fehlerbehebung. Fügen Sie nun
das Laufwerk da0 dem
Gerät gm0 hinzu.&prompt.root; gmirror configure -a gm0
&prompt.root; gmirror insert gm0 /dev/da0Das Flag weist &man.gmirror.8;
an automatische Synchronisation zu nutzen; d.h. alle
Schreibvorgänge werden automatisch gespiegelt.
Die Manualpage erklärt, wie Platten ausgetauscht
bzw. wiederhergestelt werden. Sie nutzt allerdings
data anstelle von
gm0 in unserem Beispiel.FehlerbehebungDas System weigert sich zu startenFalls das System startet und eine Eingabeaufforderung
erscheint ähnlich wie: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 &man.loader.8;.
Laden Sie nun das Kernelmodul händisch:OK? load geom_mirror
OK? bootFalls dies funktioniert wurde das Modul aus welchen
Gründen auch immer nicht richtig geladen. Setzen Sie:options GEOM_MIRRORin die Konfigurationsdatei des Kernels und führen
Sie einen Rebuild und eine erneute Installation durch.
Dies sollte das Problem beseitigen.GEOM Gate NetzwerkgeräteGEOM 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 muß 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/da0s4dSie wird allen Hosts innerhalb des privaten Netzwerkes
Zugriff auf das Dateisystem auf der Partition
da0s4d erlauben.Um dieses Gerät zu exportieren stellen Sie bitte
sicher, daß es momentan nicht gemounted ist und
starten Sie den &man.ggated.8; Server-Daemon:&prompt.root; ggatedUm 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 /mntVon nun an kann auf das Gerät durch den Mount-Punkt
/mnt zugegriffen
werden.Es sollte darauf hingewiesen werden, daß 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 sicher mit dem Befehl &man.umount.8;
ausgehängt werden genauso wie jedes andere Laufwerk.Das Labeln von LaufwerkenGEOMDisk LabelsWä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
Geräte wirft einige Fragen auf, zum Beispiel was
passiert, falls ein neues Laufwerk mittels
USB hinzugefügt wird?
Es ist sehr wahrscheinlich, daß 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,
daß 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.Eine bessere Lösung ist verfügbar. Durch
Verwendung des glabel-Dienstprogramms
kann ein Administrator oder Nutzer 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 ü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 muß 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 BeispieleEs gibt zwei Arten von Labeln: generische Label und
Dateisystem-Label. Der Unterschied zwischen beiden ist
die automatische Erkennung bei dauerhaften Labeln und
die Tatsache, daß dieser Typ von Labeln persistent
über Neustarts hinweg ist. Diese Label erhalten ein
spezielles Verzeichnis in /dev, welches auf Basis der
Dateisystem-Art benannt wird.
UFS2-Dateisystem-Label werden zum
Beispiel im Verzeichnis
/dev/ufs2
angelegt.Ein generischer Label verschwindet mit dem
nächsten Systemstart. Diese Label werden im
Verzeichnis /dev/label
erzeugt und sind ideal für Testzwecke.Permanente Label können mit den Dienstprogrammen
tunefs oder newfs
auf dem Dateisystem erzeugt werden. 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/da3Wenn 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
class="directory">/dev/ufs2 vorhanden
sein, der zu /etc/fstab
hinzugefügt wird:/dev/ufs2/home /home ufs rw 2 2Das Dateisystem darf nicht gemountet sein beim
Versuch tunefs auszuführen.Nun kann das Dateisystem wie üblich gemountet
werden:&prompt.root; mount /homeDer folgende Befehl kann genutzt werden, um das Label
zu beseitigen:&prompt.root; glabel destroy homeVon 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.