Technologieführer

RAID-Arrays erstellen und Daten auf RAID verschieben

7 min read Systemadministration Aktualisiert 29 Sep 2025
RAID-Arrays erstellen & Daten migrieren
RAID-Arrays erstellen & Daten migrieren

Kurzfassung: Dieses Kapitel zeigt, wie Sie zwei RAID1-Arrays (/dev/md0 und /dev/md1) mit mdadm anlegen, /dev/md1 für LVM vorbereiten, die Systemkonfiguration anpassen und anschließend die Daten von /dev/sda auf /dev/sdb migrieren. Lesen Sie vor dem Reboot die Checkliste und halten Sie ein Notfallmedium bereit.

Wichtige Begriffe in einer Zeile

  • RAID1: Spiegelung (Mirror) zweier Blöcke zur Redundanz.
  • mdadm: Linux-Werkzeug zur Verwaltung von Software-RAID.
  • LVM: Logical Volume Manager zur flexiblen Partitionierung.

Kontext und Ziel

Wir erstellen zwei RAID1-Arrays: /dev/md0 für /boot (nicht-LVM) und /dev/md1 als physikalisches Volume für LVM. /dev/sdb1 und /dev/sdb2 werden sofort verwendet; /dev/sda1 und /dev/sda2 sind noch aktiv und können zunächst nicht in die Arrays aufgenommen werden, deshalb verwenden wir bei der Erstellung den Platzhalter missing. Nach der Anlage passen wir Systemkonfigurationen (mdadm.conf, fstab, mtab, GRUB) an, verschieben die LVM-Daten und fügen schließlich die alten /dev/sda-Partitionen zum RAID hinzu.

Important: Führen Sie diese Schritte nur mit aktuellem Backup aus. Ein Reboot ist erforderlich und im Fehlerfall benötigen Sie ein Rettungsmedium.


4 RAID-Arrays erstellen

Nun legen wir unsere RAID-Arrays /dev/md0 und /dev/md1 an. /dev/sdb1 wird /dev/md0 hinzugefügt und /dev/sdb2 zu /dev/md1. /dev/sda1 und /dev/sda2 können jetzt nicht hinzugefügt werden (das System läuft momentan darauf), deshalb verwenden wir bei den folgenden Befehlen 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/sdb2

Der Befehl

cat /proc/mdstat

sollte nun anzeigen, dass Sie zwei degradiere RAID-Arrays haben ([U] oder [U] bedeutet, dass ein Array degradiert ist; [UU] bedeutet, dass das Array in Ordnung ist):

[root@server1 ~]# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdb2[1]
10377920 blocks [2/1] [_U]

md0 : active raid1 sdb1[1]
104320 blocks [2/1] [_U]

unused devices: 
[root@server1 ~]#

Dateisystem auf /dev/md0 anlegen

Erstellen Sie ein ext3-Dateisystem auf dem nicht-LVM-RAID /dev/md0:

mkfs.ext3 /dev/md0

/dev/md1 für LVM vorbereiten

Um /dev/md1 für LVM nutzbar zu machen, führen Sie aus:

pvcreate /dev/md1

Dann erweitern Sie die Volume Group VolGroup00 um das neue PV:

vgextend VolGroup00 /dev/md1

Die Ausgabe von

pvdisplay

sollte nun ähnlich aussehen:

[root@server1 ~]# pvdisplay
--- Physical volume ---
PV Name               /dev/sda2
VG Name               VolGroup00
PV Size               9.90 GB / not usable 22.76 MB
Allocatable           yes (but full)
PE Size (KByte)       32768
Total PE              316
Free PE               0
Allocated PE          316
PV UUID               aikFEP-FB15-nB9C-Nfq0-eGMG-hQid-GOsDuj

--- Physical volume ---
PV Name               /dev/md1
VG Name               VolGroup00
PV Size               9.90 GB / not usable 22.69 MB
Allocatable           yes
PE Size (KByte)       32768
Total PE              316
Free PE               316
Allocated PE          0
PV UUID               u6IZfM-5Zj8-kFaG-YN8K-kjAd-3Kfv-0oYk7J

[root@server1 ~]#

Die Ausgabe von

vgdisplay

sollte wie folgt aussehen:

[root@server1 ~]# vgdisplay
--- Volume group ---
VG Name               VolGroup00
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               19.75 GB
PE Size               32.00 MB
Total PE              632
Alloc PE / Size       316 / 9.88 GB
Free  PE / Size       316 / 9.88 GB
VG UUID               ZPvC10-cN09-fI0S-Vc8l-vOuZ-wM6F-tlz0Mj

[root@server1 ~]#

mdadm-Konfiguration erzeugen

Erzeugen Sie /etc/mdadm.conf mit den aktuellen Arrays:

mdadm --examine --scan > /etc/mdadm.conf

Anzeigen des Inhalts:

cat /etc/mdadm.conf

In der Datei sollten Sie nun Details zu unseren (degradierten) RAID-Arrays sehen, z. B.:

ARRAY /dev/md0 level=raid1 num-devices=2 UUID=0a96be0f:bf0f4631:a910285b:0f337164
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=f9e691e2:8d25d314:40f42444:7dbe1da1

/etc/fstab anpassen

Ersetzen Sie LABEL=/boot durch /dev/md0, sodass /etc/fstab in etwa so aussieht:

vi /etc/fstab
/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1
/dev/md0             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0

/etc/mtab anpassen

Ersetzen Sie /dev/sda1 durch /dev/md0 in /etc/mtab:

vi /etc/mtab
/dev/mapper/VolGroup00-LogVol00 / ext3 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
/dev/md0 /boot ext3 rw 0 0
tmpfs /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0

GRUB konfigurieren (Fallback und zweiter Boot-Eintrag)

Öffnen Sie /boot/grub/menu.lst und fügen Sie fallback=1 direkt nach default=0 hinzu:

vi /boot/grub/menu.lst
[...]
default=0
fallback=1
[...]

Dadurch wird beim Fehlschlag des primären Kernels ein alternativer Eintrag gebootet.

Weiter unten kopieren Sie den ersten Kernel-Block und fügen ihn als ersten Eintrag ein, ändern root (hd0,0) zu root (hd1,0). Beispiel:

[...]
title CentOS (2.6.18-128.el5)
        root (hd1,0)
        kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/VolGroup00/LogVol00
        initrd /initrd-2.6.18-128.el5.img
title CentOS (2.6.18-128.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/VolGroup00/LogVol00
        initrd /initrd-2.6.18-128.el5.img

root (hd1,0) bezieht sich auf /dev/sdb, das bereits Teil der RAID-Arrays ist. Nach diesen Änderungen wird das System versuchen, von den (noch degradierten) RAID-Arrays zu booten. Falls das fehlschlägt, springt GRUB auf /dev/sda (fallback=1).

Initramfs anpassen

Sichern und neu erstellen des Ramdisks für den aktuellen Kernel:

mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig
mkinitrd /boot/initrd-`uname -r`.img `uname -r`

5 Daten auf die RAID-Arrays verschieben

Nachdem alle Konfigurationsdateien angepasst wurden, kopieren wir den Inhalt von /dev/sda nach /dev/sdb (einschließlich der zuvor geänderten Konfigurationsdateien).

LVM-Daten mit pvmove verschieben

Um den Inhalt der LVM-Partition /dev/sda2 auf das LVM-RAID /dev/md1 zu verschieben, verwenden Sie:

pvmove /dev/sda2 /dev/md1

Hinweis: Dieser Vorgang kann einige Zeit dauern — bitte Geduld.

Anschließend entfernen wir /dev/sda2 aus der Volume Group VolGroup00:

vgreduce VolGroup00 /dev/sda2

und teilen dem System mit, dass /dev/sda2 nicht länger als LVM-PV genutzt werden soll:

pvremove /dev/sda2

Die Ausgabe von

pvdisplay

sollte jetzt nur noch /dev/md1 zeigen:

[root@server1 ~]# pvdisplay
--- Physical volume ---
PV Name               /dev/md1
VG Name               VolGroup00
PV Size               9.90 GB / not usable 22.69 MB
Allocatable           yes (but full)
PE Size (KByte)       32768
Total PE              316
Free PE               0
Allocated PE          316
PV UUID               u6IZfM-5Zj8-kFaG-YN8K-kjAd-3Kfv-0oYk7J

[root@server1 ~]#

Partitionstyp ändern und altes /dev/sda2 als RAID hinzufügen

Ändern Sie den Partitionstyp von /dev/sda2 auf “fd” (Linux raid autodetect) mit fdisk:

fdisk /dev/sda

Beispiel-Dialog (Eingaben mit <– markiert):

[root@server1 ~]# fdisk /dev/sda

The number of cylinders for this disk is set to 1305.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): <-- t
Partition number (1-4): <-- 2
Hex code (type L to list codes): <-- fd
Changed system type of partition 2 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.
Syncing disks.
[root@server1 ~]#

Dann fügen Sie /dev/sda2 dem RAID-Array hinzu:

mdadm --add /dev/md1 /dev/sda2

Anschließend sollten Sie in /proc/mdstat die laufende Synchronisation sehen:

cat /proc/mdstat

Beispielausgabe während Recovery:

[root@server1 ~]# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sda2[2] sdb2[1]
10377920 blocks [2/1] [_U]
[====>................]  recovery = 23.4% (2436544/10377920) finish=2.0min speed=64332K/sec

md0 : active raid1 sdb1[1]
104320 blocks [2/1] [_U]

unused devices: 
[root@server1 ~]#

Tipp: Überwachen Sie die Synchronisation laufend mit:

watch cat /proc/mdstat

Zum Beenden von watch drücken Sie CTRL+C.

Warten Sie, bis die Synchronisation abgeschlossen ist. Dann sollte /proc/mdstat etwa so aussehen:

[root@server1 ~]# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sda2[0] sdb2[1]
10377920 blocks [2/2] [UU]

md0 : active raid1 sdb1[1]
104320 blocks [2/1] [_U]

unused devices: 
[root@server1 ~]#

/dev/md0 mounten und /boot kopieren

Erstellen Sie ein temporäres Mountpoint und mounten Sie /dev/md0:

mkdir /mnt/md0
mount /dev/md0 /mnt/md0

Prüfen Sie die Ergebnisse mit mount:

[root@server1 ~]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/md0 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/md0 on /mnt/md0 type ext3 (rw)
[root@server1 ~]#

Kopieren Sie nun den Inhalt von /boot nach /mnt/md0:

cd /boot
cp -dpRx . /mnt/md0

cp-Optionen:

  • -d: Verknüpfungen beibehalten
  • -p: Berechtigungen, Zeitstempel, Besitzer beibehalten
  • -R: rekursiv
  • -x: nur innerhalb des Dateisystems

Checkliste vor dem Reboot

  • Backup: Funktionierendes, getestetes Backup vorhanden.
  • mdadm.conf: /etc/mdadm.conf wurde mit mdadm –examine –scan erzeugt.
  • fstab/mtab: /dev/md0 ist in /etc/fstab und /etc/mtab eingetragen.
  • GRUB: fallback=1 gesetzt; ein alternativer Kernel-Eintrag für root (hd1,0) existiert.
  • initramfs: Neue initrd für aktuellen Kernel erstellt.
  • Synchronisation: RAID-Synchronisation ist abgeschlossen ([UU] für md1 und später auch md0).
  • Rettungsmedium: Live-CD / Rescue-USB griffbereit.

Important: Rebooten Sie erst, wenn alle oben genannten Punkte bestätigt sind.


Rollback- und Notfallplan (Kurz)

  1. Falls das System nicht bootet, starten Sie von Ihrem Rettungsmedium.
  2. Mounten Sie root-Volume (LVM) und /boot (ggf. von /dev/sda) und prüfen Sie /etc/fstab und /boot/grub/menu.lst.
  3. Starten Sie grub-install erneut, wenn nötig, und prüfen Sie die RAID-Erkennung mit mdadm –assemble –scan.
  4. Prüfen Sie /proc/mdstat und dmesg auf Hardwarefehler.

Fehlerfälle und Troubleshooting

Wann es fehlschlägt

  • RAID bleibt degraded (_U) und synchronisiert nicht: Prüfen Sie Kabel, SMART, dmesg, und mdadm –detail /dev/mdX.
  • GRUB bootet nicht von RAID: Vergewissern Sie sich, dass der Bootloader auf beiden Platten installiert ist (grub-install /dev/sda und grub-install /dev/sdb).
  • pvmove bricht ab: Prüfen Sie freien Speicherplatz in der Ziel-VG, I/O-Fehler, und starten Sie pvmove mit –abort, falls nötig.

Typische Befehle zur Diagnose

mdadm --detail /dev/md1
mdadm --examine /dev/sda2 /dev/sdb2
dmesg | tail -n 50
smartctl -a /dev/sda
pvdisplay -m
lvdisplay

Hinweis: Bei I/O-Fehlern prüfen Sie Kabel, Controller und SMART-Werte. Tauschen Sie problematische Medien aus, bevor Sie ein RAID rebuilden.


Alternative Ansätze

  • Asynchrone Migration: Statt pvmove kann man Daten auf eine temporäre VG kopieren und LogVolumes neu erstellen, falls pvmove nicht möglich ist.
  • Kernel- und Boot-Manager: Statt älterer GRUB-Konfigurationen moderne Bootloader (GRUB2, systemd-boot) verwenden, wenn Distribution und Boot-Setup das erlauben.
  • RAID-Level: RAID10 statt RAID1, wenn mehr Platten und Performance/Redundanz-Anforderungen bestehen.

Mentale Modelle und Heuristiken

  • “Mirror first, sync later”: Erstellen Sie das Mirror-Array mit missing und bringen erst dann die zweite Platte online, wenn sie verfügbar ist.
  • “Always have fallback”: Konfigurieren Sie einen alternativen Boot-Eintrag und halten Sie ein Rettungsmedium bereit.
  • “Observable state is king”: Überwachen Sie /proc/mdstat, pvdisplay, vgdisplay regelmäßig während Migration.

Rollenbasierte Checkliste

Sysadmin (Planung)

  • Backup validiert
  • Wartungsfenster kommuniziert
  • Ersatzplatten / Kabel verfügbar

Operator (Durchführung)

  • Befehle ausführen und Output protokollieren
  • RAID-Sync überwachen
  • Reboot & Post-Checks durchführen

Support (Im Notfall)

  • Rettungssystem vorbereiten
  • Logs prüfen (dmesg, journalctl)

Kurze Sicherheits- und Datenschutzhinweise

  • Dieses Verfahren verändert Partitionen und Filesysteme. Es betrifft keine personenbezogenen Daten per se, aber beachtet organisatorische Backup-/Retention-Policies.
  • Stellen Sie sicher, dass Backups verschlüsselt sind, falls sensible Daten betroffen sind.

Kurze Begriffserklärung (Glossar)

  • RAID1: Spiegelung (Mirror) zweier Platten.
  • mdadm: Tool zur Software-RAID-Verwaltung unter Linux.
  • pvcreate/vgextend/pvmove: LVM-Werkzeuge zum Anlegen von Physical Volumes, Erweitern von Volume Groups und Verschieben von PVs.

Kommandos Quick-Cheat-Sheet

  • mdadm erstellen: mdadm –create /dev/mdX –level=1 –raid-disks=2 missing /dev/sdY
  • Dateien scannen: mdadm –examine –scan > /etc/mdadm.conf
  • PV anlegen: pvcreate /dev/md1
  • VG erweitern: vgextend VolGroup00 /dev/md1
  • Daten verschieben: pvmove /dev/sda2 /dev/md1
  • RAID hinzufügen: mdadm –add /dev/md1 /dev/sda2
  • RAID-Status: cat /proc/mdstat

Kriterien für Erfolg

  • /dev/md1 und /dev/md0 sind beide [UU] in /proc/mdstat (vollständig synchronisiert).
  • /boot liegt auf /dev/md0 und ist über /etc/fstab korrekt eingetragen.
  • LVM verwendet ausschließlich /dev/md1 (pvdisplay zeigt nur /dev/md1 als PV der VG).
  • System bootet ohne manuelle Rettungsmaßnahmen vom RAID-Setup.

Zusammenfassung

  • Erstellen Sie die RAID-Arrays mit mdadm, initial mit missing, und erstellen Sie ein Dateisystem für /dev/md0.
  • Bereiten Sie /dev/md1 für LVM vor und erweitern Sie die Volume Group.
  • Aktualisieren Sie mdadm.conf, /etc/fstab, /etc/mtab und GRUB (Fallback) und bauen Sie eine neue initrd.
  • Verschieben Sie LVM-Daten mit pvmove, entfernen Sie /dev/sda2 aus der VG und fügen Sie sie dem RAID hinzu.
  • Überwachen Sie die RAID-Synchronisation bis zum Status [UU] und kopieren Sie /boot auf das neue /dev/md0.

Wichtig: Testen Sie das Booten nach Änderungen in einer abgesicherten Umgebung oder außerhalb der Produktivzeiten.


Autor
Redaktion

Ähnliche Materialien

Windows-Registry sichern & wiederherstellen
Windows Support

Windows-Registry sichern & wiederherstellen

So findest du Beiträge, die dir auf Instagram gefallen haben
Soziale Medien

So findest du Beiträge, die dir auf Instagram gefallen haben

WhatsApp: Spracheingabe mit Gboard & SwiftKey
Anleitung

WhatsApp: Spracheingabe mit Gboard & SwiftKey

IMDb: Gemeinsame Suche für Filme, Cast & Crew
Film Recherche

IMDb: Gemeinsame Suche für Filme, Cast & Crew

Zitat auf dem Desktop mit Rainmeter anzeigen
How-to

Zitat auf dem Desktop mit Rainmeter anzeigen

NFS auf AlmaLinux 9 einrichten
Linux NFS

NFS auf AlmaLinux 9 einrichten