Tôi có SUSE 11 SP4 VM, ban đầu nó hoạt động trên Xen ở chế độ PV. Bây giờ tôi đang chuyển nó sang KVM. Cách tiếp cận thông thường của tôi là khởi động mạng bất kỳ Linux nào trong máy ảo mục tiêu, gắn gốc của hệ điều hành mục tiêu, chroot và xây dựng lại initramfs, sau đó khởi động lại máy ảo vào hệ điều hành mục tiêu.
SLES 11 SP4 dường như thiếu một cái gì đó vì sau đó initramfs không thể tìm thấy bất kỳ thiết bị vbd nào để gắn root. Tuy nhiên, tôi đã quản lý để chạy nó thông qua lệnh qemu trực tiếp trên máy chủ 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=tắt
và nó hoạt động tốt.
Cấu hình KVM (liên quan đến đĩa) trông như thế này:
<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>
và người quản lý tài năng của tôi không cho phép tôi thực hiện những thay đổi đáng kể ở đây.
Tôi có thể sai ở đây, nhưng tôi nghĩ sự khác biệt chính là cấu trúc thiết bị PCI nên initramfs hoạt động theo cách này chứ không hoạt động theo cách khác. Tôi đã so sánh các thiết bị PCI:
Cây thiết bị được tìm thấy trên VM được chạy trực tiếp qua lệnh qemu:
00:00.0 Cầu máy chủ: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 Cầu nối ISA: Tập đoàn Intel 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 Giao diện IDE: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.3 Cầu nối: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 Bộ điều khiển tương thích VGA: Thiết bị 1234:1111 (rev 02)
00:03.0 Bộ điều khiển Ethernet: Thiết bị mạng Red Hat, Inc Virtio
00:04.0 Bộ điều khiển lưu trữ SCSI: Thiết bị khối Virtio của Red Hat, Inc
Cây thiết bị được tìm thấy trên bất kỳ KVM VM nào khác (cùng Máy chủ):
00:00.0 Cầu máy chủ: Bộ điều khiển DRAM Express 82G33/G31/P35/P31 của Tập đoàn Intel
00:01.0 Cầu nối PCI: Red Hat, Inc. Cổng gốc QEMU PCIe
00:01.1 Cầu nối PCI: Red Hat, Inc. Cổng gốc QEMU PCIe
00:01.2 Cầu nối PCI: Red Hat, Inc. Cổng gốc QEMU PCIe
00:01.3 Cầu nối PCI: Red Hat, Inc. Cổng gốc QEMU PCIe
00:01.4 Cầu nối PCI: Red Hat, Inc. Cổng gốc QEMU PCIe
00:01.5 Cầu nối PCI: Red Hat, Inc. Cổng gốc QEMU PCIe
00:01.6 Cầu nối PCI: Red Hat, Inc. Cổng gốc QEMU PCIe
00:01.7 Cầu nối PCI: Red Hat, Inc. Cổng gốc QEMU PCIe
Cầu ISA 00:1f.0: Bộ điều khiển giao diện LPC Intel Corporation 82801IB (ICH9) (rev 02)
Bộ điều khiển SATA 00:1f.2: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) Bộ điều khiển SATA 6 cổng [Chế độ AHCI] (rev 02)
00:1f.3 SMBus: Bộ điều khiển SMBus Intel Corporation 82801I (Dòng ICH9) (rev 02)
01:00.0 Bộ điều khiển Ethernet: Red Hat, Inc. Thiết bị mạng Virtio (rev 01)
02:00.0 Bộ điều khiển USB: Red Hat, Inc. Bộ điều khiển máy chủ QEMU XHCI (rev 01)
03:00.0 Bộ điều khiển lưu trữ SCSI: Red Hat, Inc. Thiết bị khối Virtio (rev 01)
04:00.0 Thiết bị chưa được phân loại [00ff]: Red Hat, Inc. Bong bóng ký ức Virtio (rev 01)
05:00.0 Thiết bị chưa được phân loại [00ff]: Red Hat, Inc. Virtio RNG (rev 01)
08:00.0 Bộ điều khiển lưu trữ SCSI: Red Hat, Inc. Thiết bị khối Virtio (rev 01)
Ở đây tôi thấy sự khác biệt: qemu cho phép gắn bộ lưu trữ vào cầu nối máy chủ PCI gốc, nhưng trong KVM, nó luôn được gắn vào cổng QEMU PCIe Root.
Câu hỏi của tôi là:
- Có thể SLES 11 đã quá cũ để hỗ trợ cổng QEMU PCIe Root không?
- Có thể dễ dàng cấu hình VM để gắn trực tiếp bộ lưu trữ vào Cầu máy chủ không?
- Tôi xây dựng lại initramfs trong môi trường đích, không thêm gì vào tệp cấu hình. Tôi có thiếu thứ gì đó (móc hoặc trình điều khiển) khi xây dựng lại initramfs không?