Heute wurde mein Root-Server von Xen zu KVM umgebaut. Das größte Problem bei der Umstellung lag an der vorhandenen LVM2-Partition, die ich so nicht direkt für KVM verwenden konnte. Woran liegt das? Nun, für Xen wurde eine Partition mit ext3 formatiert und auch als Partition an die Dom-U übergeben. In meinem Falle /dev/vg01/lv_domu1-root nach sda2 in der Dom-U.
Nun kann KVM (soweit ich weiß) aber nur mit „ganzen“ Platen arbeiten, also Raw-Devices in Form von Dateien oder eben auch LVM2-Partitionen, etc.
Meine Vorgehensweise war:
lvcreate -n kvm1-disk -L 50G vg01
parted --script -- /dev/vg01/kvm1-disk mklabel msdos
parted --script -- /dev/vg01/kvm1-disk mkpartfs primary ext2 0 49152
Beim Folgebefehl schaute ich vorher mal mit fdisk -lu /dev/vg01/kvm1-disk, was da als Gesamtkapazität ausgewiesen wurde. Diesen Wert verwendete ich dann als END für parted.
parted --script -- /dev/vg01/kvm1-disk mkpartfs primary linux-swap 49152 51200
parted --script -- /dev/vg01/kvm1-disk set 1 boot on
Anschließend folgte das Binden an ein loop-Device:
losetup -s -f /dev/vg01/kvm1-disk
Resultat# /dev/loop0
Dann mit kpartx die Partitionen aufgeschlüsselt.
kpartx -a /dev/loop0
Nun fanden sich die erzeugten Partitionen unterhalb von /dev/mapper/loop0pX, wobei X die Partitionsnummer ist.
Dann hieß es swap und root formatieren, mounten. Letzteres auch mit der Xen-Partition und dann einmal frohes Daten-Schaufeln.
Das größte Problem allerdings lag nun in der Installation des Bootloaders „grub“. Obwohl ich verzweifelt versuchte, mit Hilfe des ubuntu-vm-builders die dort verwendeten Kommandos auch in meinem Setup unterzubringen, scheiterte dieses leider in allen Varianten.
Ich erhielt immer die Ausgabe, dass er die Partition nicht finden könne (Error 22), obwohl ein zuvor abgesetztes root (hd0,0) mit Autocompletition sauber ext2fs erkannte. Selbst das Checking auf die einzelnen Stage-Dateien war erfolgreich. Leider blieb der install-Teil außen vor.
In meiner Not habe ich dann zuerst abermals erfolglos mit einer Knoppix-CD experimentiert, um dann letzlich noch die Alternative-Installer-CD von Ubuntu zu ziehen.
Dort konnte ich dann endlich eine Root-Shell öffnen und die grub-shell dann zum installieren bewegen.
Und wie man sieht, läuft jetzt auch alles so weiter, wie man sich das bei einer solchen Migration nicht besser wünschen könnte.
Pro KVM
Update 2010-12-04:
Hat man auf die oben beschriebene Weise eine Festplastte erzeugt und muss im nächsten Schritt einen MBR schreiben, so kann dies auch mit einem Trick durchgeführt werden. Sofern die verwendete KVM Version bereits über die Parameter -kernel, -initrd und -append verfügt, läasst sich sehr einfach ein Booten mit einem Kernel aus dem Hostsystem bewerkstelligen. Der Gast startet dann anschließend wie gewohnt und es reicht ein einfaches Ausführen des Kommandos:
grub-install /dev/vda
vda sollte natürlich Ihren Verhältnissen angepasst werden (z.B. sda, falls Sie keine virtio-Unterstützung verwenden)
Hi,
dieser Eintrag ist so ziemlich das einzige, was ich zu dieser Problematik finden kann.
Ich habe ein Software RAID5 (/dev/md0) mit LVM eingeteilt. Die logischen Volumes habe ich bislang einfach in XEN eingehängt. Das ging problemlos.
Wenn ich meiner KVM Maschine dann ein „logical Volume“ übergebe und mit „fdisk -l“ im Gast nachgucke, was los ist, dann zeigt er mir nur an „unbekannte Partitionstabelle“ bei /dev/vdb an.
Gibt es eine Alternative als über loop-devices zu gehen?
Ich bin überhaupt sehr überrascht, wie viele Probleme allein dieses Thema bereitet.
So sieht der Teil in meiner xml-Datei aus:
An KVM wird ja quasi eine Festplatte übergeben, die aus Sicht des Host Systems eine LVM-Partition oder z.B. qcow2-Datei ist. Bei Xen bindet man ja quasi schon eine Partition selbst in den Gast ein.
Host……………Gast
LVM-Partition……Nutzt Partition direkt………..bei Xen
LVM-Partition……Nutzt diese als Festplatte…….KVM/Qemu
Zumindest habe ich das so in Erinnerung (ist ja schon lange her)
Wird es so etwas klarer?