Einige Motherboards und Erweiterungskarten besitzen ein ROM, das dem Rechner erlaubt von einem RAID-Array zu booten. Nach dem Booten wird der Zugriff auf das RAID-Array durch die Software auf dem Prozessor des Rechners abgewickelt. Dieses „Hardware-unterstützte Software-RAID“ ist nicht abhängig von einem bestimmten Betriebssystem. Sie funktionieren bereits, noch bevor das Betriebssystem geladen wird.
Abhängig von der verwendeten Hardware werden mehrere Arten von RAID unterstützt. Eine vollständige Liste finden Sie in graid(8).
graid(8) benötigt das geom_raid.ko
Kernelmodul, welches beginnend mit FreeBSD 9.1 im
GENERIC
-Kernel enthalten ist. Bei Bedarf
kann es manuell mit graid load
geladen
werden.
Geräte mit Software-RAID haben oft ein Menü, das über eine bestimmte Tastenkombination beim Booten aufgerufen werden kann. Das Menü kann verwendet werden, um RAID-Arrays zu erstellen und zu löschen. Mit graid(8) können Arrays auch direkt von der Kommandozeile erstellt werden.
graid label
wird verwendet, um ein
neues Array zu erstellen. Das Motherboard in diesem Beispiel
besitzt einen Intel® Software-RAID
Chipsatz, so dass das Metadatenformat von Intel® angegeben
wird. Das neue Array bekommt den Namen (Label)
gm0
, verhält sich als Spiegel
(RAID1) und verwendet die Laufwerke
ada0
und
ada1
.
Bei der Erstellung des Arrays wird etwas Platz auf den Laufwerken überschrieben. Sichern Sie zuvor alle vorhandenen Daten!
#
graid label Intel gm0 RAID1 ada0 ada1
GEOM_RAID: Intel-a29ea104: Array Intel-a29ea104 created. GEOM_RAID: Intel-a29ea104: Disk ada0 state changed from NONE to ACTIVE. GEOM_RAID: Intel-a29ea104: Subdisk gm0:0-ada0 state changed from NONE to ACTIVE. GEOM_RAID: Intel-a29ea104: Disk ada1 state changed from NONE to ACTIVE. GEOM_RAID: Intel-a29ea104: Subdisk gm0:1-ada1 state changed from NONE to ACTIVE. GEOM_RAID: Intel-a29ea104: Array started. GEOM_RAID: Intel-a29ea104: Volume gm0 state changed from STARTING to OPTIMAL. Intel-a29ea104 created$ GEOM_RAID: Intel-a29ea104: Provider raid/r0 for volume gm0 created.
Eine Statusabfrage zeigt, dass der neue Spiegel einsatzbereit ist:
#
graid status
Name Status Components raid/r0 OPTIMAL ada0 (ACTIVE (ACTIVE)) ada1 (ACTIVE (ACTIVE))
Das Array-Gerät erscheint in
/dev/raid/
. Das erste Gerät heißt
r0
. Falls weitere Geräte vorhanden sind
heißen diese r1
, r2
und so weiter.
Das BIOS-Menü einiger Geräte erstellt
Arrays mit Sonderzeichen im Namen. Um Probleme mit diesen
Sonderzeichen zu vermeiden, werden einfache numerische Namen
wie r0
vergeben. Um das tatsächliche
Label anzuzeigen, wie gm0
im obigen
Beispiel, benutzen Sie sysctl(8):
#
sysctl kern.geom.raid.name_format=1
Einige Software-RAID Geräte unterstützen mehr als ein Volume pro Array. Volumes funktionieren wie Festplatten, dass heißt der Platz auf den Laufwerken kann auf unterschiedliche Weise geteilt und genutzt werden. Intels Software-RAID Geräte unterstützen beispielsweise zwei Volumes. In diesem Beispiel wird ein 40 GB Spiegel verwendet um das Betriebssystem zu speichern, gefolgt von einem 20 GB RAID0 (Stripe) Volume für die schnelle Speicherung von temporären Daten.
#
graid label -S 40G Intel gm0 RAID1 ada0 ada1
#
graid add -S 20G gm0 RAID0
Volumes erscheinen unter /dev/raid/
als zusätzliche Einträge
r
. Ein
Array mit Volumes wird als X
r0
und
r1
.
Lesen Sie graid(8) um die Anzahl der Volumes zu ermitteln, die von den verschiedenen Software-RAID Geräten unterstützt wird.
Unter bestimmten Umständen ist es möglich, ein bestehendes Laufwerk ohne Neuformatierung zu einem graid(8) Array zu konvertieren. Um Datenverlust bei der Konvertierung zu vermeiden, müssen die vorhandenen Laufwerke folgende Mindestanforderungen erfüllen:
Das Laufwerk muss mit MBR partitioniert werden. GPT oder andere Partitionierungsschemata funktionieren nicht, da durch graid(8) die Metadaten am Ende des Laufwerks überschieben und beschädigt werden.
Am Ende des Laufwerks muss genügend freier Platz zur Verfügung stehen, um die graid(8) Metadaten zu speichern. Die Metadaten variieren in der Größe, es werden jedoch mindestens 64 MB freier Speicherplatz empfohlen.
Wenn das Laufwerk diese Anforderungen erfüllt, erstellen Sie zuerst eine vollständige Sicherung. Erzeugen Sie dann einen Spiegel mit diesem einen Laufwerk:
#
graid label Intel gm0 RAID1 ada0 NONE
Die Metadaten von graid(8) werden in den ungenutzten Raum am Ende des Laufwerks geschrieben. Ein zweites Laufwerk kann nun in den Spiegel eingefügt werden:
#
graid insert raid/r0 ada1
Die Daten von dem ersten Laufwerk werden direkt auf das zweite Laufwerk kopiert. Der Spiegel wird im eingeschränkten Zustand laufen, bis der Kopiervorgang abgeschlossen ist.
Laufwerke in einem Array können für ausgefallene oder fehlende Laufwerke eingesetzt werden. Falls es keine ausgefallenen oder fehlenden Laufwerke gibt, wird das neue Laufwerk als Ersatz (Spare) verwendet.
Das Array in diesem Beispiel beginnt sofort damit, die Daten auf das neu hinzugefügte Laufwerk zu kopieren. Alle vorhandenen Daten auf dem neuen Laufwerk werden überschrieben.
#
graid insert raid/r0 ada1
GEOM_RAID: Intel-a29ea104: Disk ada1 state changed from NONE to ACTIVE. GEOM_RAID: Intel-a29ea104: Subdisk gm0:1-ada1 state changed from NONE to NEW. GEOM_RAID: Intel-a29ea104: Subdisk gm0:1-ada1 state changed from NEW to REBUILD. GEOM_RAID: Intel-a29ea104: Subdisk gm0:1-ada1 rebuild start at 0.
Einzelne Laufwerke können permanent aus dem Array entfernt werden. Die Metadaten werden dabei gelöscht:
#
graid remove raid/r0 ada1
GEOM_RAID: Intel-a29ea104: Disk ada1 state changed from ACTIVE to OFFLINE. GEOM_RAID: Intel-a29ea104: Subdisk gm0:1-[unknown] state changed from ACTIVE to NONE. GEOM_RAID: Intel-a29ea104: Volume gm0 state changed from OPTIMAL to DEGRADED.
Ein Array kann angehalten werden, ohne die Metadaten von den Laufwerken zu löschen. Das Array wird wieder anlaufen, wenn das System neu gestartet wird.
#
graid stop raid/r0
Der Status des Arrays kann jederzeit überprüft werden. Nachdem ein Laufwerk zum Array hinzugefügt wurde, werden die Daten vom ursprünglichen Laufwerk auf das neue Laufwerk kopiert:
#
graid status
Name Status Components raid/r0 DEGRADED ada0 (ACTIVE (ACTIVE)) ada1 (ACTIVE (REBUILD 28%))
Andere Arten von Arrays, wie RAID0
oder
CONCAT
, werden den Status eines
fehlgeschlagenen Laufwerks vielleicht nicht anzeigen. Um
diese teilweise ausgefallenen Arrays anzuzeigen, fügen Sie
-ga
hinzu:
#
graid status -ga
Name Status Components Intel-e2d07d9a BROKEN ada6 (ACTIVE (ACTIVE))
Arrays werden zerstört, indem alle Volumes gelöscht werden. Wenn das letzte Volume gelöscht wird, wird das Array gestoppt und die Metadaten von den Laufwerken entfernt:
#
graid delete raid/r0
Laufwerke können unerwartete graid(8) Metadaten enthalten, entweder aus früherer Nutzung oder aus Tests des Herstellers. graid(8) würde diese Metadaten erkennen und daraus ein Array erstellen, was den Zugriff auf die einzelnen Laufwerke beeinträchtigen würde. Um die unerwünschten Metadaten zu entfernen:
Booten Sie das System. Im Boot-Menü wählen Sie
2
für den Loader-Prompt. Geben Sie
dann folgendes ein:
OKset kern.geom.raid.enable=0
OKboot
Das System wird nun mit deaktiviertem graid(8) starten.
Sichern Sie alle Daten auf dem betroffenen Laufwerk.
Zur Abhilfe kann auch die Array-Erkennung von graid(8) deaktiviert werden, indem
kern.geom.raid.enable=0
in /boot/loader.conf
hinzugefügt
wird.
Um die graid(8) Metadaten von dem entsprechenden
Laufwerk zu entfernen, booten Sie vom FreeBSD
Installationsmedium und wählen Sie
Shell
aus. Benutzen Sie
status
, um den Namen des Arrays zu
bestimmten, typischerweise
raid/r0
:
#
graid status
Name Status Components raid/r0 OPTIMAL ada0 (ACTIVE (ACTIVE)) ada1 (ACTIVE (ACTIVE))
Löschen Sie das Volume:
#
graid delete raid/r0
Wiederholen Sie den Vorgang für jedes Volume. Nachdem das letzte Volume gelöscht wurde, wird das Volume zerstört.
Starten Sie das System neu und prüfen die
Vollständigkeit der Daten. Falls erforderlich, müssen die
Daten aus der Sicherung wiederhergestellt werden. Nachdem
die Metadaten entfernt wurden, kann auch der Eintrag
kern.geom.raid.enable=0
aus
/boot/loader.conf
entfernt
werden.
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>.