Wie man RAID-Arrays mit mdadm unter Ubuntu 22.04 erstellt

Einführung

Das Dienstprogramm mdadm kann verwendet werden, um Speicherarrays mit den Software-RAID-Funktionen von Linux zu erstellen und zu verwalten. Administratoren haben große Flexibilität bei der Koordination ihrer einzelnen Speichergeräte und bei der Erstellung logischer Speichergeräte, die eine höhere Leistung oder Redundanz aufweisen.

In dieser Anleitung werden verschiedene RAID-Konfigurationen durchgeführt, die mit einem Ubuntu 22.04 Server eingerichtet werden können.

Voraussetzungen

Um den Schritten in dieser Anleitung folgen zu können, benötigen Sie:

  • A non-root user with sudo privileges on an Ubuntu 22.04 server. To learn how to set up an account with these privileges, follow our Ubuntu 22.04 initial server setup guide.
  • A basic understanding of RAID terminology and concepts. To learn more about RAID and what RAID level is right for you, read our introduction to RAID article.
  • Mehrere nicht formatierte Speichergeräte auf Ihrem Server. Die Beispiele in diesem Tutorial zeigen, wie verschiedene Arten von Arrays auf dem Server konfiguriert werden können. Daher benötigen Sie einige Laufwerke, um diese zu konfigurieren.
  • Je nach Array-Typ werden zwei bis vier Speichergeräte benötigt. Diese Laufwerke müssen vor dem Befolgen dieser Anleitung nicht formatiert werden.

Info: Aufgrund der Ineffizienz von RAID-Setups auf virtuellen privaten Servern empfehlen wir nicht, ein RAID-Setup auf DigitalOcean-Droplets bereitzustellen. Die Effizienz der Replikation von Festplatten im Rechenzentrum macht die Vorteile eines RAID-Setups im Vergleich zu einer Einrichtung auf Bare-Metal-Hardware vernachlässigbar. Dieses Tutorial soll als Referenz für ein herkömmliches RAID-Setup dienen.

Zurücksetzen vorhandener RAID-Geräte (optional)

Sie können diesen Abschnitt überspringen, wenn Sie noch keine Arrays eingerichtet haben. Diese Anleitung wird verschiedene RAID-Level vorstellen. Wenn Sie jedem RAID-Level für Ihre Geräte folgen und abschließen möchten, möchten Sie wahrscheinlich Ihre Speichergeräte nach jedem Abschnitt wiederverwenden. Dieser spezielle Abschnitt Zurücksetzen vorhandener RAID-Geräte kann dazu verwendet werden, Ihre Komponentenspeichergeräte zurückzusetzen, bevor Sie ein neues RAID-Level testen.

Warnung: Dieser Vorgang zerstört das Array vollständig und alle darauf geschriebenen Daten. Stellen Sie sicher, dass Sie am richtigen Array arbeiten und dass Sie alle Daten, die Sie behalten möchten, vor dem Zerstören des Arrays kopiert haben.

Beginnen Sie damit, die aktiven Arrays in der Datei /proc/mdstat zu finden:

  1. cat /proc/mdstat
Output
Personalities : [raid0] [linear] [multipath] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid0 sdc[1] sdd[0] 209584128 blocks super 1.2 512k chunks unused devices: <none>

Dann trennen Sie das Array vom Dateisystem ab:

  1. sudo umount /dev/md0

Stoppen und entfernen Sie nun das Array:

  1. sudo mdadm --stop /dev/md0

Finden Sie die Geräte, die verwendet wurden, um das Array zu erstellen, mit dem folgenden Befehl:

Warnung: Beachten Sie, dass sich die Namen wie /dev/sd* jedes Mal ändern können, wenn Sie neu starten. Überprüfen Sie sie jedes Mal, um sicherzustellen, dass Sie an den richtigen Geräten arbeiten.

  1. lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Output
NAME SIZE FSTYPE TYPE MOUNTPOINT sda 100G linux_raid_member disk sdb 100G linux_raid_member disk sdc 100G disk sdd 100G disk vda 25G disk ├─vda1 24.9G ext4 part / ├─vda14 4M part └─vda15 106M vfat part /boot/efi vdb 466K iso9660 disk

Nachdem Sie die Geräte entdeckt haben, die zum Erstellen eines Arrays verwendet wurden, setzen Sie deren Superblock zurück, der Metadaten für das RAID-Setup enthält. Durch das Nullsetzen werden die RAID-Metadaten entfernt und auf normal zurückgesetzt:

  1. sudo mdadm --zero-superblock /dev/sda
  2. sudo mdadm --zero-superblock /dev/sdb

Es wird empfohlen, auch alle persistenten Verweise auf das Array zu entfernen. Bearbeiten Sie die Datei /etc/fstab und kommentieren Sie den Verweis auf Ihr Array aus oder entfernen Sie ihn. Sie können dies tun, indem Sie ein Hashtag-Symbol # am Anfang der Zeile einfügen, dies geht mit nano oder Ihrem bevorzugten Texteditor:

  1. sudo nano /etc/fstab
/etc/fstab
. . .
# /dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0

Kommentieren Sie außerdem die Array-Definition in der Datei /etc/mdadm/mdadm.conf aus oder entfernen Sie sie:

  1. sudo nano /etc/mdadm/mdadm.conf
/etc/mdadm/mdadm.conf
. . .
# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=7261fb9c:976d0d97:30bc63ce:85e76e91

Aktualisieren Sie schließlich erneut das initramfs, damit der Frühstartprozess nicht versucht, ein nicht verfügbares Array online zu bringen:

  1. sudo update-initramfs -u

Von hier aus sollten Sie bereit sein, die Speichergeräte einzeln oder als Komponenten eines anderen Arrays wiederzuverwenden.

Erstellen eines RAID 0-Arrays

Das RAID 0-Array funktioniert, indem Daten in Teile aufgeteilt und über die verfügbaren Laufwerke gestreift werden. Dies bedeutet, dass jedes Laufwerk einen Teil der Daten enthält und dass beim Abrufen von Informationen auf mehrere Laufwerke verwiesen wird.

  • Anforderungen: Mindestens 2 Speichergeräte.
  • Hauptvorteil: Leistung in Bezug auf Lese-/Schreibgeschwindigkeit und Kapazität.
  • Dinge, die beachtet werden sollten: Stellen Sie sicher, dass Sie funktionierende Backups haben. Ein Ausfall eines einzigen Geräts zerstört alle Daten im Array.

Identifizierung der Komponentengeräte

Um zu beginnen, suchen Sie die Kennungen für die Rohdatenträger, die Sie verwenden werden:

  1. lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Output
NAME SIZE FSTYPE TYPE MOUNTPOINT sda 100G disk sdb 100G disk vda 25G disk ├─vda1 24.9G ext4 part / ├─vda14 4M part └─vda15 106M vfat part /boot/efi vdb 466K iso9660 disk

In diesem Beispiel haben Sie zwei Datenträger ohne Dateisystem, jeweils 100 GB groß. Diese Geräte wurden für diese Sitzung mit den Kennungen /dev/sda und /dev/sdb versehen und werden die Rohkomponenten sein, die zum Erstellen des Arrays verwendet werden.

Erstellen des Arrays

Um ein RAID 0-Array mit diesen Komponenten zu erstellen, geben Sie sie in den Befehl mdadm --create ein. Sie müssen den Namen des Geräts angeben, das Sie erstellen möchten, die RAID-Stufe und die Anzahl der Geräte. In diesem Beispiel geben Sie den Gerätenamen /dev/md0 ein und fügen die beiden Datenträger hinzu, die das Array bilden sollen:

  1. sudo mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sda /dev/sdb

Bestätigen Sie, dass das RAID erfolgreich erstellt wurde, indem Sie die Datei /proc/mdstat überprüfen:

  1. cat /proc/mdstat
Output
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid0 sdb[1] sda[0] 209584128 blocks super 1.2 512k chunks unused devices: <none>

Dieser Output zeigt, dass das Gerät /dev/md0 im RAID 0-Format unter Verwendung der Geräte /dev/sda und /dev/sdb erstellt wurde.

Erstellen und Einbinden des Dateisystems

Als Nächstes erstellen Sie ein Dateisystem auf dem Array:

  1. sudo mkfs.ext4 -F /dev/md0

Dann erstellen Sie einen Einhängepunkt, um das neue Dateisystem anzuschließen:

  1. sudo mkdir -p /mnt/md0

Sie können das Dateisystem mit dem folgenden Befehl einhängen:

  1. sudo mount /dev/md0 /mnt/md0

Anschließend überprüfen Sie, ob der neue Speicherplatz verfügbar ist:

  1. df -h -x devtmpfs -x tmpfs
Output
Filesystem Size Used Avail Use% Mounted on /dev/vda1 25G 1.4G 23G 6% / /dev/vda15 105M 3.4M 102M 4% /boot/efi /dev/md0 196G 61M 186G 1% /mnt/md0

Das neue Dateisystem ist jetzt eingehängt und zugänglich.

Speichern des Array-Layouts

Um sicherzustellen, dass das Array automatisch beim Start neu zusammengebaut wird, müssen Sie die Datei /etc/mdadm/mdadm.conf anpassen. Sie können das aktive Array automatisch scannen und die Datei mit dem folgenden Befehl ergänzen:

  1. sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Anschließend können Sie das initramfs oder das initiale RAM-Dateisystem aktualisieren, damit das Array während des frühen Startvorgangs verfügbar ist:

  1. sudo update-initramfs -u

Fügen Sie die neuen Dateisystemeinbindungsoptionen zur Datei /etc/fstab hinzu, um das automatische Einhängen beim Start zu ermöglichen:

  1. echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

Ihr RAID 0-Array wird jetzt bei jedem Start automatisch zusammengebaut und eingehängt.

Sie haben jetzt Ihre RAID-Einrichtung abgeschlossen. Wenn Sie ein anderes RAID ausprobieren möchten, folgen Sie den Rücksetzanweisungen am Anfang dieses Tutorials, um mit der Erstellung eines neuen RAID-Array-Typs fortzufahren.

Erstellen eines RAID 1-Arrays

Der RAID 1-Array-Typ wird durch Spiegelung von Daten über alle verfügbaren Festplatten implementiert. Jede Festplatte in einem RAID 1-Array erhält eine vollständige Kopie der Daten, um Redundanz im Falle eines Geräteausfalls bereitzustellen.

  • Anforderungen: Mindestens 2 Speichergeräte.
  • Hauptvorteil: Redundanz zwischen zwei Speichergeräten.
  • Zu beachten: Da zwei Kopien der Daten beibehalten werden, steht nur die Hälfte des Festplattenspeichers zur Verfügung.

Identifizierung der Komponentengeräte

Um zu beginnen, finden Sie die Bezeichner für die Rohfestplatten, die Sie verwenden werden:

  1. lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Output
NAME SIZE FSTYPE TYPE MOUNTPOINT sda 100G disk sdb 100G disk vda 25G disk ├─vda1 24.9G ext4 part / ├─vda14 4M part └─vda15 106M vfat part /boot/efi vdb 466K iso9660 disk

In diesem Beispiel haben Sie zwei Festplatten ohne Dateisystem, jeweils 100G groß. Diese Geräte wurden für diese Sitzung die Bezeichner /dev/sda und /dev/sdb zugewiesen und werden die Rohkomponenten sein, die Sie für den Aufbau des Arrays verwenden.

Array erstellen

Um ein RAID 1-Array mit diesen Komponenten zu erstellen, übergeben Sie sie dem Befehl mdadm --create. Sie müssen den Gerätenamen angeben, den Sie erstellen möchten, die RAID-Stufe und die Anzahl der Geräte. In diesem Befehlsbeispiel benennen Sie das Gerät /dev/md0 und schließen die Laufwerke ein, die das Array bilden werden:

  1. sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb

Wenn die Komponentengeräte, die Sie verwenden, keine Partitionen mit der aktivierten boot-Flagge sind, erhalten Sie wahrscheinlich die folgende Warnung. Es ist sicher, mit y zu antworten und fortzufahren:

Output
mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 mdadm: size set to 104792064K Continue creating array? y

Das Tool mdadm beginnt mit der Spiegelung der Laufwerke. Dies kann einige Zeit dauern, aber das Array kann während dieser Zeit verwendet werden. Sie können den Fortschritt der Spiegelung über die Datei /proc/mdstat überwachen:

  1. cat /proc/mdstat
Output
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 sdb[1] sda[0] 104792064 blocks super 1.2 [2/2] [UU] [====>................] resync = 20.2% (21233216/104792064) finish=6.9min speed=199507K/sec unused devices: <none>

In der ersten hervorgehobenen Zeile wurde das Gerät /dev/md0 im RAID 1-Format unter Verwendung der Geräte /dev/sda und /dev/sdb erstellt. Die zweite hervorgehobene Zeile zeigt den Fortschritt der Spiegelung an. Sie können mit dem nächsten Schritt fortfahren, während dieser Prozess abgeschlossen wird.

Erstellen und Einbinden des Dateisystems

Als nächstes erstellen Sie ein Dateisystem auf dem Array:

  1. sudo mkfs.ext4 -F /dev/md0

Dann erstellen Sie einen Einhängepunkt, um das neue Dateisystem anzuschließen:

  1. sudo mkdir -p /mnt/md0

Sie können das Dateisystem einbinden, indem Sie Folgendes ausführen:

  1. sudo mount /dev/md0 /mnt/md0

Überprüfen Sie, ob der neue Speicherplatz verfügbar ist:

  1. df -h -x devtmpfs -x tmpfs
Output
Filesystem Size Used Avail Use% Mounted on /dev/vda1 25G 1.4G 23G 6% / /dev/vda15 105M 3.4M 102M 4% /boot/efi /dev/md0 99G 60M 94G 1% /mnt/md0

Die neue Dateisystem ist eingebunden und zugänglich.

Speichern des Array-Layouts

Um sicherzustellen, dass das Array beim Booten automatisch neu zusammengefügt wird, müssen Sie die Datei /etc/mdadm/mdadm.conf anpassen. Sie können das aktive Array automatisch scannen und die Datei mit folgendem Inhalt ergänzen:

  1. sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Anschließend können Sie das initramfs oder das initiale RAM-Dateisystem aktualisieren, damit das Array während des frühen Bootvorgangs verfügbar ist:

  1. sudo update-initramfs -u

Fügen Sie die neuen Dateisystem-Montageoptionen zur Datei /etc/fstab hinzu, um eine automatische Montage beim Booten zu ermöglichen:

  1. echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

Ihr RAID 1-Array wird nun bei jedem Bootvorgang automatisch zusammengefügt und eingebunden.

Sie sind jetzt mit der Einrichtung Ihres RAID abgeschlossen. Wenn Sie ein anderes RAID ausprobieren möchten, folgen Sie den Anweisungen am Anfang dieses Tutorials zum Zurücksetzen und erstellen Sie ein neues RAID-Array.

Erstellen eines RAID 5-Arrays

Der RAID 5-Array-Typ wird durch das Streifen von Daten über die verfügbaren Geräte implementiert. Ein Bestandteil jeder Streifen ist ein berechneter Paritätsblock. Wenn ein Gerät ausfällt, können der Paritätsblock und die verbleibenden Blöcke verwendet werden, um die fehlenden Daten zu berechnen. Das Gerät, das den Paritätsblock empfängt, wird so gedreht, dass jedes Gerät eine ausgewogene Menge an Paritätsinformationen hat.

  • Anforderungen: Mindestens 3 Speichergeräte.
  • Hauptvorteil: Redundanz mit mehr nutzbarer Kapazität.
  • Zu beachten: Während die Paritätsinformationen verteilt sind, wird die Kapazität eines Festplattenplatzes für die Parität verwendet. RAID 5 kann unter sehr schlechter Leistung leiden, wenn es sich in einem degradierten Zustand befindet.

Identifizierung der Komponentengeräte

Zum Starten finden Sie die Bezeichner für die Rohdisks, die Sie verwenden werden:

  1. lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Output
NAME SIZE FSTYPE TYPE MOUNTPOINT sda 100G disk sdb 100G disk sdc 100G disk vda 25G disk ├─vda1 24.9G ext4 part / ├─vda14 4M part └─vda15 106M vfat part /boot/efi vdb 466K iso9660 disk

Sie haben drei Festplatten ohne Dateisystem, jeweils 100 GB groß. Diese Geräte wurden für diese Sitzung mit den Bezeichnern /dev/sda, /dev/sdb und /dev/sdc versehen und werden die Rohkomponenten sein, die Sie für den Aufbau des Arrays verwenden.

Erstellen des Arrays

Um ein RAID 5-Array mit diesen Komponenten zu erstellen, geben Sie sie in den Befehl mdadm --create ein. Sie müssen den Gerätenamen, den Sie erstellen möchten, die RAID-Stufe und die Anzahl der Geräte angeben. In diesem Beispiel benennen Sie das Gerät /dev/md0 und fügen die Festplatten hinzu, die das Array erstellen werden:

  1. sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sda /dev/sdb /dev/sdc

Das Tool mdadm wird das Array konfigurieren. Es verwendet den Wiederherstellungsprozess, um das Array aus Leistungsgründen aufzubauen. Dies kann einige Zeit dauern, aber das Array kann während dieser Zeit verwendet werden. Sie können den Fortschritt des Spiegelns überprüfen, indem Sie die Datei /proc/mdstat überprüfen:

  1. cat /proc/mdstat
Output
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid5 sdc[3] sdb[1] sda[0] 209582080 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_] [>....................] recovery = 0.9% (957244/104791040) finish=18.0min speed=95724K/sec unused devices: <none>

In der ersten markierten Zeile wurde das Gerät /dev/md0 im RAID 5-Format mit den Geräten /dev/sda, /dev/sdb und /dev/sdc erstellt. Die zweite markierte Zeile zeigt den Fortschritt des Aufbaus an.

Warnung: Aufgrund der Art und Weise, wie mdadm RAID 5-Arrays erstellt, wird während des Aufbaus des Arrays die Anzahl der Ersatzgeräte im Array ungenau gemeldet. Das bedeutet, dass Sie warten müssen, bis das Array fertig montiert ist, bevor Sie die Datei /etc/mdadm/mdadm.conf aktualisieren. Wenn Sie die Konfigurationsdatei aktualisieren, während das Array noch aufgebaut wird, hat das System falsche Informationen zum Array-Zustand und kann es beim Booten nicht automatisch mit dem richtigen Namen zusammenfügen.

Sie können mit dem Guide fortfahren, während dieser Prozess abgeschlossen wird.

Erstellen und Einhängen des Dateisystems

Als nächstes erstellen Sie ein Dateisystem im Array:

  1. sudo mkfs.ext4 -F /dev/md0

Erstellen Sie einen Einhängepunkt, um das neue Dateisystem anzuhängen:

  1. sudo mkdir -p /mnt/md0

Sie können das Dateisystem mit dem folgenden Befehl einhängen:

  1. sudo mount /dev/md0 /mnt/md0

Überprüfen Sie, ob der neue Speicherplatz verfügbar ist:

  1. df -h -x devtmpfs -x tmpfs
Output
Filesystem Size Used Avail Use% Mounted on /dev/vda1 25G 1.4G 23G 6% / /dev/vda15 105M 3.4M 102M 4% /boot/efi /dev/md0 197G 60M 187G 1% /mnt/md0

Das neue Dateisystem ist eingehängt und zugänglich.

Speichern des Array-Layouts

Um sicherzustellen, dass das Array beim Booten automatisch neu zusammengesetzt wird, müssen Sie die Datei /etc/mdadm/mdadm.conf anpassen.

Warnung: Wie bereits erwähnt, überprüfen Sie vor der Anpassung der Konfiguration erneut, ob das Array fertig zusammengesetzt ist. Das Abschließen der folgenden Schritte, bevor das Array erstellt wird, verhindert, dass das System das Array beim Neustart korrekt zusammensetzt.

Sie können den Fortschritt des Spiegelungsprozesses überprüfen, indem Sie die Datei /proc/mdstat überprüfen:

  1. cat /proc/mdstat
Output
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] md0 : active raid5 sdc[3] sdb[1] sda[0] 209584128 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU] unused devices: <none>

Dieser Output zeigt an, dass der Wiederaufbau abgeschlossen ist. Nun können Sie das aktive Array automatisch durchsuchen und die Datei anhängen:

  1. sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Nachher können Sie das initramfs oder das initiale RAM-Dateisystem aktualisieren, sodass das Array während des frühen Startvorgangs verfügbar ist:

  1. sudo update-initramfs -u

Fügen Sie die neuen Dateisystem-Montageoptionen zur Datei /etc/fstab hinzu, um sie automatisch beim Booten zu mounten:

  1. echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

Ihr RAID 5-Array wird jetzt bei jedem Booten automatisch zusammengebaut und gemountet.

Sie sind nun mit der Einrichtung Ihres RAID fertig. Wenn Sie ein anderes RAID ausprobieren möchten, folgen Sie den Zurücksetzanweisungen am Anfang dieses Tutorials, um mit der Erstellung eines neuen RAID-Array-Typs fortzufahren.

Erstellen eines RAID 6-Arrays

Der RAID 6-Array-Typ wird durch das Streifen von Daten über die verfügbaren Geräte implementiert. Zwei Komponenten jeder Streifen werden als Paritätsblöcke berechnet. Wenn ein oder zwei Geräte ausfallen, können die Paritätsblöcke und die verbleibenden Blöcke verwendet werden, um die fehlenden Daten zu berechnen. Die Geräte, die die Paritätsblöcke erhalten, werden so gedreht, dass jedes Gerät eine ausgewogene Menge an Paritätsinformationen hat. Dies ähnelt einem RAID 5-Array, ermöglicht jedoch den Ausfall von zwei Laufwerken.

  • Anforderungen: Mindestens 4 Speichergeräte.
  • Hauptvorteil: Doppelte Redundanz mit mehr nutzbarer Kapazität.
  • Zu beachten: Während die Paritätsinformationen verteilt sind, werden zwei Festplattenkapazitäten für die Parität verwendet. RAID 6 kann unter sehr schlechter Leistung leiden, wenn es sich in einem degradierten Zustand befindet.

Identifizierung der Komponentengeräte

Um zu beginnen, finden Sie die Bezeichner für die Rohfestplatten, die Sie verwenden werden:

  1. lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Output
NAME SIZE FSTYPE TYPE MOUNTPOINT sda 100G disk sdb 100G disk sdc 100G disk sdd 100G disk vda 25G disk ├─vda1 24.9G ext4 part / ├─vda14 4M part └─vda15 106M vfat part /boot/efi vdb 466K iso9660 disk

In diesem Beispiel haben Sie vier Festplatten ohne Dateisystem, jeweils 100G groß. Diese Geräte wurden für diese Sitzung mit den Bezeichnern /dev/sda, /dev/sdb, /dev/sdc und /dev/sdd versehen und werden die Rohkomponenten sein, die zum Erstellen des Arrays verwendet werden.

Erstellen des Arrays

Um ein RAID 6-Array mit diesen Komponenten zu erstellen, geben Sie sie in den Befehl mdadm --create ein. Sie müssen den Namen des Geräts angeben, das Sie erstellen möchten, die RAID-Stufe und die Anzahl der Geräte. In diesem folgenden Befehlsbeispiel benennen Sie das Gerät /dev/md0 und fügen die Festplatten hinzu, die das Array bilden werden:

  1. sudo mdadm --create --verbose /dev/md0 --level=6 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

Das Tool mdadm wird beginnen, das Array zu konfigurieren. Es verwendet den Wiederherstellungsprozess, um das Array aus Leistungsgründen zu erstellen. Dies kann einige Zeit dauern, aber das Array kann während dieser Zeit verwendet werden. Sie können den Fortschritt der Spiegelung über die Datei /proc/mdstat überwachen:

  1. cat /proc/mdstat
Output
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid6 sdd[3] sdc[2] sdb[1] sda[0] 209584128 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU] [>....................] resync = 0.6% (668572/104792064) finish=10.3min speed=167143K/sec unused devices: <none>

In der ersten markierten Zeile wurde das Gerät /dev/md0 in der RAID-6-Konfiguration unter Verwendung der Geräte /dev/sda, /dev/sdb, /dev/sdc und /dev/sdd erstellt. Die zweite markierte Zeile zeigt den Fortschritt des Aufbaus an. Sie können den Leitfaden weiterverfolgen, während dieser Vorgang abgeschlossen wird.

Erstellen und Einhängen des Dateisystems

Als nächstes erstellen Sie ein Dateisystem im Array:

  1. sudo mkfs.ext4 -F /dev/md0

Erstellen Sie einen Einhängepunkt, um das neue Dateisystem anzuhängen:

  1. sudo mkdir -p /mnt/md0

Sie können das Dateisystem mit folgendem einhängen:

  1. sudo mount /dev/md0 /mnt/md0

Überprüfen Sie, ob der neue Speicherplatz verfügbar ist:

  1. df -h -x devtmpfs -x tmpfs
Output
Filesystem Size Used Avail Use% Mounted on /dev/vda1 25G 1.4G 23G 6% / /dev/vda15 105M 3.4M 102M 4% /boot/efi /dev/md0 197G 60M 187G 1% /mnt/md0

Das neue Dateisystem ist eingehängt und zugänglich.

Speichern des Array-Layouts

Um sicherzustellen, dass das Array beim Booten automatisch neu zusammengebaut wird, müssen Sie die Datei /etc/mdadm/mdadm.conf anpassen. Sie können das aktive Array automatisch scannen und die Datei anhängen, indem Sie Folgendes eingeben:

  1. sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Anschließend können Sie das initramfs oder das initiale RAM-Dateisystem aktualisieren, damit das Array während des frühen Bootvorgangs verfügbar ist:

  1. sudo update-initramfs -u

Fügen Sie die neuen Dateisystem-Einhängeoptionen zur Datei /etc/fstab hinzu, um sie beim Booten automatisch einzuhängen:

  1. echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

Ihr RAID 6-Array wird jetzt automatisch zusammengebaut und bei jedem Neustart eingehängt.

Sie sind nun mit der Einrichtung Ihres RAID fertig. Wenn Sie ein anderes RAID ausprobieren möchten, befolgen Sie die Rücksetzanweisungen am Anfang dieses Tutorials, um mit der Erstellung eines neuen RAID-Arrays fortzufahren.

Erstellen eines komplexen RAID 10-Arrays

Der RAID 10-Array-Typ wird traditionell durch die Erstellung eines gestreiften RAID 0-Arrays aus Sets von RAID 1-Arrays realisiert. Dieser verschachtelte Array-Typ bietet sowohl Redundanz als auch hohe Leistung, jedoch auf Kosten großer Mengen an Festplattenspeicher. Das Dienstprogramm mdadm hat seinen eigenen RAID 10-Typ, der die gleichen Vorteile mit erhöhter Flexibilität bietet. Er wird nicht durch das Verschachteln von Arrays erstellt, hat jedoch viele der gleichen Eigenschaften und Garantien. Sie werden hier den mdadm RAID 10 verwenden.

  • Anforderungen: Mindestens 3 Speichergeräte.
  • Hauptvorteil: Leistung und Redundanz.
  • Dinge, die zu beachten sind: Die Menge der Kapazitätsreduktion für den Array wird durch die Anzahl der zu speichernden Datenkopien definiert. Die Anzahl der Kopien, die mit mdadm-Stil RAID 10 gespeichert werden, ist konfigurierbar.

Standardmäßig werden zwei Kopien jedes Datenblocks in dem sogenannten nahe Layout gespeichert. Die möglichen Layouts, die festlegen, wie jeder Datenblock gespeichert wird, sind wie folgt:

  • nahe: Die Standardanordnung. Kopien jedes Abschnitts werden aufeinanderfolgend geschrieben, wenn gestreift wird, was bedeutet, dass die Kopien der Datenblöcke um denselben Teil mehrerer Festplatten herum geschrieben werden.
  • fern: Die erste und die nachfolgenden Kopien werden an verschiedenen Teilen der Speichergeräte im Array geschrieben. Zum Beispiel könnte der erste Abschnitt in der Nähe des Anfangs einer Festplatte geschrieben werden, während der zweite Abschnitt auf halber Strecke auf einer anderen Festplatte geschrieben würde. Dies kann einige Leseleistungssteigerungen für herkömmliche rotierende Festplatten bringen, jedoch auf Kosten der Schreibleistung.
  • versetzt: Jeder Streifen wird kopiert und um ein Laufwerk versetzt. Dies bedeutet, dass die Kopien voneinander versetzt sind, aber immer noch eng beieinander auf der Festplatte liegen. Dies hilft, übermäßiges Suchen während einiger Arbeitslasten zu minimieren.

Weitere Informationen zu diesen Layouts finden Sie im Abschnitt RAID10 dieser man-Seite:

  1. man 4 md

Sie können diese man-Seite auch online finden.

Identifizierung der Komponentengeräte

Um zu beginnen, finden Sie die Kennungen für die Rohfestplatten, die Sie verwenden werden:

  1. lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Output
NAME SIZE FSTYPE TYPE MOUNTPOINT sda 100G disk sdb 100G disk sdc 100G disk sdd 100G disk vda 25G disk ├─vda1 24.9G ext4 part / ├─vda14 4M part └─vda15 106M vfat part /boot/efi vdb 466K iso9660 disk

In diesem Beispiel haben Sie vier Festplatten ohne Dateisystem, jeweils 100 GB groß. Diese Geräte wurden für diese Sitzung mit den Bezeichnern /dev/sda, /dev/sdb, /dev/sdc und /dev/sdd versehen und werden die Rohkomponenten sein, die verwendet werden, um das Array zu erstellen.

Erstellen des Arrays

Um ein RAID 10-Array mit diesen Komponenten zu erstellen, geben Sie sie in den Befehl mdadm --create ein. Sie müssen den Gerätenamen angeben, den Sie erstellen möchten, die RAID-Ebene und die Anzahl der Geräte. In diesem folgenden Befehlsbeispiel benennen Sie das Gerät /dev/md0 und schließen die Festplatten ein, die das Array aufbauen werden:

Sie können zwei Kopien einrichten, indem Sie das Layout nicht angeben und die Kopiennummer:

  1. sudo mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

Wenn Sie ein anderes Layout verwenden oder die Anzahl der Kopien ändern möchten, müssen Sie die Option --layout= verwenden, die einen Layout- und Kopieridentifikator erfordert. Die Layouts sind n für near, f für far und o für Offset. Die Anzahl der zu speichernden Kopien wird anschließend angehängt.

Um beispielsweise ein Array zu erstellen, das drei Kopien im Offset-Layout hat, würde der Befehl folgendes einschließen:

  1. sudo mdadm --create --verbose /dev/md0 --level=10 --layout=o3 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

Das mdadm-Werkzeug wird beginnen, das Array zu konfigurieren. Es verwendet den Wiederherstellungsprozess, um das Array aus Leistungsgründen aufzubauen. Dies kann einige Zeit dauern, aber das Array kann währenddessen verwendet werden. Sie können den Fortschritt des Spiegelns überprüfen, indem Sie die Datei /proc/mdstat überprüfen:

  1. cat /proc/mdstat
Output
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] md0 : active raid10 sdd[3] sdc[2] sdb[1] sda[0] 209584128 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU] [===>.................] resync = 18.1% (37959424/209584128) finish=13.8min speed=206120K/sec unused devices: <none>

In der ersten markierten Zeile wurde das /dev/md0-Gerät in der RAID-10-Konfiguration unter Verwendung der Geräte /dev/sda, /dev/sdb, /dev/sdc und /dev/sdd erstellt. Der zweite markierte Bereich zeigt das Layout, das für dieses Beispiel verwendet wurde (zwei Kopien in der Nähe-Konfiguration). Der dritte markierte Bereich zeigt den Fortschritt beim Aufbau. Sie können den Leitfaden fortsetzen, während dieser Prozess abgeschlossen wird.

Erstellen und Einhängen des Dateisystems

Erstellen Sie als nächstes ein Dateisystem auf dem Array:

  1. sudo mkfs.ext4 -F /dev/md0

Erstellen Sie einen Einhängepunkt, um das neue Dateisystem anzuhängen:

  1. sudo mkdir -p /mnt/md0

Sie können das Dateisystem mit folgendem Befehl einhängen:

  1. sudo mount /dev/md0 /mnt/md0

Überprüfen Sie, ob der neue Speicherplatz verfügbar ist:

  1. df -h -x devtmpfs -x tmpfs
Output
Filesystem Size Used Avail Use% Mounted on /dev/vda1 25G 1.4G 23G 6% / /dev/vda15 105M 3.4M 102M 4% /boot/efi /dev/md0 197G 60M 187G 1% /mnt/md0

Das neue Dateisystem ist eingehängt und zugänglich.

Speichern des Array-Layouts

Um sicherzustellen, dass das Array beim Booten automatisch neu zusammengesetzt wird, müssen Sie die Datei /etc/mdadm/mdadm.conf anpassen. Sie können das aktive Array automatisch scannen und die Datei durch Ausführen des folgenden Befehls anhängen:

  1. sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Danach können Sie das initramfs oder das initiale RAM-Dateisystem aktualisieren, damit das Array während des frühen Bootvorgangs verfügbar ist:

  1. sudo update-initramfs -u

Fügen Sie die neuen Dateisystem-Montageoptionen zur Datei /etc/fstab hinzu, um eine automatische Montage beim Booten zu ermöglichen:

  1. echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

Ihr RAID 10-Array wird jetzt bei jedem Bootvorgang automatisch zusammengebaut und eingebunden.

Zusammenfassung

In diesem Leitfaden haben Sie gelernt, wie Sie verschiedene Arten von Arrays mit dem Linux-Tool mdadm erstellen können. RAID-Arrays bieten einige überzeugende Redundanz- und Leistungsoptimierungen gegenüber der Verwendung mehrerer einzelner Laufwerke.

Sobald Sie sich für den benötigten Array-Typ für Ihre Umgebung entschieden und das Gerät erstellt haben, können Sie lernen, wie Sie die tägliche Verwaltung mit mdadm durchführen. Unser Leitfaden zum Verwalten von RAID-Arrays mit mdadm unter Ubuntu kann Ihnen den Einstieg erleichtern.

Source:
https://www.digitalocean.com/community/tutorials/how-to-create-raid-arrays-with-mdadm-on-ubuntu-22-04