A.19. 常见 libvirt 错误和故障排除
本附录记录了常见的 libvirt- 相关问题和错误,以及处理它们的说明。
在下面的表格中找到错误,并按照答案中的相应链接以获取详细故障排除信息。
| Error | 问题描述 | 解决方案 |
|---|---|---|
libvirtd 无法启动 | libvirt 守护进程无法启动。但是,/var/log/messages 中没有有关此错误的信息。 | 第 A.19.1 节 “libvirtd 无法启动” |
无法读取 CA 证书 | 这是 URI 无法连接到管理程序时出现的几个错误之一。 | 第 A.19.2 节 “到虚拟机监控程序的 URI 失败” |
| 其他连接错误 | 这些是 URI 无法连接管理程序时出现的其他错误。 | 第 A.19.2 节 “到虚拟机监控程序的 URI 失败” |
| 客户端中的 PXE 引导(或 DHCP)失败 | 客户机虚拟机可以成功启动,但无法从 DHCP 获取 IP 地址,或使用 PXE 协议引导。这通常是由于为网桥设置的较长的转发延迟时间,或者当 iptables 软件包和内核不支持 checksum mangling 规则时。 | 第 A.19.3 节 “客户机失败的 PXE 引导(或 DHCP)” |
| 客户机可以访问外部网络,但在使用 macvtap 接口时无法访问主机 |
客户机可以与其他虚拟客户机通信,但在配置为使用 macvtap(或
type='direct')网络接口后无法连接到主机。
这实际上不是错误 - 它是 macvtap 的定义的行为。
| 第 A.19.4 节 “Guest Can Reach Outside Network,但在使用 macvtap 界面时可能会重新访问主机” |
无法添加规则来修复网络 "默认"上的 DHCP 响应校验和 | 此警告消息几乎总是没有损害,但通常被误认为是问题证。 | 第 A.19.5 节 “无法添加规则来修复网络 "默认"上的 DHCP 响应校验和” |
无法添加网桥 br0 端口 vnet0:没有这样的设备 | 此错误消息或类似的 Failed 将 tap 接口添加到网桥 'br0' :没有这样的设备 显示客户机(或域) <interface> 定义中指定的网桥设备不存在。 | 第 A.19.6 节 “无法添加网桥 br0 端口 vnet0:没有这样的设备” |
无法解析地址 name_of_host 服务 '49155':未知的名称或服务 | QEMU 虚拟客户机迁移失败,且显示此错误消息并显示不熟悉的主机名。 | 第 A.19.7 节 “migration Fails with error: unables to address” |
无法允许访问磁盘路径 /var/lib/libvirt/images/qemu.img:没有这些文件或目录 | 无法迁移客户机虚拟机,因为 libvirt 无法访问磁盘映像。 | 第 A.19.8 节 “带有 Unables 的 migration Fails 以允许访问磁盘路径:没有这些文件或目录” |
| 当 libvirtd 启动时没有客户机虚拟机 | libvirt 守护进程成功启动,但在运行 virsh list --all 时不会显示客户机虚拟机。 | 第 A.19.9 节 “当 libvirtd 已启动时,没有演示客户机虚拟机” |
| 常见 XML 错误 | libvirt 使用 XML 文档来存储结构化的数据。当 XML 文档通过 API 传递至 libvirt 时,会会出现几个常见错误。这个条目提供了编辑客户机 XML 定义的说明,以及 XML 语法和配置中的常见错误。 | 第 A.19.10 节 “常见 XML 错误” |
A.19.1. libvirtd 无法启动 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
- 症状
- libvirt 守护进程不会自动启动。手动启动 libvirt 守护进程也失败:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此外,/var/log/messages中没有有关此错误的更多信息。 - 正在调查
- 通过启用下面的行 ,更改 libvirt 在
/etc/libvirt/libvirtd.conf中的登录。要启用设置行,请在文本编辑器中打开/etc/libvirt/libvirtd.conf文件,从以下行的开头删除 hash(或#)符号,并保存更改:log_outputs="3:syslog:libvirtd"
log_outputs="3:syslog:libvirtd"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意默认情况下,该行会被注释掉,以防止 libvirt 生成过量日志消息。诊断问题后,建议在/etc/libvirt/libvirtd.conf文件中再次为该行添加注释。重新启动 libvirt 以确定是否解决了该问题。如果libvirtd仍然没有成功启动,则会输出类似以下内容的错误:Copy to Clipboard Copied! Toggle word wrap Toggle overflow libvirtd man page 显示,当 libvirt 在TCP/IP 连接模式下运行时,缺少的cacert.pem文件将用作 TLS 颁发机构。这表示将传递--listen参数。 - 解决方案
- 使用以下方法之一配置 libvirt 守护进程的设置:
- 安装 CA 证书。注意有关 CA 证书和配置系统身份验证的更多信息,请参阅 Red Hat Enterprise Linux 7 域身份、身份验证和策略指南中的 管理证书和证书颁发机构章节。
- 不要使用 TLS;改为使用裸机 TCP。在
/etc/libvirt/libvirtd.conf中设置listen_tls = 0和listen_tcp = 1。默认值为listen_tls = 1,listen_tcp = 0。 - 不要传递
--listen参数。在/etc/sysconfig/libvirtd.conf中,更改LIBVIRTD_ARGS变量。