RAID (Redundant Array of Independent Disks) erhöht Ausfallsicherheit und/oder Performance. Linux bietet mit mdadm ein leistungsstarkes Software-RAID.
RAID-Level
Übersicht
| Level | Min. Disks | Redundanz | Performance | Kapazität | |-------|------------|-----------|-------------|-----------| | RAID 0 | 2 | Keine | Lesen/Schreiben ↑↑ | 100% | | RAID 1 | 2 | 1 Disk | Lesen ↑ | 50% | | RAID 5 | 3 | 1 Disk | Lesen ↑ | (n-1)/n | | RAID 6 | 4 | 2 Disks | Lesen ↑ | (n-2)/n | | RAID 10 | 4 | 1 pro Mirror | Lesen/Schreiben ↑ | 50% |
RAID 0 (Striping)
┌─────────┐ ┌─────────┐
│ Disk 1 │ │ Disk 2 │
│ Block 1 │ │ Block 2 │
│ Block 3 │ │ Block 4 │
│ Block 5 │ │ Block 6 │
└─────────┘ └─────────┘
+ Maximale Performance
+ Volle Kapazität
- Keine Redundanz
- Ein Disk-Ausfall = TotalverlustRAID 1 (Mirroring)
┌─────────┐ ┌─────────┐
│ Disk 1 │ │ Disk 2 │
│ Block 1 │ │ Block 1 │
│ Block 2 │ │ Block 2 │
│ Block 3 │ │ Block 3 │
└─────────┘ └─────────┘
+ Volle Redundanz
+ Schnelles Lesen
- 50% KapazitätRAID 5 (Striping + Parity)
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Disk 1 │ │ Disk 2 │ │ Disk 3 │
│ Block 1 │ │ Block 2 │ │ Parity │
│ Block 3 │ │ Parity │ │ Block 4 │
│ Parity │ │ Block 5 │ │ Block 6 │
└─────────┘ └─────────┘ └─────────┘
+ Gute Kapazitätsnutzung
+ Redundanz gegen 1 Ausfall
- Schreibperformance
- Rebuild-ZeitRAID 10 (Mirror + Stripe)
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ Disk 1 │ │ Disk 2 │ │ Disk 3 │ │ Disk 4 │
│ Block 1 │ │ Block 1 │ │ Block 2 │ │ Block 2 │
│ Block 3 │ │ Block 3 │ │ Block 4 │ │ Block 4 │
└─────────┘ └─────────┘ └─────────┘ └─────────┘
Mirror A Mirror B
+ Beste Performance
+ Gute Redundanz
- 50% Kapazitätmdadm installieren
# Debian/Ubuntu
apt install mdadm
# CentOS/RHEL
dnf install mdadmRAID erstellen
RAID 1
# Partitionen vorbereiten
fdisk /dev/sdb # Typ: fd (Linux RAID autodetect)
fdisk /dev/sdc # Typ: fd
# RAID-1 erstellen
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
# Status prüfen
cat /proc/mdstat
mdadm --detail /dev/md0RAID 5
# Drei Festplatten
mdadm --create /dev/md0 --level=5 --raid-devices=3 \
/dev/sdb1 /dev/sdc1 /dev/sdd1
# Mit Spare-Disk
mdadm --create /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 \
/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1RAID 6
mdadm --create /dev/md0 --level=6 --raid-devices=4 \
/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1RAID 10
mdadm --create /dev/md0 --level=10 --raid-devices=4 \
/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1Dateisystem erstellen
# Dateisystem erstellen
mkfs.ext4 /dev/md0
# Oder XFS
mkfs.xfs /dev/md0
# Mounten
mkdir /data
mount /dev/md0 /data
# In fstab eintragen
echo '/dev/md0 /data ext4 defaults 0 0' >> /etc/fstabKonfiguration speichern
# mdadm.conf aktualisieren
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
# Initramfs aktualisieren (Debian/Ubuntu)
update-initramfs -u
# CentOS/RHEL
dracut --forceStatus überwachen
Array-Status
# Übersicht
cat /proc/mdstat
# Details
mdadm --detail /dev/md0
# Alle Arrays
mdadm --detail --scanAusgabe interpretieren
md0 : active raid5 sdd1[2] sdc1[1] sdb1[0]
2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
[UUU] = Alle Disks OK
[U_U] = Mittlere Disk fehlt
[3/3] = 3 von 3 Disks aktivMonitoring
# E-Mail bei Problemen
# /etc/mdadm/mdadm.conf
MAILADDR admin@example.com
# Monitoring-Daemon
systemctl enable --now mdmonitorFestplatte ersetzen
Defekte Festplatte markieren
# Als fehlerhaft markieren
mdadm --manage /dev/md0 --fail /dev/sdc1
# Entfernen
mdadm --manage /dev/md0 --remove /dev/sdc1Neue Festplatte hinzufügen
# Festplatte partitionieren
fdisk /dev/sdf # Typ: fd
# Zum Array hinzufügen
mdadm --manage /dev/md0 --add /dev/sdf1
# Rebuild-Status beobachten
watch cat /proc/mdstatRebuild beschleunigen
# Rebuild-Geschwindigkeit erhöhen
echo 200000 > /proc/sys/dev/raid/speed_limit_min
echo 500000 > /proc/sys/dev/raid/speed_limit_maxArray erweitern
RAID 5 vergrößern
# Neue Disk hinzufügen
mdadm --manage /dev/md0 --add /dev/sdf1
# Array erweitern
mdadm --grow /dev/md0 --raid-devices=4
# Reshape-Fortschritt
cat /proc/mdstat
# Dateisystem erweitern
resize2fs /dev/md0 # ext4
xfs_growfs /dev/md0 # XFSArray stoppen/starten
Stoppen
# Unmounten
umount /data
# Array stoppen
mdadm --stop /dev/md0Starten
# Manuell starten
mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1
# Automatisch (scan)
mdadm --assemble --scanBeim Boot starten
# mdadm.conf korrekt?
mdadm --detail --scan
# Initramfs aktualisieren
update-initramfs -uTroubleshooting
Array degradiert
# Status prüfen
mdadm --detail /dev/md0
# Welche Disk fehlt?
cat /proc/mdstat
# Disk-Health prüfen
smartctl -a /dev/sdcArray nicht gefunden
# Scan nach Arrays
mdadm --examine --scan
# Manuell assemblieren
mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1
# Super-Block prüfen
mdadm --examine /dev/sdb1Array reparieren
# Forced assemble
mdadm --assemble --force /dev/md0 /dev/sdb1 /dev/sdc1
# Read-Only assemblieren
mdadm --assemble --readonly /dev/md0 /dev/sdb1 /dev/sdc1Super-Block löschen
# Partition aus altem Array wiederverwenden
mdadm --zero-superblock /dev/sdb1Best Practices
Empfehlungen
1. RAID ist kein Backup!
2. Immer Spare-Disk vorhalten
3. E-Mail-Benachrichtigung einrichten
4. Regelmäßig Status prüfen
5. SMART-Monitoring aktivieren
6. Gleiche Disk-Größen verwenden
7. Rebuild nicht unterbrechenRAID-Level-Empfehlungen
Datenbank: RAID 10 (Performance + Redundanz)
Fileserver: RAID 6 (Große Kapazität + Redundanz)
Webserver: RAID 1 (Einfach, redundant)
Scratch/Temp: RAID 0 (Nur Performance)Monitoring-Skript
#!/bin/bash
# /usr/local/bin/check-raid.sh
STATUS=$(cat /proc/mdstat)
if echo "$STATUS" | grep -q "_"; then
echo "RAID DEGRADED!"
echo "$STATUS" | mail -s "RAID Alert: $(hostname)" admin@example.com
exit 2
fi
if echo "$STATUS" | grep -q "resync\|recovery"; then
echo "RAID REBUILDING"
exit 1
fi
echo "RAID OK"
exit 0Zusammenfassung
| Befehl | Funktion | |--------|----------| | mdadm --create | Array erstellen | | mdadm --detail | Details anzeigen | | mdadm --manage --add | Disk hinzufügen | | mdadm --manage --fail | Disk als defekt markieren | | mdadm --grow | Array erweitern | | mdadm --stop | Array stoppen | | cat /proc/mdstat | Status-Übersicht |
| RAID-Level | Einsatz | |------------|---------| | RAID 0 | Temporäre Daten | | RAID 1 | Boot, kleine Arrays | | RAID 5 | Allgemein, Kosten-effizient | | RAID 6 | Große Arrays, kritische Daten | | RAID 10 | Datenbanken, High-Performance |
Fazit
Software-RAID mit mdadm bietet flexible und zuverlässige Speicherlösungen. RAID 1 ist ideal für Boot-Partitionen, RAID 5/6 für Daten-Arrays und RAID 10 für Performance-kritische Anwendungen. Denken Sie daran: RAID schützt vor Hardware-Ausfällen, ersetzt aber kein Backup. Überwachen Sie Ihre Arrays und halten Sie Spare-Disks bereit.