SUSE 11 SP4 VM이 있는데 처음에는 Xen에서 PV 모드로 작업하고 있었습니다. 이제 KVM으로 옮기겠습니다. 나의 일반적인 접근 방식은 대상 VM에서 Linux를 넷부팅하고, 대상 OS의 루트를 마운트하고, chroot하고 initramfs를 다시 빌드한 다음 VM을 대상 OS로 재부팅하는 것입니다.
SLES 11 SP4에는 initramfs가 루트를 마운트할 vbd 장치를 찾을 수 없기 때문에 뭔가 부족한 것 같습니다. 그러나 KVM 호스트에서 직접 qemu 명령을 통해 실행했습니다.
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
그리고 그것은 잘 작동합니다.
KVM 구성(디스크 관련)은 다음과 같습니다:
<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>
그리고 내 virt-manager는 내가 여기서 중요한 변경을 하는 것을 허용하지 않습니다.
내가 틀렸을 수도 있지만 주요 차이점은 PCI 장치 구조이므로 initramfs는 한 가지 방식으로 작동하지만 다른 방식으로는 작동하지 않는다고 생각합니다. PCI 장치를 비교했습니다.
qemu 명령을 통해 직접 실행된 VM에서 발견된 장치 트리:
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
다른 KVM VM(동일 호스트)에서 발견된 장치 트리:
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)
차이점은 다음과 같습니다. qemu는 루트 PCI 호스트 브리지에 스토리지를 연결할 수 있지만 KVM에서는 항상 QEMU PCIe 루트 포트에 연결됩니다.
내 질문은 다음과 같습니다
- SLES 11이 QEMU PCIe 루트 포트를 지원하기에는 너무 오래되었을 가능성이 있습니까?
- 스토리지를 호스트 브리지에 직접 연결하기 위해 VM 구성을 쉽게 할 수 있습니까?
- 구성 파일에 아무것도 추가하지 않고 대상 환경에서 initramfs를 다시 빌드합니다. initramfs를 재구축할 때 뭔가(훅이나 드라이버)가 빠졌나요?
답변1
i440fx 머신 유형으로 VM을 만들었습니다. 다른 VM에서 사용하는 q35 머신 유형으로 다시 시도해 보세요.