Software RAID Linux Einrichten Mdadm
Software-RAID unter Linux einrichten mit mdadm – Anleitung
Was ist RAID?
RAID (Redundant Array of Independent Disks) ist eine Technik zur Kombination mehrerer Festplatten in einem Array für bessere Performance oder Zuverlässigkeit. Im Gegensatz zu Hardware-RAID wird Software-RAID direkt vom Betriebssystem verwaltet, ist kostengünstiger, portabler und bietet mehr Flexibilität. Unter Linux wird Software-RAID typischerweise mit mdadm (multiple device administrator) konfiguriert.
RAID-Level – Vergleich und Unterschiede
| RAID-Level | Beschreibung | Min. Disks | Nutzbarer Platz | Read Speed | Write Speed | Fehlertoleranz | Best für |
|---|---|---|---|---|---|---|---|
| RAID 0 | Striping (verteilt Daten auf Disks) | 2 | 100% (N * Disk-Size) | N x Single | N x Single | Keine (1 Disk-Fehler = totaler Datenverlust) | Nur für unkritische Daten, Performance |
| RAID 1 | Mirroring (komplette Kopie auf 2. Disk) | 2 | 50% (1 Disk-Größe) | 2 x Single (Parallel) | 1 x Single | 1 Disk kann ausfallen | Kritische Daten, kleine Arrays |
| RAID 5 | Striping + Parity (verteilt auf alle Disks) | 3 | (N-1) * Disk-Size | (N-1) x Single | (N-1) x Single | 1 Disk kann ausfallen | General-Purpose Storage, Balance |
| RAID 6 | Striping + Dual Parity (P und Q) | 4 | (N-2) * Disk-Size | (N-2) x Single | (N-2) x Single | 2 Disks können ausfallen | Große Arrays (5+ Disks), höhere Sicherheit |
| RAID 10 | 1+0: Mirroring von Striped Sets | 4 (mind. 2 Paare) | 50% (N/2 * Disk-Size) | N x Single | N/2 x Single | 1 Disk pro Mirror-Pair kann ausfallen | High-Performance + Redundanz |
Installation von mdadm
Installieren Sie mdadm und die notwendigen Tools:
sudo apt update sudo apt install -y mdadm
Überprüfen Sie die Installation:
mdadm --version
Schritt 1: Festplatten vorbereiten
Überprüfen Sie alle verfügbaren Disks:
lsblk sudo fdisk -l
Erstellen Sie Partitionen auf jeder Disk. Für RAID 1 (2 Disks) verwenden wir /dev/sdb und /dev/sdc:
sudo fdisk /dev/sdb
Folgen Sie diesen Schritten:
Command (m for help): n # Neue Partition Partition type (p for primary): p # Primär Partition number: 1 First sector: [Enter] Last sector: [Enter] Command (m for help): t # Type ändern Partition number: 1 Hex code: fd # Linux RAID (fd)
Bestätigen Sie mit:
Command (m for help): w
Wiederholen Sie das gleiche für /dev/sdc.
Überprüfen Sie die neuen RAID-Partitionen:
sudo fdisk -l /dev/sdb sudo fdisk -l /dev/sdc
Schritt 2: RAID 1 Array erstellen
Erstellen Sie ein RAID-1 Array mit /dev/sdb1 und /dev/sdc1:
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
Dies erstellt das RAID-Array /dev/md0. Sie werden aufgefordert zu bestätigen – drücken Sie 'y'.
Überwachen Sie den Synchronisationsprozess:
watch -n1 cat /proc/mdstat
Drücken Sie Ctrl+C um den Watch-Prozess zu beenden. Der Status zeigt die Synchronisierung an.
Schritt 3: Dateisystem erstellen
Erstellen Sie ein ext4-Dateisystem auf dem RAID-Array:
sudo mkfs.ext4 /dev/md0
Erstellen Sie ein Mount-Verzeichnis:
sudo mkdir -p /mnt/raid1
Mounten Sie das RAID-Array:
sudo mount /dev/md0 /mnt/raid1
Überprüfen Sie:
lsblk df -h /mnt/raid1
Schritt 4: RAID-Konfiguration persistent machen
Speichern Sie die RAID-Konfiguration:
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
Aktualisieren Sie die initramfs:
sudo update-initramfs -u
Dies stellt sicher, dass das RAID-Array automatisch beim Boot erkannt und aktiviert wird.
Fügen Sie das Array zu /etc/fstab hinzu:
sudo nano /etc/fstab
Fügen Sie diese Zeile hinzu:
/dev/md0 /mnt/raid1 ext4 defaults,nofail 0 2
Testen Sie die Konfiguration:
sudo mount -a
Schritt 5: RAID-Array Details anzeigen
Zeigen Sie detaillierte RAID-Informationen an:
sudo mdadm --detail /dev/md0
Dies zeigt alle Disks, den aktuellen Status, die Synchronisierung und andere Details.
Schritt 6: Disk-Ausfall simulieren und ersetzen
Um ein Disk-Ausfallszenario zu testen, markieren Sie eine Disk als fehlerhaft:
sudo mdadm /dev/md0 --fail /dev/sdb1
Überprüfen Sie den Status:
sudo mdadm --detail /dev/md0
Das Array sollte jetzt im degraded-Mode laufen – Daten sind aber noch verfügbar!
Defekte Disk aus dem Array entfernen
sudo mdadm /dev/md0 --remove /dev/sdb1
Neue Disk hinzufügen und Resync starten
Entfernen Sie die kaputte Disk physisch, setzen Sie eine neue Disk ein (/dev/sdd) und initialisieren Sie sie:
sudo fdisk /dev/sdd # Type fd für RAID
Fügen Sie die neue Disk zum Array hinzu:
sudo mdadm /dev/md0 --add /dev/sdd1
Das Array startet automatisch den Resync-Prozess. Überwachen Sie:
watch -n1 cat /proc/mdstat
Nach dem Sync ist das Array wieder vollständig redundant.
Schritt 7: RAID 5 Array erstellen (3+ Disks)
Für bessere Kapazität mit 3 oder mehr Disks erstellen Sie RAID 5:
sudo mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
RAID 5 nutzt Striping mit Parity – nutzbarer Platz ist (N-1) * Disk-Größe.
Erstellen Sie ein Dateisystem:
sudo mkfs.ext4 /dev/md1
Schritt 8: RAID 6 Array (Dual Parity)
Für höhere Fehlertoleranz (2 Disk-Ausfälle) verwenden Sie RAID 6:
sudo mdadm --create /dev/md2 --level=6 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
RAID 6 speichert zwei Parity-Blöcke – nutzbarer Platz ist (N-2) * Disk-Größe.
Schritt 9: Email-Benachrichtigungen einrichten
Konfigurieren Sie mdadm, um Email-Benachrichtigungen bei RAID-Events zu senden:
sudo nano /etc/mdadm/mdadm.conf
Fügen Sie diese Zeilen hinzu:
MAILADDR admin@example.com MAILPROG /usr/sbin/sendmail MAILFROM system@example.com
Monitoring Service starten
Starten Sie den mdadm-Monitoring-Daemon:
sudo systemctl start mdadm sudo systemctl enable mdadm
Oder fügen Sie zum Crontab hinzu:
sudo crontab -e
*/5 * * * * /usr/sbin/mdadm --monitor --mail=admin@example.com /dev/md0
Schritt 10: RAID Array erweitern
Um ein RAID Array zu erweitern (z.B. von 3 auf 4 Disks für RAID 5):
1. Neue Disk hinzufügen:
sudo mdadm /dev/md1 --add /dev/sde1
2. Array wachsen lassen:
sudo mdadm --grow /dev/md1 --raid-devices=4
Dies startet den Reshape-Prozess (kann Stunden dauern). Überwachen Sie:
watch -n1 cat /proc/mdstat
3. Nach Reshape, wachsen Sie das Dateisystem:
sudo resize2fs /dev/md1
Schritt 11: RAID + LVM Kombination
Kombinieren Sie RAID (für Redundanz) mit LVM (für Flexibilität):
1. Erstellen Sie RAID Array (wie oben)
2. Erstellen Sie Physical Volume auf RAID:
sudo pvcreate /dev/md0
3. Erstellen Sie Volume Group:
sudo vgcreate data-vg /dev/md0
4. Erstellen Sie Logical Volumes:
sudo lvcreate -L 20G -n data-lv data-vg
Dies kombiniert die Fehlertoleranz von RAID mit der Flexibilität von LVM.
Schritt 12: Performance Testing
Überprüfen Sie die Performance des RAID Arrays:
sudo fio --name=benchmark --ioengine=libaio --iodepth=16 \ --rw=randread --bs=4k --direct=1 --size=1G --numjobs=4 \ --runtime=60 --group_reporting --directory=/mnt/raid1
Oder mit hdparm für einfache Disk-Read-Speed-Tests:
sudo hdparm -tT /dev/md0
Schritt 13: RAID Array entfernen
Um ein RAID Array zu löschen:
1. Stoppen Sie das Array:
sudo mdadm --stop /dev/md0
2. Entfernen Sie den RAID-Metadaten:
sudo mdadm --zero-superblock /dev/sdb1 /dev/sdc1
Praktisches Szenario: Disk-Ausfallhandling
Szenario
Eine Disk in Ihrem RAID 1 Array ist ausgefallen. Das Array läuft im degraded-Mode. Sie müssen die ausgefallene Disk ersetzen.
Schritt für Schritt
1. Überprüfen Sie den aktuellen Status:
sudo mdadm --detail /dev/md0
2. Entfernen Sie die fehlerhafte Disk physisch
3. Setzen Sie eine neue Disk ein und initialisieren Sie die Partition:
sudo fdisk /dev/sdb # Create partition, set type to fd
4. Fügen Sie die neue Disk hinzu:
sudo mdadm /dev/md0 --add /dev/sdb1
5. Überwachen Sie den Resync:
watch -n1 cat /proc/mdstat
6. Nach Abschluss ist das Array wieder vollständig:
sudo mdadm --detail /dev/md0
Das gesamte Verfahren kann durchgeführt werden, während das System und Dateisystem online sind!
Troubleshooting
Array kann nicht zusammengestellt werden
Versuchen Sie manuell zu assemblieren:
sudo mdadm --assemble --scan
Disk zeigt „unknown" oder „removed"
Überprüfen Sie die Disk-Verbindung und starten Sie das System neu. Falls das nicht hilft, setzen Sie die Disk zurück:
sudo mdadm --zero-superblock /dev/sdb1
Rebuild/Resync ist sehr langsam
Dies ist normal für große Arrays. Sie können die Rebuild-Priorität erhöhen (vorsichtig, reduziert normale Performance):
echo 2000 | sudo tee /proc/sys/dev/raid/speed_limit_min
Vergleich: mdadm vs LVM vs ZFS RAID-Z
| Feature | mdadm Software-RAID | LVM | ZFS RAID-Z |
|---|---|---|---|
| Redundancy | RAID 0-6, 10 | Externe RAID erforderlich | RAID-Z, RAID-Z2, RAID-Z3 |
| Checksums | Nein (vom FS) | Nein (vom FS) | SHA-256 native |
| Self-Healing | Ja (mit Parity) | Nein | Ja (mit Parity) |
| Snapshots | Nein | Ja (LVM-Snapshots) | Ja (native) |
| Komplexität | Einfach | Moderat | Komplex |
| Performance | Sehr gut | Gut | Ausgezeichnet |
| Lizenz | GPL | GPL | CDDL |
Best Practices
- Monitoring einrichten: Aktivieren Sie Email-Benachrichtigungen für RAID-Events
- Regelmäßige Checks: Führen Sie regelmäßig RAID-Konsistenz-Checks durch
- Separate Backups: RAID ist kein Backup! Sichern Sie Daten extern
- Gleich große Disks: Verwenden Sie Disks der gleichen Größe für optimale Kapazität
- HDDs für RAID: Verwenden Sie Enterprise-HDDs für bessere Zuverlässigkeit
- Monitoring: Überwachen Sie SMART-Status der Disks
Zusammenfassung
Software-RAID mit mdadm ist eine zuverlässige und kosteneffektive Lösung zur Schaffung redundanter Storage unter Linux. RAID schützt vor einzelnen Disk-Ausfällen (je nach RAID-Level vor mehreren), ermöglicht Online-Repairs und garantiert Datenverfügbarkeit. Allerdings ist RAID kein Backup – Sie benötigen ein separates Backup-System.
Wählen Sie das richtige RAID-Level für Ihre Anforderungen: - RAID 1: Kleine Arrays, maximale Performance - RAID 5: Balance zwischen Kapazität und Sicherheit (3-4 Disks) - RAID 6: Große Arrays mit höherer Sicherheit (5+ Disks) - RAID 10: Maximale Performance + Redundanz (4+ Disks)
- 📖 ZFS Dateisystem Grundlagen und Einrichtung
- 📖 LVM – Logical Volume Manager unter Linux
- 📖 Backup-Strategien nach der 3-2-1 Regel
- 🔧 Sichere Server bei Enjyn mieten
- 🔧 Enjyn Server Monitor – Kostenlose Uptime-Überwachung