Linux/Software-RAID/Anlegen
Das Hauptwerkzeug für alle Arbeiten an Software-RAIDs unter Linux ist mdadm.
mdadm
- mdadm bildet die Schnittstelle zu den RAID-Funktionen des Kernels.
- Hiermit werden auch RAID-Verbunde erstellt.
RAID anlegen
- Z.B über zwei Partitionen.
# mdadm --create /dev/Name_des_RAIDs --auto md --level=RAID-Level --raid-devices=Anzahl_der_Partitionen /dev/Name_der_Partition /dev/Name_der_Partition
Dateisystem
- Um den RAID-Verbund als Datenträger zu nutzen, muss noch ein Dateisystem erstellt werden, z.B. ext4.
Dateisystem anlegen
# mkfs.ext4 /dev/Name_des_RAIDs
RAID 0, 5, 6 oder 10
- 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.
Alignment (Ausrichtung)
- Datenträger, RAID-Verbunde und Dateisysteme fassen Daten jeweils für sich in Blöcke zusammen, bevor sie gespeichert werden.
- Diese Blöcke haben im Allgemeinen alle unterschiedliche Größen.
- Um eine optimale Performance zu erzielen, sollten die Größen aufeinander abgestimmt sein.
Ermittlung der Chunk Size
# mdadm -D /dev/md0 | grep "Chunk Size"
- Bei einem RAID 5 mit Standardeinstellungen liefert dies z.B.:
Chunk Size : 512K
- Es werden also 512 KiB Chunks verwendet.
Änderung der Chunk Size
- Chunk Size auf 64 KiB ändern.
- Macht nur Sinn, wenn auf dem RAID hauptsächlich sehr kleine Dateien geschrieben bzw. gelesen werden sollen.
# mdadm --grow -c 64 /dev/md0
Berechnung des Alignments
- 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 hier 128 * 3 = 384.
- Details zur Anzahl der effektiv nutzbaren Partitionen findet man im Artikel Hardware:Storage:RAID.
- 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.
Manuell und transient (nicht dauerhaft)
# mount /dev/md0 /media/daten
Automatisch und persistent (dauerhaft)
- Damit das System beim Start das Dateisystem selber einhängt, muss eine entsprechende Zeile in die Datei /etc/fstab eingetragen werden.
- Man kann zum beim Eintrag den Namen des RAIDs oder seine UUID (Universally Unique Identifier) verwenden.
- Bei Verwendung des Namens kann es u.U. zu Problemen führen.
- Besser man verwendet die UUID, diese ist absolut eindeutig.
UUID=ausgelesene UUID /media/daten ext4 defaults 0 2
UUID auslesen
Name des RAID-Array hier md0.
# blkid –c /dev/md0
/dev/md0: UUID="e5e4d736-b1a8-4400-bda6-1a4c44bbe783" TYPE="ext4"
mdadm.conf
- 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.
- Über die Konfigurationsdatei können sehr viele Details der RAIDs angepasst werden.
- Generell gilt bei neu aufgesetzten RAIDs allerdings: Je weniger, desto besser.
- Nähere Informationen liefert die Manpage von mdadm.conf.
Erstellen der mdadm.conf
- 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"
Über Ausfälle am RAID per E-Mail benachrichtigt werden
- In der mdadm.conf muss dafür in der Zeile...
MAILADDR root
- ...root durch die gewünschte E-Mail-Adresse ersetzt werden.
MAILADDR xzy@abc.org
- Dafür muss der E-Mail-Versand durch das System eingerichtet sein, z.B. via Postfix als Satellitensystem.
RAID-Optimierung
Datenträger-Cache
- Bei einem Software-RAID ist es empfehlenswert den Schreib-Cache von Datenträger 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 Datenträger-Cache überprüfen
- Überprüfen, ob der Write-Cache einer Datenträger aktiviert oder deaktiviert ist. Hier bei der Datenträger sda.
# hdparm -i /dev/sda
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: Datenträger-Cache ist hier also zur Zeit aktiviert.
Datenträger-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
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 Datenträger-Cache ist nun deaktiviert.
Anwendung
RAID 1 über zwei Partitionen anlegen
- z.B mit den Partitionen sde1 und sdf1:
# mdadm --create /dev/md0 --auto md --level=1 --raid-devices=2 /dev/sde1 /dev/sdf1
RAID 5 über vier Partitionen anlegen
- z.B. mit den Partitionen sde1, sdf1, sdg1 und sdh1:
# mdadm --create /dev/md0 --auto md --level=5 --raid-devices=4 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1
Dateisystem anlegen
# mkfs.ext4 /dev/md0
weitere Artikel zum Thema
Linux:Software-RAID:Fehlerbehebung
Linux:Software-RAID:Komplexe Aufgaben
Linux:Software-RAID:Vorbereitung
Quellen
https://wiki.ubuntuusers.de/Software-RAID/