![启动虚拟机失败,libvirt/qemu 权限被拒绝](https://linux22.com/image/211475/%E5%90%AF%E5%8A%A8%E8%99%9A%E6%8B%9F%E6%9C%BA%E5%A4%B1%E8%B4%A5%EF%BC%8Clibvirt%2Fqemu%20%E6%9D%83%E9%99%90%E8%A2%AB%E6%8B%92%E7%BB%9D.png)
这是我第一次问问题,所以如果我能做得更好,请告诉我。
我不太擅长 Linux 方面的事情,到目前为止,我可以按照指南进行操作,遇到的问题可以通过一些搜索轻松修复,但现在我陷入了困境。我有一个运行 Debian Buster 的小型家庭服务器。我在那里运行了几个带有 libvirt/qemu 的虚拟机。我的问题是 nextcloud 实例:
昨天我的系统断电了。重启后到目前为止一切正常。然后我想启动我的虚拟机,除了一个之外,所有虚拟机都启动得很好。我收到以下错误:
sudo virsh start mydomain
error: Failed to start domain mydomain
error: internal error: process exited while connecting to monitor:
qemu-system-x86_64: -realtime mlock=off: warning: '-realtime mlock=...' is deprecated, please use '-overcommit mem-lock=...' instead
2022-10-01T13:31:17.160445Z qemu-system-x86_64: -drive file=/path/to/mydomain.snapshot1.snapshot2,format=qcow2,if=none,id=drive-virtio-disk0:
Could not open backing file: Could not open '/path/to/mydomain.snapshot1': Permission denied
我按照本指南创建了外部快照https://fabianlee.org/2021/01/10/kvm-creating-and-reverting-libvirt-external-snapshots/
我首先认为虚拟机出了问题,所以我尝试恢复到旧的快照(我在断电前只有几个小时)
根据指南,我使用以下步骤进行恢复:
# edit hda path back to original qcow2 disk
virt-xml $thedomain --edit target=$targetdisk --disk path=$backingfile --update
# validate that we are now pointing back at original qcow2 disk
virsh domblklist $thedomain
# delete snapshot metadata
virsh snapshot-delete --metadata $thedomain $snapshotname
# delete snapshot qcow2 file
sudo rm $pooldir/$thedomain.$snapshotname
# start guest domain
virsh start $thedomain
但之后我仍然遇到相同的错误,只是指向快照文件。此外,当我尝试启动虚拟机时,快照文件的所有者和组从“libvirt-qemu”更改为“root”。
我试图寻找问题,但找不到很多。我发现的最接近的是如何配置 AppArmor 以便 KVM 可以启动具有备份文件链的 guest 虚拟机
所以它可能与 apparmor 有关。但我不知道在功率损失后发生了什么变化。但无论如何,我尝试了这些帖子中的建议,但没有效果。
但也有可能是通过更新进行了某些更改,并且仅在重新启动后才生效。到目前为止,服务器运行得很好,并且没有经常关闭。
抱歉文字很长。
预先感谢您的任何帮助
答案1
我找到了一个修复/解决方法。
我添加了虚拟机映像的存储路径
/etc/apparmor.d/abstractions/libvirt-qemu
像这样
/path/to/my/files/* rwk,
/path/to/my/files/ rwk,
现在虚拟机再次启动。但我仍然不知道,最初是什么导致了这个问题。
恢复到旧快照不起作用与我对快照的命名以及通过 libvirt-aa-helper 进行的错误解释有关 - >错误的 apparmor 配置文件和/或虚拟机的 .xml 文件中的错误解释。
当我有时间时,我会深入挖掘。但现在我很高兴它再次发挥作用。