KVM 引导离映像内核和现有分区

Bit*_*nce 5 lvm libvirt kvm-virtualization

我正在从 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' ]
Run Code Online (Sandbox Code Playgroud)

我现在想重用这些虚拟机,而是在 kvm 下启动它们。似乎 virt-install--import会让我这样做,使用--boot kernel=<kernel>,initrd=<initrd>,但我不知道如何指示 virt-install 将现有卷附加为引导/根文件系统。这可能吗?

Bit*_*nce 3

王朝和贾里德的答案都指向正确的方向,但留下了一些无法解释的地方。

我的问题的简短答案是 virt-install 完全能够为引导系统提供分区。事实上,对于块设备,它并不关心,只是将其传递给 qemu,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
Run Code Online (Sandbox Code Playgroud)

为了完成这项工作,我必须修改 nic-standalone 上的 /etc/fstab,使其指向正确的根文件系统和交换分区(/dev/sda、/dev/sdb)。上面的内核和 initrd 是标准 CentOS 6 的东西。(可能还需要各种性能参数/调整,我只是还没有做到这一点。)