RAID1 mit LVM: Erstellung und Migration
Kurzfassung: Dieser Leitfaden beschreibt Schritt für Schritt, wie Sie zwei degraded RAID1-Arrays (/dev/md0 für /boot und /dev/md1 für LVM) mit mdadm erstellen, /dev/md1 für LVM vorbereiten, GRUB2 anpassen und anschließend die Daten von /dev/sda nach /dev/sdb bzw. in die neuen RAID-Arrays migrieren. Enthalten sind Prüfungen, Troubleshooting, Checklisten und ein Playbook für die Migration.
Wichtig: Führen Sie diese Arbeit nur mit aktuellen Backups durch. Viele Befehle erfordern Root-Rechte.
Ziele und Varianten
Primäres Ziel: Erstellen von RAID1-Arrays mit mdadm und Migration von existierenden Partitionen in die neuen Arrays, inklusive Anpassung von GRUB und initramfs.
Verwandte Varianten: RAID1 mit /boot auf Software-RAID, LVM auf RAID, Booten von RAID, pvmove-basierte Migration, Alternative: Hardware-RAID + LVM.
Inhaltsübersicht
- Vorbereitung und Erstellen der RAID-Arrays
- Dateisystem und LVM-Vorbereitung
- Anpassen von mdadm.conf, fstab und GRUB2
- Migration der LVM-Daten mit pvmove
- Synchronisation überwachen, Tests und Abnahmekriterien
- Troubleshooting, Playbook und Checklisten
1 Vorbereitung: Hinweise und Voraussetzungen
Vor dem Start
- Stellen Sie sicher, dass vollständige, verifizierte Backups vorhanden sind. Eine Snapshot- oder Image-Sicherung ist ideal.
- Arbeiten Sie als root oder mit sudo.
- Notieren Sie die aktuellen Partitionsbezeichnungen (z. B. /dev/sda1, /dev/sda5, /dev/sdb1, /dev/sdb5).
- Prüfen Sie den freien Platz in der VG mit vgdisplay und pvdisplay.
Wichtige Begriffe (einzeilig erklärt)
- mdadm: Werkzeug zur Verwaltung von Linux-Software-RAID.
- LVM: Logical Volume Manager zur flexiblen Verwaltung von Volumes.
- pvmove: LVM-Befehl zum Verschieben von physischen Extents zwischen PVs.
2 RAID-Arrays erstellen
Wir erstellen zwei RAID1-Arrays: /dev/md0 (für /boot) und /dev/md1 (als PV für LVM). Da die aktuellen /dev/sda-Partitionen noch gebraucht werden, verwenden wir den Platzhalter missing.
mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb5
Wenn Sie nach der Ausführung gefragt werden, bestätigen Sie mit y, sofern Sie die vorherigen Voraussetzungen geprüft haben.
Beispielausgabe (Bestätigung erforderlich):
root@server1:~# mdadm –create /dev/md1 –level=1 –raid-disks=2 missing /dev/sdb5
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store ‘/boot’ on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
–metadata=0.90
Continue creating array? <– y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
root@server1:~#
Prüfen Sie den Status mit:
cat /proc/mdstat
Sie sollten zwei degraded Arrays sehen ([U] oder [U] bedeutet degraded, [UU] bedeutet vollständig):
root@server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdb5[1]
4989940 blocks super 1.2 [2/1] [_U]
md0 : active raid1 sdb1[1]
248820 blocks super 1.2 [2/1] [_U]
unused devices:
root@server1:~#
3 Dateisystem erstellen und LVM vorbereiten
Erstellen Sie ein ext2-Filesystem auf /dev/md0 (für /boot):
mkfs.ext2 /dev/md0
Vorbereitung von /dev/md1 für LVM:
pvcreate /dev/md1
Dann /dev/md1 zur Volume-Gruppe hinzufügen:
vgextend server1 /dev/md1
Prüfen Sie das Ergebnis:
pvdisplay
Beispielausgabe (zeigt /dev/md1 als neues PV):
root@server1:~# pvdisplay
— Physical volume —
PV Name /dev/sda5
VG Name server1
PV Size 4.76 GiB / not usable 2.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 1218
Free PE 0
Allocated PE 1218
PV UUID 8p9j8i-cc9a-bAJq-LFP9-CBMF-JrPl-SDbx4X
— Physical volume —
PV Name /dev/md1
VG Name server1
PV Size 4.76 GiB / not usable 1012.00 KiB
Allocatable yes
PE Size 4.00 MiB
Total PE 1218
Free PE 1218
Allocated PE 0
PV UUID W4I07I-RT3P-DK1k-1HBz-oJvp-6in0-uQ53KS
root@server1:~#
Und die Volume-Gruppe:
vgdisplay
root@server1:~# vgdisplay
— Volume group —
VG Name server1
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 9.52 GiB
PE Size 4.00 MiB
Total PE 2436
Alloc PE / Size 1218 / 4.76 GiB
Free PE / Size 1218 / 4.76 GiB
VG UUID m99fJX-gMl9-g2XZ-CazH-32s8-sy1Q-8JjCUW
root@server1:~#
4 Konfiguration: mdadm.conf, fstab, mtab, GRUB2 und initramfs
Aktualisieren Sie mdadm.conf, indem Sie eine Sicherung anlegen und die neuen Arrays eintragen:
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
Prüfen Sie den Inhalt:
cat /etc/mdadm/mdadm.conf
Sie sollten ARRAY-Einträge für /dev/md/0 und /dev/md/1 sehen. Beispiel:
| # mdadm.conf # # Please refer to mdadm.conf(5) for information about this file. # # by default, scan all partitions (/proc/partitions) for MD superblocks. # alternatively, specify devices to scan, using wildcards if desired. DEVICE partitions # auto-create devices with Debian standard permissions CREATE owner=root group=disk mode=0660 auto=yes # automatically tag new arrays as belonging to the local system HOMEHOST
|
fstab anpassen
Kommentieren Sie die aktuelle /boot-Zeile aus und fügen Sie die neue /dev/md0-Zeile ein:
vi /etc/fstab
| # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # #
|
mtab anpassen
Ersetzen Sie die aktuelle /dev/sda1-Zeile in /etc/mtab durch /dev/md0:
vi /etc/mtab
| /dev/mapper/server1-root / ext3 rw,errors=remount-ro 0 0 tmpfs /lib/init/rw tmpfs rw,nosuid,mode=0755 0 0 proc /proc proc rw,noexec,nosuid,nodev 0 0 sysfs /sys sysfs rw,noexec,nosuid,nodev 0 0 udev /dev tmpfs rw,mode=0755 0 0 tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0 devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0 /dev/md0 /boot ext2 rw 0 0
|
GRUB2 anpassen
Erstellen Sie eine neue GRUB-Snippet-Datei, damit GRUB von RAID bootet:
cp /etc/grub.d/40_custom /etc/grub.d/09_swraid1_setup
vi /etc/grub.d/09_swraid1_setup
| #!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-amd64' --class debian --class gnu-linux --class gnu --class os { insmod raid insmod mdraid insmod part_msdos insmod ext2 set root='(md/0)' echo 'Loading Linux 2.6.32-5-amd64 ...' linux /vmlinuz-2.6.32-5-amd64 root=/dev/mapper/server1-root ro quiet echo 'Loading initial ramdisk ...' initrd /initrd.img-2.6.32-5-amd64 }
|
Wichtig: Ersetzen Sie die Kernelversion (linux/initrd) durch die Ausgabe von uname -r oder prüfen Sie /boot/grub/grub.cfg.
Weil wir keine UUIDs in den Block-Geräten nutzen, setzen Sie in /etc/default/grub:
vi /etc/default/grub
…und aktivieren Sie die Zeile:
GRUB_DISABLE_LINUX_UUID=true
Vor update-grub: Ergänzen Sie /boot/grub/device.map um /dev/sdb, damit update-grub nicht mit einem Device-Map-Fehler abbricht:
vi /boot/grub/device.map
| (hd0) /dev/sda (hd1) /dev/sdb
|
Dann GRUB aktualisieren und initramfs neu erstellen:
update-grub
update-initramfs -u
5 Datenmigration: pvmove und Integration der zweiten Platte
Nun verschieben wir die LVM-Daten von /dev/sda5 nach /dev/md1:
pvmove -i 2 /dev/sda5 /dev/md1
Hinweis: Dieser Vorgang kann längere Zeit dauern. Verwenden Sie -i zur Anzeige des Fortschritts-Intervalls.
Anschließend /dev/sda5 aus der VG entfernen:
vgreduce server1 /dev/sda5
Und /dev/sda5 als PV löschen:
pvremove /dev/sda5
Prüfen Sie den PV-Status erneut:
pvdisplay
Beispielausgabe nach pvmove:
root@server1:~# pvdisplay
— Physical volume —
PV Name /dev/md1
VG Name server1
PV Size 4.76 GiB / not usable 1012.00 KiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 1218
Free PE 0
Allocated PE 1218
PV UUID W4I07I-RT3P-DK1k-1HBz-oJvp-6in0-uQ53KS
root@server1:~#
Ändern Sie den Partitionstyp von /dev/sda5 auf “Linux raid autodetect” und fügen Sie ihn dem Array hinzu:
fdisk /dev/sda
Beispiel-Interaktion:
root@server1:~# fdisk /dev/sda
WARNING: DOS-compatible mode is deprecated. It’s strongly recommended to
switch off the mode (command ‘c’) and change display units to
sectors (command ‘u’).
Command (m for help): <– t
Partition number (1-5): <– 5
Hex code (type L to list codes): <– fd
Changed system type of partition 5 to fd (Linux raid autodetect)
Command (m for help): <– w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
root@server1:~#
Fügen Sie die Partition zum Array hinzu:
mdadm --add /dev/md1 /dev/sda5
Prüfen Sie die Synchronisation:
cat /proc/mdstat
Beispiel während der Replikation:
root@server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sda5[2] sdb5[1]
4989940 blocks super 1.2 [2/1] [_U]
[====>…………….] recovery = 22.5% (1127872/4989940) finish=0.3min speed=161124K/sec
md0 : active raid1 sdb1[1]
248820 blocks super 1.2 [2/1] [_U]
unused devices:
root@server1:~#
Sie können laufend überwachen mit:
watch cat /proc/mdstat
Beenden Sie watch mit STRG+C. Warten Sie, bis beide Arrays [UU] zeigen.
/dev/md0 mounten und /boot kopieren
mkdir /mnt/md0
mount /dev/md0 /mnt/md0
Prüfen:
mount
Beispielausgabe zeigt /dev/md0 auf /boot und /mnt/md0:
root@server1:~# mount
/dev/mapper/server1-root on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/md0 on /boot type ext2 (rw)
/dev/md0 on /mnt/md0 type ext2 (rw)
root@server1:~#
Kopieren Sie den Boot-Inhalt:
cd /boot
cp -dpRx . /mnt/md0
Optionen erklärt: -a/-p/-R erhalten Berechtigungen und Links; -x bleibt auf demselben Dateisystem.
6 Abnahmekriterien
Abnahmekriterien (sinnvolle Prüfungen, bevor Sie neu starten oder das alte Laufwerk entfernen):
- Beide RAID-Arrays zeigen [UU] in /proc/mdstat.
- /dev/md0 ist korrekt in /etc/fstab eingetragen und /boot ist sowohl auf /dev/md0 als auch auf /mnt/md0 identisch.
- mdadm.conf enthält die ARRAY-Einträge und wurde auf weitere Systeme repliziert, falls nötig.
- GRUB wurde aktualisiert (update-grub ohne Fehler) und device.map enthält beide Platten.
- initramfs wurde mit update-initramfs -u neu erzeugt.
- pvs, vgs, lvs zeigen die erwartete Konfiguration und keinen verbleibenden Verweis auf /dev/sda5.
7 Troubleshooting: Häufige Probleme und Lösungen
Fehler: update-grub meldet “Couldn’t find PV pv1. Check your device.map”
Lösung: /boot/grub/device.map muss alle relevanten Geräte auflisten, z. B. (hd0) /dev/sda und (hd1) /dev/sdb. Anschließend update-grub erneut ausführen.
Fehler: Neue Partitionstabelle kann nicht gelesen werden (errno 16)
Lösung: Kernel verwendet noch alte Tabelle. Entweder rebooten, partprobe ausführen oder warten, bis keine offenen Handles mehr bestehen. Vor einem Reboot sicherstellen, dass Sie Zugangskonsolen/Remote-Management haben.
Fehler: RAID synchronisiert sehr langsam
Mögliche Ursachen: I/O-Last, Scheduler-Einstellungen, mdadm-Resync-Rate. Prüfen Sie /proc/sys/dev/raid/speed_limit_min und speed_limit_max. Temporär erhöhen kann Beschleunigung bringen, aber auf Kosten anderer Dienste.
Fehler: Booten scheitert nach Migration
Checks:
- Ist set root=’(md/0)’ korrekt gesetzt?
- Stimmen die Kernel- und initrd-Pfade in GRUB mit den kopierten /boot-Dateien überein?
- Wurde update-initramfs -u ausgeführt, damit mdadm/raid im initramfs vorhanden ist?
8 Playbook / SOP: Schritt-für-Schritt (kompakt)
- Vollständiges Backup erstellen.
- mdadm –create für /dev/md0 und /dev/md1 (missing + /dev/sdbX).
- mkfs.ext2 /dev/md0.
- pvcreate /dev/md1 && vgextend server1 /dev/md1.
- mdadm –examine –scan >> /etc/mdadm/mdadm.conf.
- /etc/fstab und /etc/mtab anpassen, /dev/md0 für /boot eintragen.
- /etc/grub.d/09_swraid1_setup erstellen, /etc/default/grub anpassen, device.map aktualisieren.
- update-grub && update-initramfs -u.
- pvmove /dev/sda5 -> /dev/md1; vgreduce + pvremove auf /dev/sda5.
- fdisk /dev/sda: Partitionstyp 5 -> fd, mdadm –add /dev/md1 /dev/sda5.
- Warten bis beide Arrays synchronisiert sind; mount /dev/md0 und cp -dpRx /boot -> /mnt/md0.
- Tests: Booten von RAID nach Möglichkeit testen (z. B. über Reboot im Wartungsfenster).
9 Rollenbasierte Checklisten
Systemadministrator:
- Backup verifiziert
- mdadm.conf aktualisiert
- GRUB und initramfs aktualisiert
- Synchronisation überwacht
Storage-Operator:
- PV/VG/Logical-Volumes geprüft
- pvmove erfolgreich abgeschlossen
- vgreduce/pvremove durchgeführt
Release-Manager:
- Abnahmekriterien geprüft
- Neustart-Plan/Rollback-Plan bereit
10 Entscheidungshilfe: RAID-Software vs Hardware
Merksatz: Software-RAID (mdadm) ist flexibel, gut dokumentiert und unabhängig vom Controller; Hardware-RAID kann bessere Performance und transparente Boot-Integration bieten, aber ist abhängig vom Controller.
Kurze Entscheidungsheuristik:
- Kleine bis mittlere Server, Multiple OS migrations: Software-RAID mit mdadm.
- Datenbanken mit hoher I/O-Anforderung: Prüfen Sie Hardware-RAID oder schnelle NVMe mit redundanten Backups.
11 Schnellübersicht Befehle (Cheat Sheet)
- mdadm –create /dev/mdX –level=1 –raid-disks=2 missing /dev/sdY
- mkfs.ext2 /dev/md0
- pvcreate /dev/md1
- vgextend server1 /dev/md1
- mdadm –examine –scan >> /etc/mdadm/mdadm.conf
- update-grub
- update-initramfs -u
- pvmove -i 2 /dev/sda5 /dev/md1
- vgreduce server1 /dev/sda5
- pvremove /dev/sda5
- mdadm –add /dev/md1 /dev/sda5
12 Risikoanalyse und Mindermassnahmen
Risiko: Datenverlust bei fehlerhafter Migration. Mitigation: Vollständige Backups, Testlauf in isolierter Umgebung.
Risiko: Bootversagen nach Änderung. Mitigation: /boot parallel mounten, GRUB testen und Rescue-Medium bereit halten.
Risiko: Synchronisation dauert lange und beeinträchtigt Dienste. Mitigation: Wartungsfenster, throttling der Resync-Geschwindigkeit anpassen.
13 Kurze Glossarzeile
mdadm: Verwaltungstool für Software-RAID; LVM: Logical Volume Manager; pvmove: verschiebt LVM-Extents zwischen PVs.
14 Zusammenfassung
- Erstellen Sie /dev/md0 und /dev/md1 mit mdadm, legen Sie /dev/md0 als /boot-Filesystem an und verwenden Sie /dev/md1 als LVM-PV.
- Aktualisieren Sie mdadm.conf, fstab, mtab, GRUB2 und initramfs.
- Migrieren Sie LVM-Daten mit pvmove, fügen Sie die alte Partition dem RAID hinzu und warten Sie auf vollständige Synchronisation.
Wichtig: Testen Sie den Boot-Prozess in einem kontrollierten Wartungsfenster, bevor Sie die alte Platte entfernen.
Hinweis: Diese Anleitung beschreibt ein gängiges Vorgehen; Abweichungen sind je nach Distribution, Kernel-Version und vorhandenem Setup möglich.
Ähnliche Materialien
Squid + DansGuardian: Transparenter Proxy auf Ubuntu

VHD in Windows erstellen – Anleitung

Slow Motion auf jedem Android: Anleitung und Apps

INET_E_RESOURCE_NOT_FOUND in Windows 10 beheben

Papierkorb automatisch leeren in Windows 10
