Mdadm

Aus MindLoot
Wechseln zu: Navigation, Suche
Mdadm
Logo
Entwickler Neil Brown



Grundinformationen
Lizenz: GPL
Unterstützte Plattformen: Linux
Webseite: http://neil.brown.name/blog/mdadm
Aktuelle Version: 2.6.1
Alternativen
Freie Software raidtools
Proprietäre Software

mdadm, kurz für "multiple devices administration" ist ein Werkzeug zur Verwaltung eines RAID-Verbundes.

Anwendungs-Beispiel

  • Es soll eine RAID-0-Partition (Striping) und eine Raid-1 Partition (Mirroring) eingerichtet werden.
  • Zur Verfügung stehen zwei Platten: hda und sda

Vorbereitung

  • Partitionen erstellen/aussuchen. Sinnvollerweise sind die Paare gleich groß: hda13 + sda10, hda14 + sda11
  • Mit fdisk den Partitionstyp aller 4 Partitionen auf 0xfd (Linux raid autodetect) ändern.
mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/hda13 /dev/sda10
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/hda14 /dev/sda11
mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdc1 --auto md
# legt das md device automatisch an z.b. bei udev
# missing lässt in diesem Fall das erste Laufwerk
# frei _U z.B. zum umkopieren von Daten aufs Raid
# (Spiegel ohne die erste Platte)

Jetzt müssen die 2 RAID-Partitionen mit Dateisystemen versehen werden:

mkfs.reiserfs /dev/md0
mkfs.ext3 /dev/md1

Kontrolle:

cat /proc/mdstat

Die /etc/fstab ändern:

/dev/md0 /work reiserfs auto,users,exec 0 0
/dev/md1 /home ext3 auto,users,noexec 0 0

/etc/mdadm/mdadm.conf erstellen:

cd /etc/mdadm
echo 'DEVICE /dev/hd*[0-9] /dev/sd*[0-9]' > mdadm.conf
mdadm --detail --scan >> mdadm.conf

Unter ["udev"]: Regeln zum Erstellen der Gerätedateien beim Booten:

grep ^M /etc/udev/links.conf && grep -w md0 || echo -e "M md0 b 9 0\nM md1 b 9 1" >>/etc/udev/links.conf

Ohne ["udev"]:

mknod /dev/md0 b 9 0 ; mknod /dev/md1 b 9 1

Bootvorgang

mdadm --assemble /dev/md0 /dev/hda13 /dev/sda10
mdadm --assemble /dev/md1 /dev/hda14 /dev/sda11

Alternativ kann man die RAID-Funktionen auch fest in den Kernel einbinden (nicht-modular!), dann werden bei 0xFD Partitionstyp die Partitionen automatisch zu md-Devices assembliert und gestartet.

Debian: Automatisches Auswerten der Datei /etc/mdadm/mdadm.conf geschieht im Skript {{{/etc/init.d/mdadm-raid}}}, allerdings nur, wenn in man in {{{/etc/default/mdadm}}} folgende Variable richtig setzt: {{{AUTOSTART=true}}}

Fehlerfall

cat /proc/mdstat
#Personalities : [linear] [raid0] [raid1] [raid5] [multipath] [raid6] [raid10]
#md1 : active raid1 hda14[0] sda11[2](F)
#      2803200 blocks [2/1] [U_]

Hier ist also sda11 aus dem Tritt gekommen. Fehler beseitigen (z.B. neue Platte einbauen).

# Partition wegnehmen und dann hinzufügen:
mdadm -r /dev/md1 /dev/sda11
mdadm -a /dev/md1 /dev/sda12
cat /proc/mdstat
#Personalities : [linear] [raid0] [raid1] [raid5] [multipath] [raid6] [raid10]
#md1 : active raid1 sda11[2] hda14[0]
#      2803200 blocks [2/1] [U_]
#      [>....................]  recovery =  4.7% (132096/2803200) finish=1.0min #speed=44032K/sec

Raid-Verbund auflösen

Beschluss, den Striping-Verbund aufzulösen: Damit sind die Resourcen wieder freigegeben. Die Daten sind damit weg!

mdadm --stop /dev/md0

/etc/mdadm/mdadm.conf neu erstellen:

cd /etc/mdadm
echo 'DEVICE /dev/hd*[0-9] /dev/sd*[0-9]' > mdadm.conf
mdadm --detail --scan >> mdadm.conf

Teilpartition verschieben

Die Partition /dev/sda11 soll nach /dev/sdb5 verschoben werden:

# Als defekt markieren. Damit stoppt die Verwendung:
mdadm -f /dev/md1 /dev/sda11
cat /proc/mdstat
#Personalities : [linear] [raid0] [raid1] [raid5] [multipath] [raid6] [raid10]
#md1 : active raid1 hda14[0] sda11[2](F)
#      2803200 blocks [2/1] [U_]
# Entfernen:
mdadm -r /dev/md1 /dev/sda11
cat /proc/mdstat
#Personalities : [linear] [raid0] [raid1] [raid5] [multipath] [raid6] [raid10]
#md1 : active raid1 hda14[0]
#      2803200 blocks [2/1] [U_]
# Neu einhängen:
mdadm -a /dev/md1 /dev/sdb5
cat /proc/mdstat
#Personalities : [linear] [raid0] [raid1] [raid5] [multipath] [raid6] [raid10]
#md1 : active raid1 sdb5[2] hda14[0]
#      2803200 blocks [2/1] [U_]
#      [>....................]  recovery =  4.7% (132096/2803200) finish=1.0min #speed=44032K/sec
sleep 120
cat /proc/mdstat
#Personalities : [linear] [raid0] [raid1] [raid5] [multipath] [raid6] [raid10]
#md1 : active raid1 sdb5[1] hda14[0]
#      2803200 blocks [2/2] [UU]