KVM 启动非镜像内核和现有分区

KVM 启动非镜像内核和现有分区

我正在从 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

相关内容