ฉันมี SUSE 11 SP4 VM ในตอนแรกมันทำงานบน Xen ในโหมด PV ตอนนี้ฉันกำลังย้ายไปที่ KVM วิธีปกติของฉันคือ netboot Linux ใด ๆ ใน VM เป้าหมาย เมานต์รูทของ OS เป้าหมาย chroot และสร้าง initramfs ใหม่ จากนั้นรีบูต VM เข้าสู่ OS เป้าหมาย
SLES 11 SP4 ดูเหมือนจะขาดอะไรบางอย่างไปเพราะหลังจากนั้น initramfs ไม่พบอุปกรณ์ vbd ที่จะเมานต์รูท อย่างไรก็ตาม ฉันสามารถเรียกใช้ผ่านคำสั่ง qemu โดยตรงบนโฮสต์ KVM:
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=ปิด
และใช้งานได้ดี
การกำหนดค่า 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 ของฉันไม่อนุญาตให้ฉันทำการเปลี่ยนแปลงที่สำคัญที่นี่
ฉันอาจคิดผิดที่นี่ แต่ฉันคิดว่าความแตกต่างหลักคือโครงสร้างอุปกรณ์ PCI ดังนั้น initramfs จึงทำงานในทางเดียว แต่ไม่ใช่ในอีกทางหนึ่ง ฉันได้เปรียบเทียบอุปกรณ์ PCI:
พบแผนผังอุปกรณ์บน VM ซึ่งเรียกใช้โดยตรงผ่านคำสั่ง qemu:
00:00.0 โฮสต์บริดจ์: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 สะพาน ISA: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 อินเทอร์เฟซ IDE: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.3 บริดจ์: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 คอนโทรลเลอร์ที่เข้ากันได้กับ VGA: อุปกรณ์ 1234:1111 (rev 02)
00:03.0 ตัวควบคุมอีเทอร์เน็ต: อุปกรณ์เครือข่าย Red Hat, Inc Virtio
00:04.0 ตัวควบคุมหน่วยเก็บข้อมูล SCSI: อุปกรณ์บล็อก Red Hat, Inc Virtio
โครงสร้างอุปกรณ์ที่พบใน KVM VM อื่น ๆ (โฮสต์เดียวกัน):
00:00.0 โฮสต์บริดจ์: Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller
00:01.0 สะพาน PCI: Red Hat, Inc. พอร์ต QEMU PCIe Root
00:01.1 สะพาน PCI: Red Hat, Inc. พอร์ต QEMU PCIe Root
00:01.2 สะพาน PCI: Red Hat, Inc. พอร์ต QEMU PCIe Root
00:01.3 สะพาน PCI: Red Hat, Inc. พอร์ต QEMU PCIe Root
00:01.4 สะพาน PCI: Red Hat, Inc. พอร์ต QEMU PCIe Root
00:01.5 สะพาน PCI: Red Hat, Inc. พอร์ต QEMU PCIe Root
00:01.6 สะพาน PCI: Red Hat, Inc. พอร์ต QEMU PCIe Root
00:01.7 สะพาน PCI: Red Hat, Inc. พอร์ต QEMU PCIe Root
00:1f.0 สะพาน ISA: Intel Corporation 82801IB (ICH9) LPC Interface Controller (rev 02)
00:1f.2 คอนโทรลเลอร์ SATA: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) คอนโทรลเลอร์ SATA 6 พอร์ต [โหมด AHCI] (รอบ 02)
00:1f.3 SMBus: Intel Corporation 82801I (ตระกูล ICH9) SMBus Controller (rev 02)
01:00.0 ตัวควบคุมอีเธอร์เน็ต: Red Hat, Inc. อุปกรณ์เครือข่าย Virtio (rev 01)
02:00.0 คอนโทรลเลอร์ USB: Red Hat, Inc. QEMU XHCI Host Controller (rev 01)
03:00.0 ตัวควบคุมหน่วยเก็บข้อมูล SCSI: Red Hat, Inc. อุปกรณ์บล็อก Virtio (rev 01)
04:00.0 อุปกรณ์ที่ไม่ได้จัดประเภท [00ff]: Red Hat, Inc. บอลลูนหน่วยความจำ Virtio (rev 01)
05:00.0 อุปกรณ์ที่ไม่ระบุประเภท [00ff]: Red Hat, Inc. Virtio RNG (rev 01)
08:00.0 ตัวควบคุมหน่วยเก็บข้อมูล SCSI: Red Hat, Inc. อุปกรณ์บล็อก Virtio (rev 01)
ที่นี่ฉันเห็นความแตกต่าง: qemu อนุญาตให้แนบหน่วยเก็บข้อมูลกับบริดจ์โฮสต์ PCI รูท แต่ใน KVM จะแนบกับพอร์ต QEMU PCIe Root เสมอ
คำถามของฉันคือ:
- เป็นไปได้หรือไม่ที่ SLES 11 เก่าเกินไปที่จะรองรับพอร์ต QEMU PCIe Root
- เป็นไปได้ไหมที่จะทำให้การกำหนดค่า VM ง่ายขึ้นเพื่อแนบที่เก็บข้อมูลกับโฮสต์บริดจ์โดยตรง
- ฉันสร้าง initramfs ใหม่ในสภาพแวดล้อมเป้าหมายโดยไม่เพิ่มสิ่งใดในไฟล์ปรับแต่ง ฉันขาดอะไรไป (ตะขอหรือไดรเวอร์) เมื่อสร้าง initramfs ใหม่หรือไม่