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


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

3 Kommentar(e)

Zum Posten von Kommentaren bitte

Kommentare

Von: klabog

Ausgezeichnetes HowTo!
Allerdings hat Dir der Editor offensichtlich gelegentlich Streiche gespielt. Die zwei -- vor einigen Optionen stehen als – im Text. Ich habe erst nach einigem Grübeln herausbekommen warum das Copy und Past der Befehle nicht funktioniert.
Noch ein Vorschlag:
Ich weiß zwar, dass die vorgestellte Situation nur beispielhaft ist, aber besser wäre es vielleicht, das Beispiel mit /dev/sda und /dev/sdc vorzustellen und darauf hinzuweisen, dass ein Raid1 mit beiden Platten an einem Controller ausfällt wenn dieser kaputt geht, aber nicht wenn die Platten auf die Controller aufgeteilt sind!
Grüße, Klaus


Von: klabog

Tja, es ist wirklich der Editor! Der verbindet zwei Minus automatisch! Wie kann man das abschalten?
Klaus


Von: Till

Hi,

ich habe das Problem auch erst vor kurzem entdeckt, habe dafür leider noch keine Lösung gefunden. Der Editor im Wordpress ersetzt -- durch einen HTML Code. Ich werde in den nächsten tagen mal das Wordpress updaten und mich dann mal durch den Code des HTML Editors lesen, um zu sehen wo er das ändert.

Grüße,

Till