Linux/Software-RAID/Anlegen: Unterschied zwischen den Versionen
Zeile 85: | Zeile 85: | ||
==Neue Partition als RAID-Partition markieren:== | ==Neue Partition als RAID-Partition markieren:== | ||
# parted /dev/sda set 1 raid on | # parted /dev/sda set 1 raid on | ||
=Software-RAID anlegen= | =Software-RAID anlegen= |
Version vom 6. Juli 2020, 17:24 Uhr
Festplatten-Cache
- Bei einem Software-RAID ist es empfehlenswert den Schreib-Cache von Festplatten zu deaktivieren, um bei einem Stromausfall keinen Datenverlust zu erleiden.
- Ausnahme sind dabei SSDs mit integrierten Kondensatoren, die den Cache-Inhalt bei einem Stromausfall noch auf den Flash-Speicher schreiben (z.B. Intel DC S3510 Series SSDs).
Status Festplatten-Cache überprüfen
- Überprüfen, ob der Write-Cache einer Festplatte aktiviert oder deaktiviert ist. Hier bei der Festplatte sda.
# hdparm -i /dev/sda
- Ausgabe:
Model=INTEL SSDMCEAC060B3, FwRev=LLLi, SerialNo=CVLI303201QK060K Config={ Fixed } RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0 BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSec=16 CurrCHS=16383/16/63, CurSecs=16514064, LBA=yes, LBAsects=117231408 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120} PIO modes: pio0 pio3 pio4 DMA modes: mdma0 mdma1 mdma2 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 AdvancedPM=yes: unknown setting WriteCache=enabled Drive confirms to: unknown: ATA/ATAP-2,3,4,5,6,7
* signifies the current active mode
- WriteCache=enabled: Festplatten-Cache ist hier also zur Zeit aktiviert.
Festplatten-Cache deaktivieren
- Mit einem Editor die Konfigurationsdatei von hdparm unter /etc/hdparm.conf öffnen, z.B. mit vim.
- Dort in der Zeile #write_cache = off Auskommentierung aufheben und Änderung speichern.
# -W Disable/enable the IDE drive's write-caching feature write_cache = off
- Nach einem Systemneustart sieht das Ergebnis wie folgt aus:
# hdparm -i /dev/sda
- Ausgabe:
Model=INTEL SSDMCEAC060B3, FwRev=LLLi, SerialNo=CVLI303201QK060K Config={ Fixed } RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0 BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSec=16 CurrCHS=16383/16/63, CurSecs=16514064, LBA=yes, LBAsects=117231408 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120} PIO modes: pio0 pio3 pio4 DMA modes: mdma0 mdma1 mdma2 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 AdvancedPM=yes: unknown setting WriteCache=disabled Drive confirms to: unknown: ATA/ATAP-2,3,4,5,6,7
* signifies the current active mode
- Der Festplatten-Cache ist nun deaktiviert.
Partitionierung
- Zunächst müssen die Bezeichnungen der zu verwendenden Festplatten bekannt sein.
- Auf jeder Festplatte wird eine Partition erstellt, die (fast) den gesamten Platz der Platte einnimmt.
- Die Schritte müssen für jedes Laufwerk, das am RAID teilnehmen soll, mit der entsprechenden Bezeichnung vom eigenen System wiederholt werden:
Neue, leere Partitionstabelle auf dem Laufwerk erstellen.
Neuere PCs mit UEFI Bios:
# parted /dev/sda mklabel gpt
Ältere PCs mit altem Bios:
# parted /dev/sda mklabel msdos
Einzelne Partition erstellen:
# parted -a optimal -- /dev/sda mkpart primary 2048s -8192s
- Möchte man die gesamte Platte nutzen, gibt man statt "2048s -8192s" einfach "0% 100%" an.
- Über den Parameter -a optimal kümmert sich parted um weitere Anpassungen, falls nötig.
- Es ist auch möglich, die Laufwerke unpartitioniert zusammenzufassen.
- Dies birgt jedoch einige Nachteile.
- Zunächst verkompliziert es das Alignment und kann damit zu Geschwindigkeitseinbußen führen.
- Außerdem kann im Falle eines Defekts nur ein Laufwerk mit genau gleicher oder höherer Sektorzahl als Ersatz benutzt werden.
Neue Partition als RAID-Partition markieren:
# parted /dev/sda set 1 raid on
Software-RAID anlegen
- Das Hauptwerkzeug für alle Arbeiten an Software-RAIDs unter Linux ist mdadm.
- Es bildet die Schnittstelle zu den RAID-Funktionen des Kernels.
- Mehr Informationen finden sich im Abschnitt MDADM. Hiermit werden auch RAID-Verbunde erstellt:
RAID 1 über zwei Partitionen, sde1 und sdf1:
# mdadm --create /dev/md0 --auto md --level=1 --raid-devices=2 /dev/sde1 /dev/sdf1
Software-RAID 5 über vier Partitionen:
# mdadm --create /dev/md0 --auto md --level=5 --raid-devices=4 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1
Für weitere Infos siehe Linux:Befehl:mdadm.
Dateisystem
- Um den RAID-Verbund als normales Speicherlaufwerk zu nutzen, muss noch ein Dateisystem darauf erstellt und dieses ins System eingebunden werden, z.B. ext4.
- Im Falle eines RAID 1 ist dies recht einfach:
# mkfs.ext4 /dev/md0
- Bei komplexeren Verbunden wie RAID 0, 5, 6 oder 10 sollte das Dateisystem auf das RAID angepasst werden, um optimale Leistung zu ermöglichen.
- Dafür muss zunächst die sog. "Chunk Size", also die Datenmenge, die in einem einzelnen Schreibvorgang geschrieben wird, bekannt sein.
- Diese lässt sich wie folgt ermitteln:
# mdadm -D /dev/md0 | grep "Chunk Size"
- Bei einem RAID 5 mit Standardeinstellungen liefert dies Beispielsweise:
Chunk Size : 512K
- Es werden also 512 KiB Chunks verwendet.
- Hieraus können, zusammen mit der Anzahl der Partitionen und des RAID-Levels, die Dateisystem-Parameter berechnet werden.
- Am einfachsten geht das mittels eines Raid-Stride-Calculators.
- Alternativ können die Parameter auch von Hand ermittelt werden:
- block-size - Die Größe der Dateisystemblöcke in Bytes. Heutzutage werden fast ausschließlich 4096 Byte (4 KiB) Blöcke verwendet.
- stride-size - Die Chunk Size umgerechnet in Dateisystemblöcke. Bei 512 KiB Chunk Size mit 4 KiB Blöcken ergibt sich (512 KiB/ 4 KiB) = 128.
- stripe-width - Die Größe eines Datenstreifens, also die Menge an Blöcken, die geschrieben wird, wenn ein voller Chunk auf jedes Laufwerk geschrieben wird. Diese berechnet sich aus (stride-size * Anzahl der effektiv nutzbaren Partitionen).
Bei einem RAID 5 über 4 Partitionen ergibt sich beispielsweise (128 * 3) = 384.
- Details zur Anzahl der effektiv nutzbaren Partitionen finden sich im Abschnitt RAID-Level.
- Sind die Parameter ermittelt, wird das Dateisystem erstellt:
# mkfs.ext4 -b 4096 -E stride=128,stripe-width=384 /dev/md0
RAID mounten
- Das RAID muss noch in die Verzeichnisstruktur eingebunden werden.
- Dies geschieht einfach mittels mount, z.B. am Mountpunkt /media/daten.
# mount /dev/md0 /media/daten
- Damit das System beim Start das Dateisystem selber einhängt, muss eine entsprechende Zeile in die Datei /etc/fstab eingetragen werden:
/dev/md0 /media/daten ext4 defaults 0 2
mdadm.conf aktualisieren
- Alle Informationen zum RAID werden auf jeder verwendeten Partition in den sog. Superblock geschrieben (auch Metadaten genannt).
- Der Kernel sucht beim Starten automatisch nach diesen Superblöcken und startet alle voll funktionsfähigen RAIDs, ohne dass eine Konfigurationsdatei nötig ist.
- Trotzdem kann es sinnvoll sein, eine Konfigurationsdatei zu erstellen, z.B. wenn man über Ausfälle am RAID per E-Mail benachrichtigt werden möchte.
- Die Konfigurationsdatei kann bequem mit einem Skript von mdadm erstellt werden und enthält dann direkt alle Definitionen aller momentan aktiven RAIDs:
# su -c "/usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf"
Achtung! Je nach Konfiguration kommt es zu Fehlern in der mdadm.conf. Daher ist es sinnvoll diese zu überprüfen. Typische Fehler sind, wenn das RAID-System nicht wie im Beispiel als md0 sondern als md127 nach einem Neustart angezeigt wird. Das System kommt mit der Option "-name" in der mdadm.conf nicht klar. Diese Option auskommentieren und System neu starten. Um bei Ausfällen per E-Mail benachrichtigt zu werden, muss in der neuen Datei /etc/mdadm/mdadm.conf die Zeile
MAILADDR root
root durch die gewünschte E-Mail-Adresse ersetzt werden. Dafür muss der E-Mail-Versand durch das System eingerichtet sein, z.B. via Postfix als Satellitensystem.
- Über die Konfigurationsdatei können sehr viele Details der RAIDs angepasst werden.
- Nähere Informationen liefert die Manpage von mdadm.conf.
- Generell gilt bei neu aufgesetzten RAIDs allerdings: Je weniger, desto besser.
- Standardmäßig werden alle wichtigen Informationen (Metadaten) direkt auf den beteiligten Partitionen gespeichert, auch wenn nachträglich Änderungen vorgenommen werden.
- Andererseits haben die Parameter aus der mdadm.conf Vorrang.
- So ist es z.B. möglich, alle am RAID beteiligten Partitionen in der Datei anzugeben.
- Ändert sich jedoch die Reihenfolge der Festplatten (z.B. bei Austausch des Controllers, Umstecken der Kabel, Anschließen eines USB-Sticks etc.) ließe sich das RAID nicht mehr starten.
- Auch dann nicht, wenn in den Superblöcken der RAID-Laufwerke die richtigen Metadaten (unabhängig von den Buchstabenbezeichnungen) gespeichert sind.
- Dieses Problem lässt sich nur dann beheben, wenn die falschen Angaben in der mdadm.conf korrigiert oder explizit übergangen werden.
- Damit die Konfiguration beim Booten verfügbar ist, muss schließlich noch die Initrd aktualisiert werden:
# update-initramfs -u -k all