Seiten

Mittwoch, 31. Dezember 2014

Merkzettel: Software Raid5 mit mdadm

Hatte neulich Probleme mit meinem SATA Port Multiplier und die 4 daran angeschlossenen Platten fingen an, nicht mehr zu reagieren. Als Folge wurde mein Software-Raid nicht mehr richtig ausgehängt und ich konnte nicht mehr darauf zugreifen. Es sah zunächst so aus, als würde das 3TB große Array futsch sein - eher unerwünscht.

Das Software-Raid von Linux aber sehr robust und wenn man weiß, wie man es zum Laufen bekommt, bekommt man keine grauen Haare. Ich schreibe mir hier deshalb die nötigen Kommandos auf, die in diesem speziellen Fall nötig waren. Sofern man sicher ist, dass die Platten in Ordnung sind, kann man mit einen --force an der richtigen Stelle wieder auf die Daten zugreifen.

Um einen definierten Zustand zu haben, das Array mal stoppen:
phenom daniel # mdadm --stop /dev/md0
mdadm: stopped /dev/md0
Dann nach Mitgliedern suchen lassen
phenom daniel # mdadm --assemble --scan
mdadm: /dev/md/0 assembled from 2 drives - not enough to start the array.
Jetzt wissen wir was los ist und stoppen nochmal zur Sicherheit
phenom daniel # mdadm --stop /dev/md0
mdadm: stopped /dev/md0
Der eigentliche Auftrag -> Das Array forciert starten:
phenom daniel # mdadm --assemble --scan --force
mdadm: forcing event count in /dev/sdc1(1) from 19687 upto 19694
mdadm: forcing event count in /dev/sdd1(2) from 19683 upto 19694
mdadm: clearing FAULTY flag for device 3 in /dev/md/0 for /dev/sdc1
mdadm: clearing FAULTY flag for device 2 in /dev/md/0 for /dev/sdd1
mdadm: Marking array /dev/md/0 as 'clean'
mdadm: /dev/md/0 has been started with 4 drives.
Will man auf Nummer sicher gehen, kann man auch einen resync manuell anstoßen. Wieder das Array stoppen:
phenom daniel # mdadm --stop /dev/md0
mdadm: stopped /dev/md0
Dann den resync starten
phenom daniel # mdadm --assemble --run --force --update=resync /dev/mdX /dev/sdX /dev/sdY /dev/sdZ
mdadm: /dev/mdX has been started with XYZ drives
Mit einem
cat /proc/mdstat
kann man nachsehen, ob der rebuild auch wirklich läuft und wie lange er brauchen will. Am Ende kann man das Dateisystem dann (hoffentlich) wieder mounten.

Und sonst noch?

# Device dem Array hinzufügen
mdadm --add /dev/mdX /dev/sdaX

# Device aus dem Array entfernen
mdadm --manage /dev/mdX --fail /dev/sdaX
mdadm --remove /dev/mdX /dev/sdaX

# Fehlerhafte Devices entfernen
mdadm --manage /dev/mdX --remove faulty
mdadm --manage /dev/mdX --remove failed

# Partitionstabelle sichern
sfdisk -d /dev/sdX > sdX.partition

# Partitionstabelle wieder einspielen
sfdisk /dev/sdX < sdX.partition