KVM虚拟机问题排查方法

2025-10-19 08:45:00
丁国栋
原创 16
摘要:本文记录和汇总一些关于KVM问题诊断的知识。

在Ubuntu上排查KVM虚拟机异常的问题,可以按照以下步骤查看相关日志和操作记录:

1. 首先检查虚拟机状态

# 查看所有虚拟机状态
virsh list --all
# 查看特定虚拟机信息
virsh dominfo <虚拟机名称>

2. 查看libvirt日志

# 系统级libvirt日志
sudo journalctl -u libvirtd -f
sudo journalctl -u libvirt-guests -f
# 查看特定时间段的日志
sudo journalctl -u libvirtd --since "2024-01-01 00:00:00"
# libvirt主日志文件
sudo tail -f /var/log/libvirt/libvirtd.log

3. 查看QEMU/KVM日志

这一步是最重要的,因为它记录这个虚拟机本身的日志。

# 虚拟机特定的日志(通常在/var/log/libvirt/qemu/)
sudo ls -la /var/log/libvirt/qemu/
sudo cat /var/log/libvirt/qemu/<虚拟机名称>.log

例如,如果是正常关机可能会有如下的提示:

2025-10-10T15:30:15.344185Z qemu-system-x86_64: terminating on signal 15 from pid 2650 (/usr/sbin/libvirtd)
2025-10-10 15:30:17.462+0000: shutting down, reason=shutdown

如果是强制关机提示:

2025-03-17T01:24:12.770353Z qemu-system-x86_64: terminating on signal 15 from pid 2650 (/usr/sbin/libvirtd)
2025-03-17 01:24:17.775+0000: shutting down, reason=destroyed

4. 查看系统日志

主要是看是否有OOM事件,以及与虚拟化(libvirt、kvm、qemu等关键字)相关的日志。

# 系统消息日志
sudo tail -f /var/log/messages
sudo tail -f /var/log/syslog
# 查看内核日志
sudo dmesg | grep -i kvm
sudo dmesg | grep -i qemu
# 查看与虚拟化相关的系统日志
sudo grep -i "kvm\|qemu\|libvirt" /var/log/syslog

5. 检查虚拟机配置文件

# 查看虚拟机XML配置
virsh dumpxml <虚拟机名称>
# 检查配置文件位置
sudo ls -la /etc/libvirt/qemu/

6. 查看自动启动配置

# 检查是否配置了自动启动
virsh autostart <虚拟机名称>
virsh autostart --list
# 查看libvirt-guests服务配置
sudo systemctl status libvirt-guests
cat /etc/default/libvirt-guests

7. 检查资源状态

# 检查存储池状态
virsh pool-list --all
virsh vol-list <存储池名称>
# 检查网络状态
virsh net-list --all

8. 尝试手动启动并观察错误信息

# 尝试启动虚拟机并观察输出
virsh start <虚拟机名称>
# 如果启动失败,查看详细错误
virsh start --console <虚拟机名称>

9. 检查系统资源

# 检查内存和磁盘空间
free -h
df -h
# 检查KVM模块状态
lsmod | grep kvm

常见原因排查

  • 资源不足:内存、磁盘空间不足
  • 配置错误:虚拟机XML配置问题
  • 存储问题:镜像文件损坏或路径错误
  • 服务异常:libvirtd服务重启
  • 主机问题:主机重启或崩溃
  • 权限问题:文件权限或SELinux/AppArmor限制

通过以上日志检查,通常可以找到虚拟机异常关闭的原因。重点关注关闭时间点附近的错误信息和警告信息。

发表评论
博客分类