在 virt-manager 中为 QEMU/KVM 虚拟机添加物理分区

Mar*_*377 6 partitioning windows kvm virtualization qemu

我按照此相关问题的答案中的说明进行操作:将物理磁盘添加到 KVM 虚拟机

VM 的 .xml 文件中的结果代码如下:

<disk type='block' device='disk'>
  <driver name='qemu' type='raw' cache='none'/>
  <source dev='/dev/disk/by-partuuid/d8b63353-34n6-6587-ac07-810dmf36d544'/>
  <target dev='vdb' bus='virtio'/>
  <boot order='2'/>
  <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
</disk>
Run Code Online (Sandbox Code Playgroud)

注意我是如何使用/dev/disk/by-partuuid/d8b63353-34n6-6587-ac07-810dmf36d544<source>,而不是元素/dev/sda4

困扰我的是我的用例是将分区传递给 QEMU,而不是磁盘。我在上面安装了 Windows 10,安装程序无法识别存储,所以我必须viostorFedoraProject加载驱动程序。

Windows 安装顺利,性能惊人,但关闭虚拟机时,主机系统无法识别分区格式。

我发现有趣的是,Windows 安装viostor程序(加载了驱动程序)在裸磁盘上创建了Windows 通常需要附加分区。换句话说,它在所谓的分区内创建了分区。这应该是不可能的,或者我是这么认为的。

/dev/sda4存在于主机中,但不被识别为 NTFS 文件系统(确实不是预期的)、LVM 或 LDM(使用ldmtool测试)。

VM 在UEFI 模式下使用Q35 芯片组正确启动。

问题:我将分区添加到 virt-manager 的过程是否正确,还是应该只针对磁盘而不是分区?另外,我最终得到了什么分区类型或格式?

Mar*_*377 6

解决方案似乎是将整个块设备(如/dev/sda或 等价物/dev/disk/by-id/)传递给<source dev=''>设置。

这允许 Windows 安装程序查看现有分区,包括主机中的根分区。

不应该有任何冲突,只要:

  • 您不要尝试在已安装在主机中的来宾中安装/修改分区;和

  • 在虚拟机启动时,您不会从主机挂载/修改来宾当前使用的分区。

关于第一点,当然有必要在启动VM之前从主机上卸载ESP(EFI系统分区)。我首先为此编写了一个脚本,然后以 QEMU 自动化挂钩的形式提出了一个更好的解决方案。我在https://gitlab.com/ranolfi/rvirtesp 上提供

很酷的是,您还可以通过在主板的启动菜单中选择其新条目来本地启动虚拟化操作系统,就像在双启动中一样。

我不确定这是“支持”的。但是现在用了快一年了,没有问题。

  • 如果 KVM 支持将特定分区设为可读写但将物理磁盘的其余部分设为只读的配置,那就太好了 (3认同)