我正在尝试使用 libvirt 使用以下命令创建虚拟机:
virsh create file
"file"
的内容:
<domain type='qemu' id='3'>
<name>testvm</name>
<memory>100</memory>
<vcpu>1</vcpu>
<os>
<type arch='i686'>hvm</type>
</os>
<devices>
<disk type='file' device='disk'>
<source file='/libtmp/VM-linux.0.2.img'/>
<target dev='hdc'/>
</disk>
</devices>
<on_reboot>restart</on_reboot>
<on_poweroff>preserve</on_poweroff>
<on_crash>restart</on_crash>
</domain>
这是发生的错误。
error: Failed to create domain from file
error: internal error cannot load AppArmor profile 'libvirt-9cb01efc-ed3b-ff8e-4de5-7227d311dd15'
我可以在不加载映像文件的情况下创建虚拟机。
每次配置文件名称都会不断变化。我尝试停止它并创建虚拟机,但我得到了同样的错误。
任何指示都会非常有帮助。
我遇到了同样的问题,原因是我有一个坏主意,将只读 cdrom 映像放置到 /etc 中,如下所示:
<disk type="file" device="cdrom">
<driver name='qemu' type="raw" />
<source file="/etc/libvirt/qemu/cdrom.iso" />
<target dev='hdb' bus='virtio'/>
<readonly/>
</disk>
移动到 /var 删除了错误消息并允许启动虚拟机。这一行:
<source file="/var/lib/libvirt/images/cdrom.iso" />
这是 libvirt 中的一个错误。请参阅https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/665531
使用“virsh edit domainname”命令编辑虚拟域的 xml 定义。在 xml 定义中将 type='host_device' 替换为 type='raw'。
这是一种解决方法,但不是正确的方法。使用以下命令将 AppArmor 设置为抱怨模式:
sudo aa-complain /usr/sbin/libvirtd
在一种情况下,我遇到了错误,因为 libvirt 的多个部分在 systemd 中被“屏蔽”。所以我必须把它们全部找到(
systemctl |grep virt
),检查它们是否被屏蔽(systemctl status ...
)并揭开被屏蔽的(systemctl unmask ...
)。我也启用并启动了它们。
Debian 11 靶心