SIO*_*SIO 4 debian libvirt kvm-virtualization
我了解到 CirrusCI 在其公共存储库的免费软件包中提供嵌套虚拟化,我正在尝试利用它来测试我的 Ansible 剧本。
不幸的是,libvirt 坚持认为 CI 环境不支持完全虚拟化。所有检查(我知道的)都证明了相反的情况,并且 qemu-kvm 在直接调用时可以正常工作。我几乎可以肯定问题出在我的主机操作系统配置上,而不是出在 CI 引擎上。我见过其他人出于他们的目的(Android 仿真、氧化还原测试)在 CirrusCI 上使用完全虚拟化。
我使用 Debian 10 作为主机系统,来自 DockerHub 的超薄映像,并安装了以下额外的软件包(--no-install-recommends):
bridge-utils libguestfs-tools python3-dev
coreutils libosinfo-bin python3-venv
cpu-checker libssl-dev qemu-kvm
curl libvirt-clients qemu-kvm
gcc libvirt-daemon qemu-utils
gpg libvirt-daemon-system systemd
gpg-agent linux-image-amd64 vagrant
iproute2 make vagrant-libvirt
kmod procps virt-goodies
libc-dev python3 virtinst
libffi-dev
Run Code Online (Sandbox Code Playgroud)
我可能缺少什么?为什么当 qemu-kvm 完美运行时,libvirt 会告诉没有 KVM?
Error while creating domain: Error saving the server: Call to virDomainDefineXML failed: invalid argument: could not find capabilities for domaintype=kvm
Run Code Online (Sandbox Code Playgroud)
virsh capabilities仅包含 <domain type='qemu'/>条目。
任何基于 libvirt 的工具都无法调用 KVM:
$ virt-install --import --virt-type kvm --name debian10-vm --memory 512 --disk path=/debian.qcow2,format=qcow2 --os-variant debian10 --noautoconsole || echo "Exit code: $?"
ERROR Host does not support domain type kvm for virtualization type 'hvm' arch 'x86_64'
Exit code: 1
Run Code Online (Sandbox Code Playgroud)
但是 qemu-kvm 在直接执行时是有效的:
$ kvm -nographic /debian.qcow2
cSeaBIOS (version 1.12.0-1)
iPXE (http://ipxe.org) 00:03.0 C980 PCI2.10 PnP PMM+07F900F0+07ED00F0 C980
Press Ctrl-B to configure iPXE (PCI 00:03.0)...
Booting from Hard Disk...
GNU GRUB version 2.02+dfsg1-20
...
Run Code Online (Sandbox Code Playgroud)
lsmod 显示 kvm 和 kvm_intel 已加载cat /proc/cpuinfo - 包含 vmx 标志lscpu - 虚拟化类型:完整kvm-ok - 好的ls -l /dev/kvm - 存在,归 root:rdma 所有ls -l /var/run/libvirt - 套接字存在,由 root:root 拥有whoami - 根groups $(whoami) - 根systemctl status - systemd 未启动,libvirtd 是通过 CI 规则启动的virt-host-validate - 除 IOMMU 外,所有检查均通过 - 对我的用例不重要CI 日志中的“kvm_before”部分提供了完整列表。
小智 6
大多数发行版 libvirt 软件包将被配置为以 qemu:qemu 用户身份运行 qemu。请参阅 报告的 UID+GID virsh --connect qemu:///system capabilities | grep baselabel。如果您的发行版就是这种情况,那么 qemu 没有访问 /dev/kvm 的权限,因此 libvirt 不会宣传 kvm 支持。chmod 666 /dev/kvm应该修复它。这是 Fedora FWIW 中的默认设置
| 归档时间: |
|
| 查看次数: |
5871 次 |
| 最近记录: |