Software-RAID mit mdadm bietet Ausfallsicherheit und Performance ohne Hardware-RAID-Controller. Linux unterstützt alle gängigen RAID-Level direkt im Kernel.
RAID-Level
| Level | Disks | Redundanz | Kapazität | Verwendung | |-------|-------|-----------|-----------|------------| | RAID 0 | 2+ | Keine | 100% | Performance | | RAID 1 | 2 | 1 Disk | 50% | Boot, kleine Daten | | RAID 5 | 3+ | 1 Disk | (n-1)/n | Allgemein | | RAID 6 | 4+ | 2 Disks | (n-2)/n | Große Arrays | | RAID 10 | 4+ | Mirror | 50% | Datenbanken |
Installation
# Debian/Ubuntu
apt install mdadm
# RHEL/CentOS
dnf install mdadmRAID erstellen
RAID 1 (Mirror)
# Zwei Disks spiegeln
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
# Mit Spare
mdadm --create /dev/md0 --level=1 --raid-devices=2 --spare-devices=1 \
/dev/sdb1 /dev/sdc1 /dev/sdd1RAID 5
# Drei oder mehr Disks
mdadm --create /dev/md0 --level=5 --raid-devices=3 \
/dev/sdb1 /dev/sdc1 /dev/sdd1
# Mit Chunk-Size
mdadm --create /dev/md0 --level=5 --raid-devices=4 --chunk=256 \
/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1RAID 6
# Vier oder mehr Disks (2 Parity)
mdadm --create /dev/md0 --level=6 --raid-devices=4 \
/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1RAID 10
# Mindestens 4 Disks
mdadm --create /dev/md0 --level=10 --raid-devices=4 \
/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
# Mit Layout
mdadm --create /dev/md0 --level=10 --layout=n2 --raid-devices=4 \
/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1RAID 0 (Stripe)
# Performance ohne Redundanz
mdadm --create /dev/md0 --level=0 --raid-devices=2 \
/dev/sdb1 /dev/sdc1RAID verwenden
Dateisystem erstellen
# ext4
mkfs.ext4 /dev/md0
# XFS
mkfs.xfs /dev/md0Mounten
# Mounten
mount /dev/md0 /mnt/raid
# In fstab
echo '/dev/md0 /mnt/raid ext4 defaults 0 2' >> /etc/fstabStatus und Überwachung
Array-Status
# Kurzer Status
cat /proc/mdstat
# Detailliert
mdadm --detail /dev/md0
# Alle Arrays
mdadm --detail --scanBeispiel-Ausgabe
md0 : active raid1 sdc1[1] sdb1[0]
1953382464 blocks super 1.2 [2/2] [UU]
# [UU] = beide Disks aktiv
# [U_] = eine Disk fehlt
# [2/2] = 2 von 2 Disks aktivMonitoring
# E-Mail bei Problemen
mdadm --monitor --scan --daemonize --mail=admin@example.de
# In /etc/mdadm/mdadm.conf
MAILADDR admin@example.de
# Service aktivieren
systemctl enable mdmonitorDisk-Ausfall
Defekte Disk ersetzen
# 1. Defekte Disk markieren
mdadm --fail /dev/md0 /dev/sdb1
# 2. Aus Array entfernen
mdadm --remove /dev/md0 /dev/sdb1
# 3. Physisch tauschen, dann neue Disk hinzufügen
mdadm --add /dev/md0 /dev/sdb1
# 4. Rebuild-Status prüfen
watch cat /proc/mdstatRebuild beschleunigen
# Minimum Speed erhöhen
echo 50000 > /proc/sys/dev/raid/speed_limit_min
# Maximum Speed
echo 200000 > /proc/sys/dev/raid/speed_limit_maxKonfiguration speichern
mdadm.conf
# Konfiguration generieren
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
# Initramfs aktualisieren
update-initramfs -uBeispiel mdadm.conf
# /etc/mdadm/mdadm.conf
MAILADDR admin@example.de
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=xxx:xxx:xxx:xxxArray verwalten
Array stoppen
# Unmounten
umount /dev/md0
# Stoppen
mdadm --stop /dev/md0Array starten
# Manuell starten
mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1
# Automatisch
mdadm --assemble --scanArray löschen
# Stoppen
mdadm --stop /dev/md0
# Superblocks löschen
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdc1Array erweitern
RAID 1 zu RAID 5
# Nicht direkt möglich - neues Array erstellen und Daten migrierenMehr Disks zu RAID 5
# Disk hinzufügen
mdadm --add /dev/md0 /dev/sde1
# Array erweitern
mdadm --grow /dev/md0 --raid-devices=4
# Dateisystem vergrößern
resize2fs /dev/md0Spare Disks
Spare hinzufügen
mdadm --add /dev/md0 /dev/sde1
# Wird automatisch Spare wenn Array vollSpare entfernen
mdadm --remove /dev/md0 /dev/sde1Bitmap (Write-Intent)
# Bitmap aktivieren (beschleunigt Rebuild)
mdadm --grow /dev/md0 --bitmap=internal
# Bitmap deaktivieren
mdadm --grow /dev/md0 --bitmap=noneTroubleshooting
Array startet nicht
# Disks prüfen
mdadm --examine /dev/sdb1
# Force-Assemble
mdadm --assemble --force /dev/md0 /dev/sdb1 /dev/sdc1Degraded Array
# Status prüfen
mdadm --detail /dev/md0
# Mit fehlender Disk starten
mdadm --assemble --force /dev/md0 /dev/sdb1Superblock reparieren
# Superblock von anderer Disk kopieren
mdadm --add /dev/md0 /dev/sdb1
# Bei komplettem Verlust
mdadm --create /dev/md0 --assume-clean --level=1 --raid-devices=2 \
/dev/sdb1 /dev/sdc1Boot von RAID
GRUB auf RAID 1
# Boot-Partitionen auf RAID 1
mdadm --create /dev/md0 --level=1 --raid-devices=2 --metadata=1.0 \
/dev/sda1 /dev/sdb1
# GRUB installieren
grub-install /dev/sda
grub-install /dev/sdb
# Initramfs mit mdadm
update-initramfs -uPerformance
Chunk-Size optimieren
# Größerer Chunk für sequentiellen Zugriff
mdadm --create /dev/md0 --level=5 --chunk=512 ...
# Kleinerer Chunk für Random I/O
mdadm --create /dev/md0 --level=5 --chunk=64 ...Stripe-Cache
# Cache vergrößern (RAID 5/6)
echo 8192 > /sys/block/md0/md/stripe_cache_sizeStatus-Script
#!/bin/bash
# raid-status.sh
echo "=== RAID Status ==="
cat /proc/mdstat
echo ""
echo "=== Array Details ==="
for md in /dev/md*; do
[ -b "$md" ] && mdadm --detail "$md" 2>/dev/null
done
echo ""
echo "=== Disk Health ==="
for disk in /dev/sd[a-z]; do
[ -b "$disk" ] && smartctl -H "$disk" 2>/dev/null | grep -E "SMART|result"
doneZusammenfassung
| Befehl | Funktion | |--------|----------| | mdadm --create | Array erstellen | | mdadm --detail | Array-Details | | mdadm --add | Disk hinzufügen | | mdadm --fail | Disk als defekt markieren | | mdadm --remove | Disk entfernen | | mdadm --stop | Array stoppen | | mdadm --assemble | Array zusammenbauen |
| Level | Mindest-Disks | Redundanz | |-------|---------------|-----------| | RAID 0 | 2 | Keine | | RAID 1 | 2 | 1 Disk | | RAID 5 | 3 | 1 Disk | | RAID 6 | 4 | 2 Disks | | RAID 10 | 4 | 1 pro Mirror |
| Datei | Funktion | |-------|----------| | /proc/mdstat | Aktueller Status | | /etc/mdadm/mdadm.conf | Konfiguration |
Fazit
Software-RAID mit mdadm ist zuverlässig und flexibel. RAID 1 eignet sich für Boot und kleine Systeme. RAID 5/6 bietet gute Balance aus Kapazität und Redundanz. RAID 10 ist optimal für Datenbanken. Regelmäßiges Monitoring und SMART-Checks verhindern Überraschungen. Ersatz-Disks als Spare beschleunigen die Wiederherstellung.