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:~#