19.4. RAID

19.4.1. Software-RAID

19.4.1.1. Concatenated-Disk (CCD) konfigurieren

Original von Christopher Shumway. Überarbeitet von Jim Brown.

Die wichtigsten Faktoren bei der Auswahl von Massenspeichern sind Geschwindigkeit, Zuverlässigkeit und Preis. Selten findet sich eine ausgewogene Mischung aller drei Faktoren. Schnelle und zuverlässige Massenspeicher sind für gewöhnlich teuer. Um die Kosten zu senken, muss entweder an der Geschwindigkeit oder an der Zuverlässigkeit gespart werden.

Das unten beschriebene System sollte vor allem preiswert sein. Der nächst wichtige Faktor war die Geschwindigkeit gefolgt von der Zuverlässigkeit. Die Geschwindigkeit war nicht so wichtig, da über das Netzwerk auf das System zugegriffen wird. Da alle Daten schon auf CD-Rs gesichert sind, war die Zuverlässigkeit, obwohl wichtig, ebenfalls nicht von entscheidender Bedeutung.

Die Bewertung der einzelnen Faktoren ist der erste Schritt bei der Auswahl von Massenspeichern. Wenn Sie vor allem ein schnelles und zuverlässiges Medium benötigen und der Preis nicht wichtig ist, werden Sie ein anderes System als das hier beschriebene zusammenstellen.

19.4.1.1.1. Installation der Hardware

Neben der IDE-Systemplatte besteht das System aus drei Western Digital IDE-Festplatten mit 5400 RPM und einer Kapazität von je 30 GB. Insgesamt stehen also 90 GB Speicherplatz zur Verfügung. Im Idealfall sollte jede Festplatte an einen eigenen Controller angeschlossen werden. Um Kosten zu sparen, wurde bei diesem System darauf verzichtet und an jeden IDE-Controller eine Master- und eine Slave-Platte angeschlossen.

Beim Reboot wurde das BIOS so konfiguriert, dass es die angeschlossenen Platten automatisch erkennt und FreeBSD erkannte die Platten ebenfalls:

ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33
ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33
ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33
ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33

Anmerkung: Wenn FreeBSD die Platten nicht erkennt, überprüfen Sie, ob die Jumper korrekt konfiguriert sind. Die meisten IDE-Festplatten verfügen über einen “Cable Select”-Jumper. Die Master- und Slave-Platten werden mit einem anderen Jumper konfiguriert. Bestimmen Sie den richtigen Jumper mithilfe der Dokumentation Ihrer Festplatte.

Als nächstes sollten Sie überlegen, auf welche Art der Speicher zur Verfügung gestellt werden soll. Schauen Sie sich dazu vinum(4) (Kapitel 22) und ccd(4) an. Im hier beschriebenen System wird ccd(4) eingesetzt.

19.4.1.1.2. Konfiguration von CCD

Mit ccd(4) können mehrere gleiche Platten zu einem logischen Dateisystem zusammengefasst werden. Um ccd(4) zu benutzen, muss der Kernel mit der entsprechenden Unterstützung übersetzt werden. Ergänzen Sie die Kernelkonfiguration um die nachstehende Zeile. Anschließend müssen Sie den Kernel neu übersetzen und installieren.

pseudo-device   ccd

Alternativ kann ccd(4) auch als Kernelmodul geladen werden.

Um ccd(4) zu benutzen, müssen die Laufwerke zuerst mit einem Label versehen werden. Die Label werden mit bsdlabel(8) erstellt:

bsdlabel -w ad1 auto
bsdlabel -w ad2 auto
bsdlabel -w ad3 auto

Damit wurden die Label ad1c, ad2c und ad3c erstellt, die jeweils das gesamte Laufwerk umfassen.

Im nächsten Schritt muss der Typ des Labels geändert werden. Die Labels können Sie mit bsdlabel(8) editieren:

bsdlabel -e ad1
bsdlabel -e ad2
bsdlabel -e ad3

Für jedes Label startet dies den durch EDITOR gegebenen Editor, typischerweise vi(1).

Ein unverändertes Label sieht zum Beispiel wie folgt aus:

8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  c: 60074784        0    unused        0     0     0   # (Cyl.    0 - 59597)

Erstellen Sie eine e-Partition für ccd(4). Dazu können Sie normalerweise die Zeile der c-Partition kopieren, allerdings muss fstype auf 4.2BSD gesetzt werden. Das Ergebnis sollte wie folgt aussehen:

8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  c: 60074784        0    unused        0     0     0   # (Cyl.    0 - 59597)
  e: 60074784        0    4.2BSD        0     0     0   # (Cyl.    0 - 59597)

19.4.1.1.3. Erstellen des Dateisystems

Nachdem alle Platten ein Label haben, kann das ccd(4)-RAID aufgebaut werden. Dies geschieht mit ccdconfig(8):

ccdconfig ccd0(1) 32(2) 0(3) /dev/ad1e(4) /dev/ad2e /dev/ad3e

Die folgende Aufstellung erklärt die verwendeten Kommandozeilenargumente:

(1)
Das erste Argument gibt das zu konfigurierende Gerät, hier /dev/ccd0c, an. Die Angabe von /dev/ ist dabei optional.
(2)
Der Interleave für das Dateisystem. Der Interleave definiert die Größe eines Streifens in Blöcken, die normal 512 Bytes groß sind. Ein Interleave von 32 ist demnach 16384 Bytes groß.
(3)
Weitere Argumente für ccdconfig(8). Wenn Sie spiegeln wollen, können Sie das hier angeben. Die gezeigte Konfiguration verwendet keine Spiegel, sodass der Wert 0 angegeben ist.
(4)
Das letzte Argument gibt die Geräte des Plattenverbundes an. Benutzen Sie für jedes Gerät den kompletten Pfadnamen.

Nach Abschluß von ccdconfig(8) ist der Plattenverbund konfiguriert und es können Dateisysteme auf dem Plattenverbund angelegt werden. Das Anlegen von Dateisystemen wird in der Hilfeseite newfs(8) beschrieben. Für das Beispiel genügt der folgende Befehl:

newfs /dev/ccd0c

19.4.1.1.4. Automatisierung

Damit ccd(4) beim Start automatisch aktiviert wird, ist die Datei /etc/ccd.conf mit dem folgenden Kommando zu erstellen:

ccdconfig -g > /etc/ccd.conf

Wenn /etc/ccd.conf existiert, wird beim Reboot ccdconfig -C von /etc/rc aufgerufen. Damit wird ccd(4) eingerichtet und die darauf befindlichen Dateisysteme können angehängt werden.

Anmerkung: Wenn Sie in den Single-User Modus booten, müssen Sie den Verbund erst konfigurieren, bevor Sie darauf befindliche Dateisysteme anhängen können:

ccdconfig -C

In /etc/fstab ist noch ein Eintrag für das auf dem Verbund befindliche Dateisystem zu erstellen, damit dieses beim Start des Systems immer angehängt wird:

/dev/ccd0c              /media       ufs     rw      2       2

19.4.1.2. Der Vinum-Volume-Manager

Der Vinum Volume Manager ist ein Block-Gerätetreiber, der virtuelle Platten zur Verfügung stellt. Er trennt die Verbindung zwischen der Festplatte und dem zugehörigen Block-Gerät auf. Im Gegensatz zur konventionellen Aufteilung einer Platte in Slices lassen sich dadurch Daten flexibler, leistungsfähiger und zuverlässiger verwalten. vinum(4) stellt RAID-0, RAID-1 und RAID-5 sowohl einzeln wie auch in Kombination zur Verfügung.

Mehr Informationen über vinum(4) erhalten Sie in Kapitel 22.

19.4.2. Hardware-RAID

FreeBSD unterstützt eine Reihe von RAID-Controllern. Diese Geräte verwalten einen Plattenverbund; zusätzliche Software wird nicht benötigt.

Der Controller steuert mithilfe eines BIOS auf der Karte die Plattenoperationen. Wie ein RAID System eingerichtet wird, sei kurz am Beispiel des Promise IDE RAID-Controllers gezeigt. Nachdem die Karte eingebaut ist und der Rechner neu gestartet wurde, erscheint eine Eingabeaufforderung. Wenn Sie den Anweisungen auf dem Bildschirm folgen, gelangen Sie in eine Maske, in der Sie mit den vorhandenen Festplatten ein RAID-System aufbauen können. FreeBSD behandelt das RAID-System wie eine einzelne Festplatte.

19.4.3. Wiederherstellen eines ATA-RAID-1 Verbunds

Mit FreeBSD können Sie eine ausgefallene Platte in einem RAID-Verbund während des Betriebs auswechseln, vorausgesetzt Sie bemerken den Ausfall vor einem Neustart.

Einen Ausfall erkennen Sie, wenn in der Datei /var/log/messages oder in der Ausgabe von dmesg(8) Meldungen wie die folgenden auftauchen:

ad6 on monster1 suffered a hard error.
ad6: READ command timeout tag=0 serv=0 - resetting
ad6: trying fallback to PIO mode
ata3: resetting devices .. done
ad6: hard error reading fsbn 1116119 of 0-7 (ad6 bn 1116119; cn 1107 tn 4 sn 11)\\
status=59 error=40
ar0: WARNING - mirror lost

Überprüfen Sie den RAID-Verbund mit atacontrol(8):

# atacontrol list
ATA channel 0:
	Master:      no device present
	Slave:   acd0 <HL-DT-ST CD-ROM GCR-8520B/1.00> ATA/ATAPI rev 0

ATA channel 1:
	Master:      no device present
	Slave:       no device present

ATA channel 2:
	Master:  ad4 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
	Slave:       no device present

ATA channel 3:
	Master:  ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
	Slave:       no device present

# atacontrol status ar0
ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADED
  1. Damit Sie die Platte ausbauen können, muss zuerst der ATA-Channel der ausgefallenen Platte aus dem Verbund entfernt werden:

    # atacontrol detach ata3
    
  2. Ersetzen Sie dann die Platte.

  3. Nun aktivieren Sie den ATA-Channel wieder:

    # atacontrol attach ata3
    Master:  ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
    Slave:   no device present
    
  4. Nehmen Sie die neue Platte in den Verbund auf:

    # atacontrol addspare ar0 ad6
    
  5. Stellen Sie die Organisation des Verbunds wieder her:

    # atacontrol rebuild ar0
    
  6. Sie können den Fortschritt des Prozesses durch folgende Befehle kontrollieren:

    # dmesg | tail -10
    [output removed]
    ad6: removed from configuration
    ad6: deleted from ar0 disk1
    ad6: inserted into ar0 disk1 as spare
    
    # atacontrol status ar0
    ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 0% completed
    
  7. Warten Sie bis die Wiederherstellung beendet ist.

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <[email protected]>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <[email protected]>.