Aufsetzen von Software RAID1 auf einem bereits installierten LVM System (inkl. GRUB Konfiguration) (Debian Etch)

Dann fügen wir /dev/md1 unserer Volume Group debian hinzu:

vgextend debian /dev/md1

Die Ausgabe von

pvdisplay

sollte nun so ähnlich wie diese sein:

server1:~# pvdisplay
— Physical volume —
PV Name /dev/sda5
VG Name debian
PV Size 4.75 GB / not usable 0
Allocatable yes (but full)
PE Size (KByte) 4096
Total PE 1217
Free PE 0
Allocated PE 1217
PV UUID l2G0xJ-b9JF-RLsZ-bbcd-yRGd-kHfl-QFSpdg

— Physical volume —
PV Name /dev/md1
VG Name debian
PV Size 4.75 GB / not usable 0
Allocatable yes
PE Size (KByte) 4096
Total PE 1217
Free PE 1217
Allocated PE 0
PV UUID YAnBb4-NJdb-aM68-Ks22-g851-IshG-bNgOXp

server1:~#

Die Ausgabe von

vgdisplay

sollte wie folgt sein:

server1:~# vgdisplay
— Volume group —
VG Name debian
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.51 GB
PE Size 4.00 MB
Total PE 2434
Alloc PE / Size 1217 / 4.75 GB
Free PE / Size 1217 / 4.75 GB
VG UUID j5BV1u-mQSa-Q0KW-PH4n-VHab-DB92-LyxFIU

server1:~#

Als Nächstes müssen wir /etc/mdadm/mdadm.conf (was noch keine Informationen über unsere neuen RAID Arrays enthält) der neuen Situation anpassen:

cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm –examine –scan >> /etc/mdadm/mdadm.conf

Die Inhalte der Datei anzeigen lassen:

cat /etc/mdadm/mdadm.conf

In der Datei solltest Du nun Angaben über unsere beiden (degraded) RAID Arrays finden:

# 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 <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays

# This file was auto-generated on Tue, 18 Mar 2008 19:28:19 +0100
# by mkconf $Id: mkconf 261 2006-11-09 13:32:35Z madduck $
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=6fe4b95e:4ce1dcef:01b5209e:be9ff10a
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=aa4ab7bb:df7ddb72:01b5209e:be9ff10a

Als Nächstes modifizieren wir /etc/fstab. Ersetze /dev/sda1 mit /dev/md0 so dass die Datei wie folgt aussieht:

vi /etc/fstab

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/mapper/debian-root /               ext3    defaults,errors=remount-ro 0       1
/dev/md0       /boot           ext3    defaults        0       2
/dev/mapper/debian-swap_1 none            swap    sw              0       0
/dev/hdc        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

Ersetze als Nächstes /dev/sda1 mit /dev/md0 in /etc/mtab:

vi /etc/mtab

/dev/mapper/debian-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 ext3 rw 0 0

Nun weiter mit dem GRUB Boot Loader. Öffne /boot/grub/menu.lst und füge fallback 1 gleich nach default 0 ein:

vi /boot/grub/menu.lst

[...]
default         0
fallback        1
[...]

Das bewirkt, dass, wenn der erste Kernel (das Zählen beginnt bei 0, also ist der erste Kernel 0) ausfällt, Kernel #2 gestartet wird.

Begib Dich in der gleichen Datei ans Ende, wo Du einige Kernel Zeilen finden solltest. Kopiere den ersten Bereich und füge diese Kopie vor der ersten Zeile ein; ersetze root (hd0,0) mit root (hd1,0):

[...]
## ## End Default Options ##

title           Debian GNU/Linux, kernel 2.6.18-6-686
root            (hd1,0)
kernel          /vmlinuz-2.6.18-6-686 root=/dev/mapper/debian-root ro
initrd          /initrd.img-2.6.18-6-686
savedefault

title           Debian GNU/Linux, kernel 2.6.18-6-686
root            (hd0,0)
kernel          /vmlinuz-2.6.18-6-686 root=/dev/mapper/debian-root ro
initrd          /initrd.img-2.6.18-6-686
savedefault

title           Debian GNU/Linux, kernel 2.6.18-6-686 (single-user mode)
root            (hd0,0)
kernel          /vmlinuz-2.6.18-6-686 root=/dev/mapper/debian-root ro single
initrd          /initrd.img-2.6.18-6-686
savedefault

### END DEBIAN AUTOMAGIC KERNELS LIST

root (hd1,0) verweist auf /dev/sdb was bereits Teil unserer RAID Arrays ist. Wir werden das System in wenigen Minuten neu starten; das System wird dann versuchen, von unseren (immer noch degraded) RAID Arrays zu starten; wenn dies fehlschlägt, startet es von /dev/sda (-> fallback 1).

Als Nächstes passen wir unsere Ramdisk der neuen Situation an:

update-initramfs -u

5 Unsere Daten zu den RAID Arrays verschieben

Da wir nun alle Konfigurationsdateien modifiziert haben, können wir die Inhlate von /dev/sda nach /dev/sdb kopieren (inklusiver der Änderungen in der Konfiguration, die wir im vorherigen Kapitel vorgenommen haben).

Um die Inhalte unserer LVM Partition /dev/sda5 auf unser LVM RAID Array /dev/md1 zu verschieben, verwenden wir den pvmove Befehl:

pvmove /dev/sda5 /dev/md1

Das kann etwas dauern, gedulde Dich also bitte.

Danach entfernen wir /dev/sda5 aus der Volume Group debian…

vgreduce debian /dev/sda5

… und teilen den System mit, dass es /dev/sda5 für LVM nicht mehr verwenden soll:

pvremove /dev/sda5

Die Ausgabe von

pvdisplay

sollte nun wie folgt sein:

server1:~# pvdisplay
— Physical volume —
PV Name /dev/md1
VG Name debian
PV Size 4.75 GB / not usable 0
Allocatable yes (but full)
PE Size (KByte) 4096
Total PE 1217
Free PE 0
Allocated PE 1217
PV UUID YAnBb4-NJdb-aM68-Ks22-g851-IshG-bNgOXp

server1:~#

Als Nächstes ändern wir den Partitionstyp von /dev/sda5 auf Linux raid autodetect und fügen /dev/sda5 dem /dev/md1 Array hinzu:

fdisk /dev/sda

server1:~# fdisk /dev/sda

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.
Syncing disks.
server1:~#

mdadm –add /dev/md1 /dev/sda5

Sieh Dir nun Folgendes an

cat /proc/mdstat

… und Du müsstest feststellen, dass das RAID Array /dev/md1 synchronisiert wird:

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sda5[2] sdb5[1]
4988032 blocks [2/1] [_U]
[==========>……….] recovery = 52.5% (2623232/4988032) finish=0.5min speed=74705K/sec

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

unused devices: <none>
server1:~#

(Du kannst Folgendes ausführen

watch cat /proc/mdstat

um einen fortlaufende Ausgabe des Prozesses zu erhalten. Um watch zu verlassen, drücke STRG+C.)

Warte bis die synchronisation abgeschlossen ist (die Ausgabe sollte dann wie folgt aussehen:

server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sda5[0] sdb5[1]
4988032 blocks [2/2] [UU]

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

unused devices: <none>
server1:~#

).

Lass uns nun /dev/md0 einhängen:

mkdir /mnt/md0

mount /dev/md0 /mnt/md0

Du solltest nun das Array in der Ausgabe von Folgendem sehen

mount

server1:~# mount
/dev/mapper/debian-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 ext3 (rw)
/dev/md0 on /mnt/md0 type ext3 (rw)
server1:~#

Nun kopieren wir die Inhalte von /dev/sda1 nach /dev/md0 (was auf /mnt/md0 eingehängt ist):

cd /boot
cp -dpRx . /mnt/md0

6 GRUB vorbereiten

Danach müssen wir den GRUB Bootloader auf der zweiten Festplatte /dev/sdb installieren:

grub

Gib in der GRUB Kommandozeile folgende Befehle ein:

root (hd0,0)

grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0x83

grub>

setup (hd0)

grub> setup (hd0)
Checking if „/boot/grub/stage1“ exists… no
Checking if „/grub/stage1“ exists… yes
Checking if „/grub/stage2“ exists… yes
Checking if „/grub/e2fs_stage1_5“ exists… yes
Running „embed /grub/e2fs_stage1_5 (hd0)“… 15 sectors are embedded.
succeeded
Running „install /grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/grub/stage2 /grub/menu.lst“… succeeded
Done.

grub>

root (hd1,0)

grub> root (hd1,0)
Filesystem type is ext2fs, partition type 0xfd

grub>

setup (hd1)

grub> setup (hd1)
Checking if „/boot/grub/stage1“ exists… no
Checking if „/grub/stage1“ exists… yes
Checking if „/grub/stage2“ exists… yes
Checking if „/grub/e2fs_stage1_5“ exists… yes
Running „embed /grub/e2fs_stage1_5 (hd1)“… 15 sectors are embedded.
succeeded
Running „install /grub/stage1 (hd1) (hd1)1+15 p (hd1,0)/grub/stage2 /grub/menu.lst“… succeeded
Done.

grub>

quit

Wieder zurück in der normalen Kommandozeile, wir starten das System neu und hoffen, dass es gut von unseren RAID Arrays startet:

reboot

7 /dev/sda vorbereiten

Wenn alles gut klappt, solltest Du /dev/md0 in der Ausgabe von Folgendem finden

df -h

server1:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/debian-root
4.5G 709M 3.6G 17% /
tmpfs 126M 0 126M 0% /lib/init/rw
udev 10M 68K 10M 1% /dev
tmpfs 126M 0 126M 0% /dev/shm
/dev/md0 236M 18M 206M 9% /boot
server1:~#

Die Ausgabe von

cat /proc/mdstat

sollte wie folgt sein:

server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda5[0] sdb5[1]
4988032 blocks [2/2] [UU]

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

unused devices: <none>
server1:~#

Die Ausgaben von pvdisplay, vgdisplay und lvdisplay sollten wie folgt sein:

pvdisplay

server1:~# pvdisplay
— Physical volume —
PV Name /dev/md1
VG Name debian
PV Size 4.75 GB / not usable 0
Allocatable yes (but full)
PE Size (KByte) 4096
Total PE 1217
Free PE 0
Allocated PE 1217
PV UUID YAnBb4-NJdb-aM68-Ks22-g851-IshG-bNgOXp

server1:~#

Das könnte dich auch interessieren …