我正在从 Xen 切换到 qemu-kvm。我当前的 Xen 安装有许多 LVM 卷,每个卷都有一个分区(而不是完整的磁盘映像)。在 Xen 中,我使用如下配置启动每个 VM:
kernel = "/boot/vmlinuz-2.6.18-128.4.1.el5xen"
ramdisk = "/boot/initrd-xen-2.6.18-128.4.1.el5xen"
disk = [ 'phy:/dev/vmdata/vm-standalone,sda1,w' ]
我现在想重用这些虚拟机,但改为在 kvm 下启动它们。似乎 virt-install--import
可以让我这样做,使用--boot kernel=<kernel>,initrd=<initrd>
,但我看不出如何指示 virt-install 将现有卷附加为引导/根文件系统。这可能吗?
我也一直在研究这个主题,只是发布了一个有点类似的问题,但范围不同: KVM/qemu - use LVM volumes directly without image file?
对于您的特定问题,这项工作是否有效: https ://wiki.archlinux.org/index.php/QEMU#By_specifying_kernel_and_initrd_manually
特别是,
-append root=/dev/sda /dev/sda3
。我自己没有尝试过,但它似乎应该做你想做的事。dynasy 和 Jared 的回答都指向正确的方向,但还有一点无法解释。
对我的问题的简短回答是 virt-install 完全能够为引导系统提供一个分区。事实上,对于块设备,它并不关心,只是将其传递给将其设置为块设备的 qemu。然后内核使用/dev/sda(而不是/dev/sda1)作为根文件系统。
实现此目的的命令行如下所示:
为了使这项工作正常进行,我必须修改 nic-standalone 上的 /etc/fstab,以便它指向正确的根文件系统和交换分区(/dev/sda、/dev/sdb)。上面的内核和 initrd 是标准的 CentOS 6 东西。(可能还需要各种性能参数/调整,我只是还没有走那么远。)
只需使用与 Xen 类似的参数(内存、CPU 等)在
virt-manager
或通过它创建一个新的 VMvirsh
,并在要求为其创建虚拟磁盘时,指向现有的 Xen 磁盘。您可能需要稍微调整
fstab
一下,以指向/dev/vdX
而不是xvdX
(或 Xen 使用的任何内容)如果你想要一个非常好的移动程序来为你处理一切,你可以使用
virt-v2v
.