Freigeben über


Konfigurieren von Software-RAID unter Linux

Es ist ein gängiges Szenario, software RAID auf virtuellen Linux-Computern in Azure zu verwenden, um mehrere angefügte Datenträger als einzelnes RAID-Gerät darzustellen. In der Regel kann dies verwendet werden, um die Leistung zu verbessern und einen verbesserten Durchsatz im Vergleich zu nur einem einzigen Datenträger zu ermöglichen.

Anfügen von Datenträgern

Zum Konfigurieren eines RAID-Geräts sind mindestens zwei leere Datenträger erforderlich. Der Hauptgrund für die Erstellung eines RAID-Geräts ist die Verbesserung der Leistung Ihrer Datenträger-E/A. Basierend auf Ihren E/A-Anforderungen können Sie Datenträger anfügen, die in unserem Standardspeicher gespeichert sind, mit bis zu 500 I/O-Operationen pro Sekunde pro Datenträger oder in unserem Premiumspeicher mit bis zu 5000 I/O-Operationen pro Sekunde pro Datenträger. In diesem Artikel wird nicht ausführlich beschrieben, wie Sie Datenträger auf einem virtuellen Linux-Computer bereitstellen und anfügen. Ausführliche Anweisungen zum Anfügen eines leeren Datenträgers an einen virtuellen Linux-Computer auf Azure finden Sie im Microsoft Azure-Artikel Anfügen eines Datenträgers.

Von großer Bedeutung

Mischen Sie keine Datenträger mit unterschiedlichen Größen. Dies würde dazu führen, dass die Leistung des Raidsets auf die der langsamsten Festplatte beschränkt ist.

Installieren des Mdadm-Hilfsprogramms

  • Ubuntu

    sudo apt-get update
    sudo apt-get install mdadm
    
  • CentOS & Oracle Linux

    sudo yum install mdadm
    
  • SLES und openSUSE

    zypper install mdadm
    

Erstellen der Datenträgerpartitionen

In diesem Beispiel erstellen wir eine einzelne Datenträgerpartition auf /dev/sdc. Die neue Datenträgerpartition wird als "/dev/sdc1" bezeichnet.

  1. Beginnen Sie fdisk mit dem Erstellen von Partitionen

    sudo fdisk /dev/sdc
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel with disk identifier 0xa34cb70c.
    Changes will remain in memory only, until you decide to write them.
    After that, of course, the previous content won't be recoverable.
    
    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
                    switch off the mode (command 'c') and change display units to
                    sectors (command 'u').
    
  2. Drücken Sie 'n' an der Eingabeaufforderung, um eine nEW-Partition zu erstellen:

    Command (m for help): n
    
  3. Drücken Sie als Nächstes 'p', um eine primäre Partition zu erstellen:

    Command action
            e   extended
            p   primary partition (1-4)
    
  4. Drücken Sie "1", um die Partitionsnummer 1 auszuwählen:

    Partition number (1-4): 1
    
  5. Wählen Sie den Ausgangspunkt der neuen Partition aus, oder drücken <enter> Sie, um die Standardeinstellung zu übernehmen, um die Partition am Anfang des freien Speicherplatzes auf dem Laufwerk zu platzieren:

    First cylinder (1-1305, default 1):
    Using default value 1
    
  6. Wählen Sie die Größe der Partition aus, z. B. "+10G", um eine 10 Gigabyte-Partition zu erstellen. Oder drücken Sie <enter>, um eine einzelne Partition zu erstellen, die das gesamte Laufwerk umfasst:

    Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): 
    Using default value 1305
    
  7. Ändern Sie als Nächstes die ID und type der Partition von der Standard-ID "83" (Linux) in die ID "fd" (Linux raid auto):

    Command (m for help): t
    Selected partition 1
    Hex code (type L to list codes): fd
    
  8. Schreiben Sie schließlich die Partitionstabelle auf das Laufwerk, und beenden Sie fdisk:

    Command (m for help): w
    The partition table has been altered!
    

Erstellen des RAID-Arrays

  1. Im folgenden Beispiel werden drei Partitionen mit RAID-Ebene 0 (Stripe) auf drei separaten Datenträgern (sdc1, sdd1, sde1) verteilt. Nach dem Ausführen dieses Befehls wird ein neues RAID-Gerät namens "/dev/md127 " erstellt. Beachten Sie außerdem, dass, wenn diese Datenträger zuvor Teil eines anderen, nicht mehr funktionsfähigen RAID-Arrays waren, es möglicherweise erforderlich ist, den --force-Parameter dem mdadm-Befehl hinzuzufügen.

    sudo mdadm --create /dev/md127 --level 0 --raid-devices 3 \
        /dev/sdc1 /dev/sdd1 /dev/sde1
    
  2. Erstellen des Dateisystems auf dem neuen RAID-Gerät

    CentOS, Oracle Linux, SLES 12, openSUSE und Ubuntu

    sudo mkfs -t ext4 /dev/md127
    

    SLES 11

    sudo mkfs -t ext3 /dev/md127
    

    SLES 11 – boot.md aktivieren und mdadm.conf erstellen

    sudo -i chkconfig --add boot.md
    sudo echo 'DEVICE /dev/sd*[0-9]' >> /etc/mdadm.conf
    

    Hinweis

    Ein Neustart kann erforderlich sein, nachdem diese Änderungen auf SUSE-Systemen vorgenommen wurden. Dieser Schritt ist für SLES 12 nicht erforderlich.

Hinzufügen des neuen Dateisystems zu /etc/fstab

Von großer Bedeutung

Eine unsachgemäße Bearbeitung der Datei "/etc/fstab" kann zu einem nicht bootfähigen System führen. Wenn Sie sich nicht sicher sind, sollten Sie in der Dokumentation nachsehen, wie diese Datei richtig bearbeitet wird. Außerdem wird empfohlen, ein Backup der Datei /etc/fstab zu erstellen, bevor Sie sie bearbeiten.

  1. Erstellen Sie den gewünschten Bereitstellungspunkt für Ihr neues Dateisystem, z. B.:

    sudo mkdir /data
    
  2. Beim Bearbeiten von /etc/fstab sollte die UUID verwendet werden, um auf das Dateisystem und nicht auf den Gerätenamen zu verweisen. Verwenden Sie das blkid Hilfsprogramm, um die UUID für das neue Dateisystem zu ermitteln:

    sudo /sbin/blkid
    ...........
    /dev/md127: UUID="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" TYPE="ext4"
    
  3. Öffnen Sie /etc/fstab in einem Text-Editor, und fügen Sie einen Eintrag für das neue Dateisystem hinzu, z. B.:

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults  0  2
    

    Oder auf SLES 11:

    /dev/disk/by-uuid/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext3  defaults  0  2
    

    Speichern und schließen Sie dann /etc/fstab.

  4. Testen Sie, dass der Eintrag /etc/fstab korrekt ist:

    sudo mount -a
    

    Wenn dieser Befehl zu einer Fehlermeldung führt, überprüfen Sie die Syntax in der Datei "/etc/fstab".

    Führen Sie als Nächstes den Befehl mount aus, um sicherzustellen, dass das Dateisystem eingehängt ist.

    mount
    .................
    /dev/md127 on /data type ext4 (rw)
    
  5. (Optional) Sicherheitsmodus-Startparameter

    fstab-Konfiguration

    Viele Distributionen enthalten entweder die nobootwait oder nofail Mount-Parameter, die zur Datei /etc/fstab hinzugefügt werden können. Diese Parameter ermöglichen Fehler beim Mounten eines bestimmten Dateisystems und ermöglichen es dem Linux-System, weiterhin zu booten, auch wenn es nicht in der Lage ist, das RAID-Dateisystem ordnungsgemäß zu mounten. Weitere Informationen zu diesen Parametern finden Sie in der Dokumentation Ihrer Verteilung.

    Beispiel (Ubuntu):

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,nobootwait  0  2
    

    Linux-Startparameter

    Zusätzlich zu den oben genannten Parametern kann der Kernelparameter "bootdegraded=true" dem System das Starten ermöglichen, auch wenn das RAID als beschädigt oder herabgestuft wahrgenommen wird, z. B. wenn ein Datenlaufwerk versehentlich vom virtuellen Computer entfernt wird. Standardmäßig kann dies auch zu einem nicht startbaren System führen.

    Informationen zum ordnungsgemäßen Bearbeiten von Kernelparametern finden Sie in der Dokumentation Ihrer Verteilung. In vielen Distributionen (CentOS, Oracle Linux, SLES 11) können diese Parameter der Datei "/boot/grub/menu.lst" manuell hinzugefügt werden. Auf Ubuntu kann dieser Parameter der GRUB_CMDLINE_LINUX_DEFAULT Variablen unter "/etc/default/grub" hinzugefügt werden.

TRIM/UNMAP-Unterstützung

Einige Linux-Kernels unterstützen TRIM/UNMAP-Vorgänge, um ungenutzte Blöcke auf dem Datenträger zu verwerfen. Diese Vorgänge sind in erster Linie im Standardspeicher nützlich, um Azure darüber zu informieren, dass gelöschte Seiten nicht mehr gültig sind und verworfen werden können. Das Verwerfen von Seiten kann Kosten sparen, wenn Sie große Dateien erstellen und diese dann löschen.

Hinweis

RAID gibt möglicherweise keine Verwerfen-Befehle aus, wenn die Chunk-Größe des Arrays kleiner als der Standardwert (512 KB) ist. Dies liegt daran, dass die Unmap-Granularität auf dem Host ebenfalls 512 KB beträgt. Wenn Sie die Blockgröße des Arrays --chunk= über den Parameter "mdadm" geändert haben, werden TRIM/unmap-Anforderungen möglicherweise vom Kernel ignoriert.

Es gibt zwei Methoden, TRIM-Unterstützung auf Ihrem virtuellen Linux-Computer zu aktivieren. Wie üblich, konsultieren Sie Ihre Distribution für den empfohlenen Ansatz.

  • Verwenden Sie die Option discard zum Einbinden in /etc/fstab, zum Beispiel:

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,discard  0  2
    
  • In einigen Fällen kann die option discard Leistungsauswirkungen haben. Alternativ können Sie den Befehl fstrim manuell über die Befehlszeile ausführen oder ihn „crontab“ hinzufügen, um eine regelmäßige Ausführung zu erzielen:

    Ubuntu

    # sudo apt-get install util-linux
    # sudo fstrim /data
    

    RHEL/CentOS

    # sudo yum install util-linux
    # sudo fstrim /data