我正在从 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 将现有卷附加为启动/根文件系统。这可能吗?
答案1
我也一直在研究这个主题,刚刚发布了一个类似的问题,但范围不同: KVM/qemu - 无需图像文件直接使用 LVM 卷?
对于您的特定问题,这是否有效: https://wiki.archlinux.org/index.php/QEMU#By_specifying_kernel_and_initrd_manually
特别是-append root=/dev/sda /dev/sda3
。我自己还没有尝试过,但它似乎应该能做你想做的事。
答案2
dynasy 和 Jared 的回答都指向了正确的方向,但仍有一些未解释的地方。
对我的问题的简短回答是,virt-install 完全能够为引导系统提供分区。事实上,对于块设备,它并不关心,只是将其传递给 qemu,后者将其设置为块设备。然后内核使用 /dev/sda(而不是 /dev/sda1)作为根文件系统。
实现此目的的命令行如下所示:
virt-install --name nic
--ram 512
--disk /dev/vg_ext/nic-standalone
--disk /dev/vg_ext/nic-swap
--network bridge=br0
--boot kernel=/boot/vmlinuz,initrd=/boot/initramfs.img,kernel_args="console=ttyS0 root=/dev/sda"
--serial=pty
为了使其正常工作,我必须修改 nic-standalone 上的 /etc/fstab,使其指向正确的根文件系统和交换分区 (/dev/sda、/dev/sdb)。上面的内核和 initrd 是标准的 CentOS 6 内容。(可能还需要各种性能参数/调整,但我还没有做到那一步。)
答案3
只需在virt-manager
或通过virsh
具有与 Xen 类似的参数(内存、CPU 等)创建一个新的 VM,当要求为其创建虚拟磁盘时,指向现有的 Xen 磁盘。
您可能需要fstab
稍微调整一下,指向/dev/vdX
而不是xvdX
(或 Xen 使用的任何内容)
如果您想要一个真正好的搬家程序来为您处理一切,那么您可以使用virt-v2v
。