我想使用外部硬盘作为我的虚拟机的 libvirt 存储池。
我在中定义了一个新池/media/wenzel/OSWatcher/vms
,并win10-ts1-1507.qcow2
在那里导入了我的虚拟机。
但是,当使用 virsh 启动虚拟机时,出现权限被拒绝的情况:
virsh # start win10-ts1-1507
error: Failed to start domain win10-ts1-1507
error: Cannot access storage file '/media/wenzel/OSWatcher/vms/win10-ts1-1507.qcow2' (as uid:64055, gid:108): Permission non accordée
virsh #
- 用户标识
64055
:libvirt-qemu
- 组标识
108
:kvm
我做了一些测试,结果表明,如果当前工作目录位于硬盘挂载路径之外(在 之外/media/wenzel/OSWatcher
),QEMU 将无法访问 qcow:
https://drive.google.com/file/d/10RFrE_YZ6YpZnB7FWmIwF11SwH-QxNe7/view?usp=sharing
此外,我已经允许用户在 ACL 中libvirt-qemu
访问,并递归访问虚拟机映像(正如建议的那样/media/OSWatcher
这里)
$ sudo getfacl win10-ts1-1507.qcow2
# file: win10-ts1-1507.qcow2
# owner: libvirt-qemu
# group: wenzel
user::rwx
user:libvirt-qemu:rwx
group::rwx
mask::rwx
other::rwx
因此我不知道这个权限被拒绝错误的根本原因是什么。
我愿意接受深入研究这个问题的建议。
谢谢 !
注意:在 Ubuntu 20.04 上运行
答案1
检查您是否正在使用 SELinux:
# getenforce
Enforcing
然后,如果您愿意,请为 USB 设置 SELinux 布尔值:
# getsebool -a
...
virt_use_comm --> off
virt_use_execmem --> off
virt_use_fusefs --> off
virt_use_glusterd --> off
virt_use_nfs --> off
virt_use_rawip --> off
virt_use_samba --> off
virt_use_sanlock --> off
virt_use_usb --> off
virt_use_xserver --> off
...
如果您确实使用 SELinux,请尝试将 virt_use_usb 布尔值设置为开启:
# setsebool -P virt_use_usb 1
那应该可行。