创建虚拟机失败,状态变成了 ERROR
可能原因
- 计算节点资源超卖严重: 调度器(Scheduler)认为还有资源,但发到具体的物理机上时,物理机真实的内存或 CPU 已经被占满,底层的 KVM 无法拉起进程。
- 网络分配超时(Neutron 报错): 消息队列太拥堵,导致 Nova-Compute 向 Neutron 申请 IP 和 Port 时超时。
- 查 ID 和状态: 先用
openstack server show <VM_ID>查看该虚拟机的详细信息,找到报错信息(Fault)和具体的Request ID。 - 看控制节点日志: 如果是调度阶段失败,去控制节点看
/var/log/nova/nova-scheduler.log。 - 看计算节点日志: 如果已经分配到了物理机但拉起失败,去对应物理机查看
/var/log/nova/nova-compute.log。通常可以通过全局唯一的Request ID在日志里搜索,判断是镜像下载超时、网络端口打不开,还是底层的 KVM/Libvirt 报错。
用户反映他的虚拟机登不上了,如何排查
先看状态,再网络,后日志
- 先用
openstack server show查看虚拟机的平台状态。如果是ERROR,说明底层拉起失败,直接通过virsh list去对应的计算节点看 KVM 进程还在不在。 - 如果状态是
ACTIVE,但连不上,说明是网络问题。我会去网络节点,用ping虚拟机的内网 IP,并用ovs-vsctl检查对应的底层虚拟网口流量,判断是安全组拦截了,还是底层大二层网络断了。 - 如果以上都正常,我会去查看该计算节点的
/var/log/nova/nova-compute.log,根据报错的Request ID定位是存储超时还是网络超时,从而根本解决问题。