Archive for Juli, 2007

Slackware 12 mit RAID und LVM

Juli 6, 2007

Am 2.7. ist nun Slackware die 12te erschienen. Zu dem Zeitpunkt wo ich es runtergeladen habe waren auf den FTP mirrors noch keine ISO Image verfügbar. So habe ich die „Install ISO disk 1“ mit Bittorrent heruntergeladen.

Inzwischen gibt es aber auch die iso Dateien zum Download.

z.B. hier – ftp://ftp.wh8.tu-dresden.de/pub/linux/distributions/slackware/slackware-12.0-iso

Der Server hatte bis jetzt die 11 laufen. Da ich jetzt auch den Hardware Unterbau geändert (verbessert) habe wird das System komplett neu aufgebaut.

Die zwei Festplatten laufen wieder als Raid1 Verbund. /dev/md0 ist /boot mit knapp 100 mb, /dev/md1 ist der SWAP mit 1gb und /dev/md2 ist ein Physical Volume für den LVM.

LVM habe ich deswegen gewählt, da ich Xen einrichten will und die DomU’s nicht im Loopback-Devices laufen sollen (zu langsam). Bis jetzt ist nur ein Logical Volume eingerichtet und das ist die dom0 mit Slackware 12.0.

Die Einrichtung des Raid und des LVM ging problemlos. Anschließend „setup“ ausführen und /dev/vg0/dom0 als Setup Pfad wählen. Wenn die Prozedur vorbei wird es erst richtig spannend!

Damit Slackware von einem LVM bootet muss man den Anweisungen aus der README_LVM.TXT folgen. Im genauen sind das folgende Schritte:

# mount -o bind /proc /mnt/proc

# mount -o bind /sys /mnt/sys

# chroot /mnt

# vgscan –mknodes

Als nächstes soll man mit mkinitrd eine initrd für lilo erstellen. Das Problem ist, dass bei der Standard initrd die das Skript erstellt der Raid Support fehlt. Deswegen muss man etwas Handarbeit anlegen.

Wenn wir im chroot sind wechseln wird in das Verzeichnis „/usr/share/mkinitrd/“.

# cd /usr/share/mkinitrd/

Der Befehl mkinitrd benutzt die Datei „initrd-tree.tar.gz“ um den Dateibaum (tree) der Initrd aufzubauen. Diesen editieren wir jetzt.

# mkdir newinitrd && cd newinitrd

# tar -xzvf ../initrd-tree.tar.gz

Der Ordner Inhalt sieht jetzt ungefähr so aus:

# ls
bin/ etc/ initrd-name load_kernel_modules* mnt/ rootdev sys/
dev/ init* lib/ luksdev proc/ rootfs

Wir kopieren nun die notwendigen Config-Files:

# cp -r /etc/lvm/ etc/

Wichtig ist außerdem die folgen Zeile in der lvm.conf!

md_component_detection = 1

Damit in der initrd das Raidarray wieder erstellt werden kann, wird in der „init“ der „mdadm“ Befehl eingebunden. Ein Ausschnitt (nur ein Beispiel!):

# vi init

[…]

# rebuild RAID ARRAY

/sbin/mdadm –assemble /dev/md2 /dev/hda3 /dev/hdb3
/sbin/mdadm –assemble /dev/md0 /dev/hda2 /dev/hdb2
/sbin/mdadm –assemble /dev/md1 /dev/hda1 /dev/hdb1

# Initialize LVM:
if [ -x /sbin/vgscan ]; then
/sbin/vgscan –mknodes -v –ignorelockingfailure
sleep 10
/sbin/vgchange -ay -v –ignorelockingfailure
fi

[…]

Damit ist der initrd-tree fertig es muss jetzt nur noch in das passende Archiv gepackt werden.

# mv ../initrd-tree.tar.gz ../initrd-tree.tar.gz.back

# tar -czf ../initrd-tree.tar.gz ./

Schlussendlich muss nur noch die „/sbin/mkinitrd“ angepasst werden, damit das „init“ Skript auch eine „mdadm“ Binary zum ausführen hat. Wieder ein Ausschnitt:

# vi /sbin/mkinitrd

[…]

# Include LVM support in initrd
if [ ! -z „$LVM“ ]; then
if [ -f /sbin/lvm.static ]; then
mkdir -p $SOURCE_TREE/sbin
cp /sbin/lvm.static $SOURCE_TREE/sbin/lvm.static
cp /sbin/mdadm $SOURCE_TREE/sbin/
( cd $SOURCE_TREE/sbin
ln -s lvm.static vgchange
ln -s lvm.static vgscan )
if ! echo ${MODULE_LIST} | grep -q dm-mod ; then
MODULE_LIST=“$MODULE_LIST:dm-mod“
fi
else
echo „LVM static binary is missing, LVM support isn’t installed“
fi
fi
[…]

Sichern und einfach weiter in der Anleitung!

# mkinitrd -c -k 2.6.21.5-smp -m reiserfs -f reiserfs -r /dev/vg0/dom0 -L

In „/boot/initrd-tree“ kann man prüfen ob alles seine Richtigkeit hat (/boot/initrd-tree/etc/lvm/ und /boot/initrd-tree/sbin/mdadm).

Zum Schluss dann noch die lilo.conf anpassen (initrd = /boot/initrd.gz) und lilo den MBR schreiben lassen.

# lilo

Warning: ‚/proc/partitions‘ does not match ‚/dev‘ directory structure.
Name change: ‚/dev/dm-0‘ -> ‚/dev/vg0/dom0‘
Added Linux *
The boot record of /dev/md0 has been updated.
The boot record of /dev/hda has been updated.
Warning: /dev/hdb is not on the first disk
The boot record of /dev/hdb has been updated.
2 warnings were issued.

Die Warnungen kann man getrost ignorieren! „reboot“ und viel Spaß mit Slackware 12 und Raid/LVM 😉

PS: Man kann auch versuchen in der „init“ statt dem „mdadm -assemble …“ einfach „mdadm -A –scan“ zu nehmen. Damit muss man aber auch die „mdadm.conf“ der „initrd-tree.tar.gz“ anfügen!

Advertisements