Debian KVM 和虚拟机映像的位置与 /var/lib/libvirt/images 不同

Debian KVM 和虚拟机映像的位置与 /var/lib/libvirt/images 不同

我已经在 ZFS 上为虚拟机定义了存储池:

virsh # pool-dumpxml zfs
<pool type='dir'>
  <name>zfs</name>
  <uuid>b2fba550-467f-8133-dee8-44ada7d0a807</uuid>
  <capacity unit='bytes'>210316853248</capacity>
  <allocation unit='bytes'>32768</allocation>
  <available unit='bytes'>210316820480</available>
  <source>
  </source>
  <target>
    <path>/winvm/win1</path>
    <permissions>
      <mode>0700</mode>
      <owner>4294967295</owner>
      <group>4294967295</group>
    </permissions>
  </target>
</pool>

为 vms 创建 RAW 图像文件:

host /winvm/win1 % l
total 3.5K
drwxrwxr-x. 2 root         root           3 Jan  3 14:03 .
drwxr-xr-x  3 libvirt-qemu libvirt-qemu   3 Dec 30 13:45 ..
-rw-------. 1 libvirt-qemu libvirt-qemu 20G Jan  3 14:03 t1.raw

定义了 t1 VM 但是当我尝试启动它时:

host /winvm/win1 % virsh start t1
error: Failed to start domain t1
error: internal error process exited while connecting to monitor: char device redirected to /dev/pts/13
kvm: -drive file=/winvm/win1/t1.raw,if=none,id=drive-sata0-0-0,format=raw,cache=none: could not open disk image /winvm/win1/t1.raw: Invalid argument

VM 的存储文件不断将所有者更改为 root:root:

host /winvm/win1 % ls -l
total 1
-rw-------. 1 root root 21474836480 Jan  3 14:03 t1.raw

我在该机器上禁用了 SELinux:

host /winvm/win1 % sestatus
SELinux status:                 disabled

甚至改变了它的用户和上下文:

host /winvm/win1 % chcon -t virt_image_t -u libvirt-qemu t1.raw

但我仍然不断收到上述错误。为什么?禁用 SELinux 后会如何影响文件访问?

答案1

不是 ZFS,而是virt-manager实用程序导致了配置错误 - 罪魁祸首if=none出于某种原因被添加到磁盘规范中(我曾经virt-manager在 ZFS 卷上定义原始磁盘)。我在磁盘映像上间歇性地收到“权限被拒绝”错误,所以我认为这是权限问题。如果您在 中设置了磁盘映像上的所有可用选项virt-manager,就会发生这种情况,显然每个人都保留了默认设置。

相关内容