Mdadm
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.
Inhaltsverzeichnis
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]