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

4 Unsere RAID Arrays erstellen

Lass uns nun unsere RAID Arrays /dev/md0 und /dev/md1 erstellen. /dev/sdb1 wird /dev/md0 hinzugefügt und/dev/sdb2 zu /dev/md1. /dev/sda1 und /dev/sda2 können jetzt noch nicht hinzugefügt werden (da das System derzeit auf ihnen ausgeführt wird), daher verwenden wir den Platzhalter missing in folgenden zwei Befehlen:

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 Du zwei degraded RAID Arrays hast ([_U] oder [U_] bedeutet, dass ein Array degraded ist, wohingegen [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]
5036288 blocks [2/1] [_U]

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

unused devices: <none>
[root@server1 ~]#

Als Nächstes erstellen wir ein Dateisystem (ext3) auf unserem nicht-LVM RAID Array /dev/md0:

mkfs.ext3 /dev/md0

Nun kommen wir zu unserem LVM RAID Array /dev/md1. Um es für LVM vorzubereiten, führen wir dies aus:

pvcreate /dev/md1

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

vgextend VolGroup00 /dev/md1

Die Ausgabe von

pvdisplay

sollte nun so ähnlich wie diese aussehen:

[root@server1 ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name VolGroup00
PV Size 4.80 GB / not usable 22.34 MB
Allocatable yes
PE Size (KByte) 32768
Total PE 153
Free PE 1
Allocated PE 152
PV UUID op2n3N-rck1-Pywc-9wTY-EUxQ-KUcr-2YeRJ0

--- Physical volume ---
PV Name /dev/md1
VG Name VolGroup00
PV Size 4.80 GB / not usable 22.25 MB
Allocatable yes
PE Size (KByte) 32768
Total PE 153
Free PE 153
Allocated PE 0
PV UUID pS3xiy-AEnZ-p3Wf-qY2D-cGus-eyGl-03mWyg

[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 9.56 GB
PE Size 32.00 MB
Total PE 306
Alloc PE / Size 152 / 4.75 GB
Free PE / Size 154 / 4.81 GB
VG UUID jJj1DQ-SvKY-6hdr-3MMS-8NOd-pb3l-lS7TA1

[root@server1 ~]#

Als Nächstes erstellen wir /etc/mdadm.conf wie folgt:

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

Die Inhalte der Datei anzeigen:

cat /etc/mdadm.conf

In der Datei solltest Du nun Angaben über unsere beiden (degraded) RAID Arrays sehen:
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=7d2bf9c3:7cd9df21:f782dab8:9212d7cb
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=d93a2387:6355b5c5:25ed3e50:2a0e4f96
Als Nächstes modifizieren wir /etc/fstab. Ersetze LABEL=/boot mit /dev/md0 so dass die Datei wie folgt 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
Ersetze nun /dev/sda1 mit /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
Nun weiter mit dem GRUB Boot Loader. Öffne /boot/grub/menu.lst und füge fallback=1 direkt nach default=0 hinzu:

vi /boot/grub/menu.lst


[...]
default=0 fallback=1 [...]
Das bewirkt, dass, wenn der Kernel nicht startet (das Zählen beginnt bei 0, also ist der erste Kernel 0), 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 am Anfang ein; ersetze root (hd0,0) mit root (hd1,0):
[...]
title Fedora (2.6.23.1-42.fc8) root (hd1,0) kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.23.1-42.fc8.img title Fedora (2.6.23.1-42.fc8) root (hd0,0) kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.23.1-42.fc8.img
Die gesamte Datei sollte in etwa so aussehen:
# grub.conf generated by anaconda
# # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00 # initrd /initrd-version.img #boot=/dev/sda default=0 fallback=1 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Fedora (2.6.23.1-42.fc8) root (hd1,0) kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.23.1-42.fc8.img title Fedora (2.6.23.1-42.fc8) root (hd0,0) kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.23.1-42.fc8.img
root (hd1,0) verweist auf /dev/sdb was bereits Teil unseres RAID Arrays ist. Wir werden das Systemen 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:

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

5 Unsere Daten auf die RAID Arrays verschieben

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

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

pvmove /dev/sda2 /dev/md1

Das kann etwas dauern, sei also etwas geduldig.

Danach entfernen wir /dev/sda2 aus der Volume Group VolGroup00...

vgreduce VolGroup00 /dev/sda2

... und teilen dem System mit, dass es /dev/sda2 nicht mehr für LVM verwenden soll:

pvremove /dev/sda2

Die Ausgabe von

pvdisplay

sollte nun wie folgt aussehen:

[root@server1 ~]# pvdisplay
--- Physical volume ---
PV Name /dev/md1
VG Name VolGroup00
PV Size 4.80 GB / not usable 22.25 MB
Allocatable yes
PE Size (KByte) 32768
Total PE 153
Free PE 1
Allocated PE 152
PV UUID pS3xiy-AEnZ-p3Wf-qY2D-cGus-eyGl-03mWyg

[root@server1 ~]#

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

fdisk /dev/sda

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


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

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

Sieh Dir nun

cat /proc/mdstat

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

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

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

unused devices: <none>
[root@server1 ~]#

(Du kannst Folgendes ausführen

watch cat /proc/mdstat

um eine 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:

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

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

unused devices: <none>
[root@server1 ~]#

).

Lass uns nun /dev/md0 einhängen:

mkdir /mnt/md0

mount /dev/md0 /mnt/md0

Das Array solltest Du nun in der Ausgabe von Folgendem finden

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

Nun kopieren wir die Inhalte von /dev/sda1 nach /dev/md0 (das 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)"... 16 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/grub/stage2 /grub/grub.conf"... 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)"... 16 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd1) (hd1)1+16 p (hd1,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.

grub>

quit

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

reboot


0 Kommentar(e)

Zum Posten von Kommentaren bitte