SLES 11 PV VM auf KVM

SLES 11 PV VM auf KVM

Ich habe eine SUSE 11 SP4 VM, die anfangs auf Xen im PV-Modus lief. Jetzt verschiebe ich sie auf KVM. Normalerweise gehe ich so vor, dass ich ein beliebiges Linux in der Ziel-VM per Netboot starte, das Root-Verzeichnis des Zielbetriebssystems mounte, chroote und baue initramfs neu auf und starte die VM dann im Zielbetriebssystem neu.

Bei SLES 11 SP4 scheint etwas zu fehlen, denn danach kann initramfs kein vbd-Gerät mehr finden, um es als Root zu mounten. Ich habe es jedoch geschafft, es über einen direkten QEMU-Befehl auf dem KVM-Host auszuführen:

qemu-kvm -m 32768 -smp 8 -device virtio-net-pci,mac=42:5f:96:48:39:fa,netdev=vmnic -netdev tap,id=vmnic,script=/etc/ovs-ifup,downscript=/etc/ovs-ifdown -nographic -serial mon:stdio -drive file=/dev/lvm/vm,if=none,id=drive0,format=raw  -device virtio-blk-pci,drive=drive0,scsi=off

und es funktioniert gut.

Die KVM-Konfiguration (festplattenbezogen) sieht folgendermaßen aus:

<devices>
  <emulator>/usr/bin/qemu-system-x86_64</emulator>
  <disk type="block" device="disk">
    <driver name="qemu" type="raw" cache="none" io="native"/>
    <source dev="/dev/lvm/vm"/>
    <target dev="vda" bus="virtio"/>
    <address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>
  </disk>
  <controller type="pci" index="3" model="pcie-root-port">
    <model name="pcie-root-port"/>
    <target chassis="3" port="0xa"/>
    <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x2"/>
  </controller>

und mein virtueller Manager erlaubt mir nicht, hier wesentliche Änderungen vorzunehmen.

Ich könnte mich hier irren, aber ich glaube, der Hauptunterschied liegt in der Struktur der PCI-Geräte, sodass initramfs auf die eine Weise funktioniert, auf die andere jedoch nicht. Ich habe PCI-Geräte verglichen:

Gerätebaum auf VM gefunden, die direkt über den QEMU-Befehl ausgeführt wurde:

00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Device 1234:1111 (rev 02)
00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
00:04.0 SCSI storage controller: Red Hat, Inc Virtio block device

Gerätebaum auf jeder anderen KVM-VM (gleicher Host) gefunden:

00:00.0 Host bridge: Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller
00:01.0 PCI bridge: Red Hat, Inc. QEMU PCIe Root port
00:01.1 PCI bridge: Red Hat, Inc. QEMU PCIe Root port
00:01.2 PCI bridge: Red Hat, Inc. QEMU PCIe Root port
00:01.3 PCI bridge: Red Hat, Inc. QEMU PCIe Root port
00:01.4 PCI bridge: Red Hat, Inc. QEMU PCIe Root port
00:01.5 PCI bridge: Red Hat, Inc. QEMU PCIe Root port
00:01.6 PCI bridge: Red Hat, Inc. QEMU PCIe Root port
00:01.7 PCI bridge: Red Hat, Inc. QEMU PCIe Root port
00:1f.0 ISA bridge: Intel Corporation 82801IB (ICH9) LPC Interface Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] (rev 02)
00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 02)
01:00.0 Ethernet controller: Red Hat, Inc. Virtio network device (rev 01)
02:00.0 USB controller: Red Hat, Inc. QEMU XHCI Host Controller (rev 01)
03:00.0 SCSI storage controller: Red Hat, Inc. Virtio block device (rev 01)
04:00.0 Unclassified device [00ff]: Red Hat, Inc. Virtio memory balloon (rev 01)
05:00.0 Unclassified device [00ff]: Red Hat, Inc. Virtio RNG (rev 01)
08:00.0 SCSI storage controller: Red Hat, Inc. Virtio block device (rev 01)

Hier sehe ich den Unterschied: QEMU erlaubt das Anschließen von Speicher an die Root-PCI-Host-Bridge, in KVM ist er jedoch immer an den QEMU-PCIe-Root-Port angeschlossen.

Meine Fragen sind:

  1. Ist es möglich, dass SLES 11 zu alt ist, um den QEMU PCIe-Root-Port zu unterstützen?
  2. Ist es möglich, die VM-Konfiguration zu vereinfachen, indem Speicher direkt an die Host-Bridge angeschlossen wird?
  3. Ich baue initramfs in der Zielumgebung neu auf und füge den Konfigurationsdateien nichts hinzu. Übersehe ich beim Neuaufbau von initramfs etwas (Hooks oder Treiber)?

Antwort1

Sie haben die VM mit dem Maschinentyp i440fx erstellt. Versuchen Sie es erneut mit dem Maschinentyp q35, den Ihre andere VM verwendet.

verwandte Informationen