虚拟机创建失败,提示“No valid host was found”如何系统性排查?
2026-08-11 09:19:15
# 云服务
No valid host was found 是 OpenStack 中最经典的创建实例失败报错之一。它来自 Nova Scheduler——调度器遍历所有计算节点后,发现没有任何一个节点能同时满足虚拟机的资源与约束需求,于是直接拒绝创建。
为什么会出现
调度器的工作是:通过 Placement 服务收集各计算节点的资源,依次用一系列 Filter(过滤器) 和 Weigher(权重) 筛选打分,最后挑出最优节点。只要被任一 Filter 拒绝、且没有节点能通过全部 Filter,就会报 No valid host。
系统性排查(三层)
1. 计算层:确认资源与节点状态
1 | openstack compute service list # 看 nova-compute 是否 up |
重点关注:计算节点 State 是否为 up、Status 是否为 enabled;节点的 vCPUs、RAM、Disk 剩余是否足够(注意超配比 overcommit);节点是否被误设为 disabled。
2. 网络层:Neutron 代理健康
1 | openstack network agent list |
若某计算节点的 neutron-openvswitch-agent 或 L2 代理 down,调度会因”该节点无法提供网络”而被过滤掉。
3. 存储层:Cinder 后端可用
若实例需要挂载 Cinder 卷或从卷启动,而 Cinder 后端异常,同样会无可用宿主。
进阶:看调度日志
真正的”定罪证据”在 nova-scheduler 日志:
1 | tail -f /var/log/nova/nova-scheduler.log |
日志会逐条打印每个节点被哪个 Filter 拒绝(如 ComputeFilter、AggregateInstanceExtraSpecsFilter、DiskFilter 等),直接告诉你卡在哪条规则。
配额(Quota)
别忘了项目配额:
1 | openstack quota show <project> |
若 instances / cores / ram 已用尽,新实例也会被拒。
小结
No valid host 是”调度器找不到合格节点”的统称。按 计算 → 网络 → 存储 → 配额 → 调度日志 的顺序系统性排查,通常几分钟内就能定位。