在我拥有的一个工作站上,libvirt 已停止工作;它不再启动虚拟机:
$ virsh --connect qemu:///system 'start westerley-pool'
error: Failed to start domain westerley-pool
error: Invalid value '+cpu' for 'cgroup.subtree_control': Invalid argument
这台机器使用 cgroupv2 统一层次结构(应该从 4.9.0 开始支持)。启用的控制器是内存和 pids(通过检查cat /sys/fs/cgroup/cgroup.subtree_control
),所以 cpu 不起作用也就不足为奇了。但是libvirt cgroups 文档说控制器不是强制性的,如果不可用,它将不会被使用。
我已经尝试重新启动 libvirtd.service,以防万一它修复它。没变。
文档还说我可以明确设置要使用的控制器,所以我尝试设置cgroup_controllers = [ "memory" ]
(/etc/libvirt/qemu.conf
以前没有设置)。我再次重新启动了 libvirtd.service;还是不行。
除了重复上述错误消息外,我没有在日志中看到任何内容。
我宁愿不启用 cpu 控制器,因为我认为它有性能成本,而且我不需要它。
操作系统:Debian 测试
libvirt:5.0.0-3,来自 Debian。
内核:4.19.0-5-amd64,同样是 Debian。
我怎样才能让 libvirt 再次在这台机器上工作?
(6 月 30 日更新)
/etc/systemd/system/libvirtd.service.d/cpu.conf
用它的内容制作在我的环境中一切正常。这是上游开发人员识别并修复的上游错误: https ://libvirt.org/git/?p=libvirt.git;a=commit;h=1d49cdcd116186e079db5668893da17f56141652
我以https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=931243的形式向 Debian 提交了一份 带有补丁的详细错误报告。
松本龙太郎