Good to Know Database

Ubuntu 11.10: Software RAID konfigurieren


1. Einleitung

Mit Hilfe von RAID (Redundant Array of Independent Disks) werden mehrere Festplatten beziehungsweise Partitionen zu einer virtuellen Einheit zusammengefasst. Dadurch können Sie einerseits größere Partitionen erzeugen als auf eine Festplatte passen würden und andererseits auch zusätzliche Sicherheits- und/oder Geschwindigkeitsvorteile nutzen.

Im folgenden Tutorial möchte ich Ihnen zeigen, wie Sie Festplatten ohne einen speziellen RAID-Controller als RAID0-, RAID1- oder RAID5-Verbund zusammenfassen können.

2. Festplatten vorbereiten

Bevor Sie eine Festplatte in einen RAID-Verbund aufnehmen können, müssen Sie eine Partition auf der HDD erstellen und deren Partition-ID auf 0xfd (Linux raid autodetect) ändern.

Dazu können Sie zum Beispiel fdisk verwenden.

georg@ubuntu1110:~$ sudo fdisk /dev/sdb

Befehl (m für Hilfe): n
Befehl  Aktion
   e      Erweiterte
   p      Primäre Partition (1-4)
p
Partitionsnummer (1-4, Vorgabe: 1): 1
Erster Sektor (2048-2097151, Vorgabe: 2048):
Benutze den Standardwert 2048
Last Sektor, +Sektoren or +size{K,M,G} (2048-2097151, Vorgabe: 2097151):
Benutze den Standardwert 2097151

Befehl (m für Hilfe): t
Partition 1 ausgewählt
Hex code (L um eine Liste anzuzeigen): fd
Der Dateisystemtyp der Partition 1 ist nun fd (Linux raid autodetect)

Befehl (m für Hilfe): p

Platte /dev/sdb: 1073 MByte, 1073741824 Byte
255 Köpfe, 63 Sektoren/Spur, 130 Zylinder, zusammen 2097152 Sektoren
Einheiten = Sektoren von 1 × 512 = 512 Bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x949c2269

   Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/dev/sdb1            2048     2097151     1047552   fd  Linux raid autodetect

Befehl (m für Hilfe): w
Die Partitionstabelle wurde verändert!

Rufe ioctl() um Partitionstabelle neu einzulesen.
Synchronisiere Platten.

3. mdadm installieren

Zum Anlegen eines RAID-Verbundes wird das Programm mdadm benötigt. Dieses können Sie wie folgt nachinstallieren.

georg@ubuntu1110:~$ sudo apt-get install mdadm

4. RAID0

RAID0 ist eigentlich kein richtiges RAID da hier die Daten nicht Redundant gespeichert werden und beim Ausfall einer Festplatte alle Daten auf dem Array unwiederbringlich verloren sind. Der Vorteil von RAID0 ist ein höherer Datendurchsatz im Vergleich zu einer einzelnen Festplatte oder zu anderen RAID-Levels. Dies wird dadurch erreicht, dass die Daten auf allen Festplatten in gleich großen Blöcken verteilt werden. Die Gesamtkapazität eines RAID0-Verbundes errechnet sich anhand der Festplattengröße multipliziert mit der Anzahl der Festplatten.

4.1. RAID0-Verbund einrichten

Nachdem Sie mindestens zwei gleich große Partition vorbereitet haben, können Sie mit dem folgenden Befehl einen RAID0-Verbund erstellen.

georg@ubuntu1110:~$ sudo mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

In diesem Fall wird der Gerätenamen /dev/md0 verwendet, welcher für den ersten RAID-Verbund vorgesehen ist. Sollten Sie bereits einen RAID-Verbund benutzen, müssen Sie einen anderen Gerätenamen (zum Beispiel /dev/md1) verwenden.

Alternativ zu dem genannten Befehl können Sie auch die kürzere Schreibform verwenden.

georg@ubuntu1110:~$ sudo mdadm -C /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdc1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Mit der Option --level beziehungsweise -l geben Sie an, dass Sie RAID0 verwenden wollen. Anschließend wird mit --raid-devices oder -n die Anzahl der Partitionen für das Array festgelegt. Zum Schluss folgen noch die einzelnen Partitionen für das Array.

Bevor Sie das Array mounten und benutzen können, müssen Sie noch ein Dateisystem auf dem RAID-Device erzeugen.

georg@ubuntu1110:~$ sudo mkfs -t ext3 /dev/md0
mke2fs 1.41.14 (22-Dec-2010)
Dateisystem-Label=
OS-Typ: Linux
Blockgröße=4096 (log=2)
Fragmentgröße=4096 (log=2)
Stride=128 Blöcke, Stripebreite=256 Blöcke
130816 Inodes, 523264 Blöcke
26163 Blöcke (5.00%) reserviert für den Superuser
Erster Datenblock=0
Maximale Dateisystem-Blöcke=536870912
16 Blockgruppen
32768 Blöcke pro Gruppe, 32768 Fragmente pro Gruppe
8176 Inodes pro Gruppe
Superblock-Sicherungskopien gespeichert in den Blöcken:
        32768, 98304, 163840, 229376, 294912

Schreibe Inode-Tabellen: erledigt
Erstelle Journal (8192 Blöcke): erledigt
Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt

Das Dateisystem wird automatisch nach jeweils 30 Einhäng-Vorgängen bzw.
alle 180 Tage überprüft, je nachdem, was zuerst eintritt. Dies kann durch
tune2fs -c oder -i geändert werden.

Anschließend können Sie das Array mounten.

georg@ubuntu1110:~$ sudo mount /dev/md0 /mnt

4.2. RAID0-Verbund auflösen

Wenn Sie einen RAID0-Verbund wieder auflösen wollen, müssen Sie zuerst das Array mit dem folgenden Befehl deaktivieren.

georg@ubuntu1110:~$ sudo mdadm --stop /dev/md0
mdadm: stopped /dev/md0

Danach sollten Sie noch den Superblock der einzelnen Partitionen löschen.

georg@ubuntu1110:~$ sudo mdadm --zero-superblock /dev/sd[bc]1

5. RAID1

Im Gegensatz zu RAID0 werden hier die Daten nicht auf den einzelnen Festplatten im Array verteilt sondern auf allen Festplatten gespeichert. Dadurch haben Sie nur den Datendurchsatz von einer Festplatte aber sollte eine Festplatte ausfallen, sind die Daten weiterhin verfügbar. Für diesen Grad der Sicherheit benötigen Sie mindestens zwei gleich große Festplatten und können effektiv nur die Kapazität einer Festplatte benutzen. Des Weiteren können Sie noch eine oder mehrere zusätzliche Festplatten dem Verbund zuordnen welche bei einem Festplattenausfall automatisch den Platz der defekten Festplatte einnehmen und solange nicht benutzt werden. Diese zusätzliche(n) Festplatte(n) bezeichnet man als Hot-Spare-Laufwerk(e).

5.1. RAID1-Verbund einrichten

Bevor Sie einen RAID1-Verbund mit dem folgenden Befehl erstellen können, müssen Sie wie im Abschnitt Festplatten vorbereiten beschrieben, die einzelnen Festplatten partitionieren und die Partition-ID auf 0xfd setzen.

georg@ubuntu1110:~$ sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Die verwendeten Optionen kennen Sie bereits von der Konfiguration eines RAID0-Verbundes. Beachten Sie aber, dass hier als Level eine 1 angegeben werden muss.

Alternativ können Sie auch wieder die kürzere Schreibform verwenden.

georg@ubuntu1110:~$ sudo mdadm -C /dev/md0 -l 1 -n 2 /dev/sdb1 /dev/sdc1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Bisher wurden nur zwei Festplatten für den RAID1-Verbund verwendet. Sollten Sie dem Verbund auch gleich eine Festplatte als Hot-Spare-Laufwerk zuordnen wollen, müssen Sie diese beim Aufruf von mdadm mit angeben.

georg@ubuntu1110:~$ sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 --spare-devices=1 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Die Kurzform sieht wie folgt aus.

georg@ubuntu1110:~$ sudo mdadm -C /dev/md0 -l 1 -n 2 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Wie Sie sehen, wurde hier die Option --spare-devices beziehungsweise die Kurzform -x hinzugefügt. Mit dieser Option wird die Anzahl der Hot-Spare-Laufwerke angegeben. Die Gerätedateien der Hot-Spare-Laufwerke werden anschließend am Ende des Befehls angegeben.

Nachdem Sie den RAID1-Verbund erstellt haben, müssen Sie noch das Dateisystem anlegen.

georg@ubuntu1110:~$ sudo mkfs -t ext3 /dev/md0
mke2fs 1.41.14 (22-Dec-2010)
Dateisystem-Label=
OS-Typ: Linux
Blockgröße=4096 (log=2)
Fragmentgröße=4096 (log=2)
Stride=0 Blöcke, Stripebreite=0 Blöcke
65536 Inodes, 261885 Blöcke
13094 Blöcke (5.00%) reserviert für den Superuser
Erster Datenblock=0
Maximale Dateisystem-Blöcke=268435456
8 Blockgruppen
32768 Blöcke pro Gruppe, 32768 Fragmente pro Gruppe
8192 Inodes pro Gruppe
Superblock-Sicherungskopien gespeichert in den Blöcken:
        32768, 98304, 163840, 229376

Schreibe Inode-Tabellen: erledigt
Erstelle Journal (4096 Blöcke): erledigt
Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt

Das Dateisystem wird automatisch nach jeweils 22 Einhäng-Vorgängen bzw.
alle 180 Tage überprüft, je nachdem, was zuerst eintritt. Dies kann durch
tune2fs -c oder -i geändert werden.

Anschließend können Sie das Array mounten.

georg@ubuntu1110:~$ sudo mount /dev/md0 /mnt

5.2. Hot-Spare-Laufwerk zum RAID1-Verbund hinzufügen

Sollten Sie den RAID1-Verbund ohne Hot-Spare-Laufwerk erstellt haben, können Sie mit dem folgenden Befehl nachträglich ein Hot-Spare-Laufwerk hinzufügen.

georg@ubuntu1110:~$ sudo mdadm /dev/md0 --add /dev/sdd1
mdadm: added /dev/sdd1

5.3. HDD aus dem RAID1-Verbund entfernen

Sollten Sie eine Festplatte (zum Beispiel das Hot-Spare-Laufwerk) wieder aus dem RAID1-Verbund entfernen wollen, müssen Sie diese Festplatte zuerst als fehlerhaft deklarieren.

georg@ubuntu1110:~$ sudo mdadm /dev/md0 --set-faulty /dev/sdd1
mdadm: set /dev/sdd1 faulty in /dev/md0

Danach wird die Festplatte mit dem folgenden Befehl aus dem Verbund entfernt.

georg@ubuntu1110:~$ sudo mdadm /dev/md0 -r /dev/sdd1
mdadm: hot removed /dev/sdd1 from /dev/md0

Jetzt sollten Sie noch den Superblock der Festplatte löschen.

georg@ubuntu1110:~$ sudo mdadm --zero-superblock /dev/sdd1

5.4. RAID1-Verbund auflösen

Wollen Sie den ganzen RAID1-Verbund auflösen, müssen Sie das Array mit dem folgenden Befehl deaktivieren.

georg@ubuntu1110:~$ sudo mdadm --stop /dev/md0
mdadm: stopped /dev/md0

Nachdem Sie das Array deaktiviert haben, sollten Sie noch den Superblock der einzelnen Partitionen löschen.

georg@ubuntu1110:~$ sudo mdadm --zero-superblock /dev/sd[bc]1

6. RAID5

Bei RAID5 werden die Daten und die Paritätsinformationen auf allen Festplatten verteilt. Das heißt, es gibt nicht wie bei RAID4 eine dedizierte Festplatte für die Paritätsinformationen. Neben der Datensicherheit beim Ausfall von maximal einer Festplatte bietet RAID5 auch einen höheren Datendurchsatz als man mit einer einzelnen Festplatte oder mit RAID1 erziehlen kann. Für einen RAID5-Verbund benötigen Sie mindestens drei Festplatten mit gleicher Größe. Der nutzbare Speicherplatz errechnet sich aus (Anzahl der Festplatten - 1) x Festplattenkapazität. Wie bei RAID1 können Sie auch hier ein oder mehrere Hot-Spare-Laufwerk(e) hinzufügen.

6.1. RAID5-Verbund einrichten

Bevor Sie einen RAID5-Verbund mit dem folgenden Befehl erstellen können, müssen Sie wie im Abschnitt Festplatten vorbereiten beschrieben, die einzelnen Festplatten partitionieren und die Partition-ID auf 0xfd setzen.

georg@ubuntu1110:~$ sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Die verwendeten Optionen kennen Sie bereits von den vorhergehenden Abschnitten. Beachten Sie aber, dass hier als Level eine 5 angegeben werden muss.

Alternativ können Sie auch wieder die Kurzform verwenden.

georg@ubuntu1110:~$ sudo mdadm -C /dev/md0 -l 5 -n 3 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Wenn Sie dem Verbund auch gleich ein Hot-Spare-Laufwerk zuordnen wollen, müssen Sie dies wie folgt angeben.

georg@ubuntu1110:~$ sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Die Kurzform sieht wie folgt aus.

georg@ubuntu1110:~$ sudo mdadm -C /dev/md0 -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Nachdem Sie den RAID5-Verbund erstellt haben, müssen Sie noch das Dateisystem anlegen.

georg@ubuntu1110:~$ sudo mkfs -t ext3 /dev/md0
mke2fs 1.41.14 (22-Dec-2010)
Dateisystem-Label=
OS-Typ: Linux
Blockgröße=4096 (log=2)
Fragmentgröße=4096 (log=2)
Stride=128 Blöcke, Stripebreite=256 Blöcke
131072 Inodes, 523520 Blöcke
26176 Blöcke (5.00%) reserviert für den Superuser
Erster Datenblock=0
Maximale Dateisystem-Blöcke=536870912
16 Blockgruppen
32768 Blöcke pro Gruppe, 32768 Fragmente pro Gruppe
8192 Inodes pro Gruppe
Superblock-Sicherungskopien gespeichert in den Blöcken:
        32768, 98304, 163840, 229376, 294912

Schreibe Inode-Tabellen: erledigt
Erstelle Journal (8192 Blöcke): erledigt
Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt

Das Dateisystem wird automatisch nach jeweils 28 Einhäng-Vorgängen bzw.
alle 180 Tage überprüft, je nachdem, was zuerst eintritt. Dies kann durch
tune2fs -c oder -i geändert werden.

Anschließend können Sie das Array mounten.

georg@ubuntu1110:~$ sudo mount /dev/md0 /mnt

6.2. Hot-Spare-Laufwerk zum RAID5-Verbund hinzufügen

Sollten Sie den RAID5-Verbund ohne Hot-Spare-Laufwerk erstellt haben, können Sie wie bereits beim RAID1-Abschnitt beschrieben mit dem folgenden Befehl nachträglich ein Hot-Spare-Laufwerk hinzufügen.

georg@ubuntu1110:~$ sudo mdadm /dev/md0 --add /dev/sde1
mdadm: added /dev/sde1

6.3. HDD aus dem RAID5-Verbund entfernen

Das entfernen einer Festplatte aus dem RAID5-Verbund funktioniert ebenfalls wie bereits im RAID1-Abschnitt beschrieben mit den folgenden Befehlen.

georg@ubuntu1110:~$ sudo mdadm /dev/md0 --set-faulty /dev/sde1
mdadm: set /dev/sde1 faulty in /dev/md0
georg@ubuntu1110:~$ sudo mdadm /dev/md0 -r /dev/sde1
mdadm: hot removed /dev/sde1 from /dev/md0
georg@ubuntu1110:~$ sudo mdadm --zero-superblock /dev/sde1

6.4. RAID5-Verbund auflösen

Auch die folgenden Befehle kennen Sie bereits aus dem RAID1-Abschnitt.

georg@ubuntu1110:~$ sudo mdadm --stop /dev/md0
mdadm: stopped /dev/md0
georg@ubuntu1110:~$ sudo mdadm --zero-superblock /dev/sd[bcd]1

7. RAID-Informationen anzeigen

Wenn Sie einen RAID-Verbund neu angelegt haben, dauert es einige Zeit, bis Sie das Array mit dem vollen Datendurchsatz benutzen können. Das liegt daran, dass im Hintergrund die Laufwerke zum ersten Mal gespiegelt und gegebenenfalls auch die Prüfsummen zum ersten Mal berechnet werden. Wenn Sie den aktuellen Status des RAID-Verbundes abfragen wollen, stehen Ihnen mehrere Möglichkeiten zur Verfügung.

Mit dem folgenden Befehl können Sie zum Beispiel jederzeit den Status des RAID-Verbundes überprüfen.

georg@ubuntu1110:~$ cat /proc/mdstat
Personalities : [raid0] [linear] [multipath] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid5 sdd1[4] sde1[3](S) sdc1[1] sdb1[0]
      2094080 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
      [=======>.............]  recovery = 39.8% (417672/1047040) finish=0.6min speed=16706K/sec

unused devices: <none>

Wollen Sie die Ausgabe zum Beispiel alle 5 Sekunden aktualisiert angezeigt haben, verwenden Sie den folgenden Befehl.

georg@ubuntu1110:~$ watch -n 5 cat /proc/mdstat

Der Befehl mdadm mit der Option --detail zeigt neben dem aktuellen Status noch zusätzliche Informationen zum RAID-Verbund an.

georg@ubuntu1110:~$ sudo mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sat Oct 22 13:18:46 2011
     Raid Level : raid5
     Array Size : 2094080 (2045.34 MiB 2144.34 MB)
  Used Dev Size : 1047040 (1022.67 MiB 1072.17 MB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Sat Oct 22 13:19:59 2011
          State : clean
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 512K

           Name : ubuntu1110:0  (local to host ubuntu1110)
           UUID : 860f31b9:1e2b1c94:aa594494:ff4a3430
         Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       4       8       49        2      active sync   /dev/sdd1

       3       8       65        -      spare   /dev/sde1

8. Weiterführende Tutorials

Ubuntu 11.10: /dev/md0 wird nach einem Neustart zu /dev/md127


Dieser Eintrag wurde am 22.10.2011 erstellt und zuletzt am 24.01.2016 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_34_1444.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer