首页/云/云平台与虚拟化速查/libvirt/QEMU 日志定位启动失败
虚拟化操作94 条

libvirt/QEMU 日志定位启动失败

域启动失败先看 per-VM 日志与 libvirtd 日志:QEMU 进程的报错(设备不支持、权限、镜像损坏等)都写在 /var/log/libvirt/qemu/<域名>.log。

云平台与虚拟化速查云更新于 2026-10-13

日志分几层

虚机启动失败时,libvirt 与 QEMU 分两层记录日志:域级日志 /var/log/libvirt/qemu/<域名>.log 记录设备创建、磁盘与网络后端、权限等具体报错;守护进程日志(journalctl -u libvirtd,模块化部署下可能是 virtqemud 等)记录连接、配置校验与调度过程。排错顺序一般是先看域日志定位设备问题,再看守护日志判断是配置错误还是运行环境不满足。需要更多细节时用 LIBVIRT_DEBUG=1 提升 virsh 命令自身的日志级别。

基本信息

域日志/var/log/libvirt/qemu/<域名>.log
守护日志journalctl -u libvirtd(或 virtqemud)
调试输出LIBVIRT_DEBUG=1 提升 virsh 命令日志级别
常见线索Permission denied、No space、Failed to load、Cannot access storage file
日志滚动域日志按大小与次数滚动,旧日志带序号后缀

典型使用场景

  • 虚机启动直接报错,需要定位到底哪个设备创建失败
  • 热插拔磁盘或网卡失败,确认是设备名冲突还是权限问题
  • 迁移失败后查源端与目标端的报错原文
  • 虚机网络不通,确认 tap 设备与网桥绑定是否成功
  • 镜像或磁盘路径错误导致启动失败,需要拿到原始报错

排查组合

排查组合
tail -n 100 /var/log/libvirt/qemu/vm1.log        # 域日志:设备级报错在这里
journalctl -u libvirtd --since '10 min ago'      # 守护进程侧:配置与连接问题
LIBVIRT_DEBUG=1 virsh start vm1                  # 提升命令侧日志级别再复现
grep -iE 'permission denied|no space|failed to' /var/log/libvirt/qemu/*.log
dmesg | grep -i denied                           # 确认是否被 SELinux/AppArmor 拒绝

高频报错对照

线索含义处置方向
Permission deniedSELinux/AppArmor 或文件属主限制,QEMU 进程读不到磁盘检查标签、安全策略与文件权限
No space left on device所在文件系统或存储空间不足清理空间或迁移磁盘到其他存储
Cannot access storage file磁盘路径不存在或外置存储未挂载确认存储挂载与路径拼写
Failed to load / 无法打开镜像格式与驱动配置不一致,或镜像损坏核对 subdriver 与 qemu-img info 结果
设备名冲突目标设备名已被占用用 domblklist/domiflist 核对空闲名
地址或端口占用VNC/SPICE 等监听端口冲突更换端口或排查残留进程
生产环境避免长期开高日志级别:磁盘与性能开销明显,只应在复现问题时临时开启,定位完立即关闭。
权限类问题优先怀疑安全模块:RHEL 系用 ausearch -m avc -ts recent 查审计记录,Debian 系看 dmesg 中的 AppArmor 拒绝信息,确认后再调整策略而不是直接关闭模块。

易错点

  • 只盯 libvirtd 日志:多数设备级报错在 per-VM 的 QEMU 日志里
  • 把权限拒绝当成 libvirt 缺陷,忽略安全模块标签,反复重装也不解决
  • 磁盘放在外置存储上,宿主重启后存储未挂载,虚机自启失败却只在日志里看到一行路径不存在
  • 排查完忘记关闭调试日志,占用磁盘并影响性能

数据来源与参考

  • libvirt 文档:Troubleshooting
  • libvirtd 手册
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌