虚机创建异常,使用nova show 虚机ID提示fault报错信息:No valid host was found,There are not enough hosts available
检查所在宿主机上资源是否充足
nova hypervisor-list | grep 宿主机名称
nova hypervisor-show 宿主机ID
MEM和VCPU都满足本次创建虚机规格要求
查询虚机请求的request-id
nova instance-action-list 虚机ID
用request-id 到控制平面上的nova-scheduler、nova-api接口日志、宿主机上日志(nova-compute)查询相关报错,经检查未出现相关报错
检查宿主机上资源使用情况,怀疑宿主机上有类似脏数据导致资源信息被占用
需要登录nova-api的数据库,检查resource_providers表中该宿主机上使用的资源信息
select * from resource_providers where name='宿主机名称'\G;
查询到资源allocation里面虚机数量,与实际查询宿主机上虚机数量进行比对
nova list --all --host 宿主机名称
发现其实数据库里面查询出来有2个虚机,但实际宿主机上只有一个,说明前期数据库中有脏数据(理论上虚机删除后相关数据会同步删除,可能异常操作导致留有脏数据)
因此需要将异常虚机信息进行删除
delete from allocations where resource_provider_id='313' and consumer_id='异常虚机的id';
删除完成后再次创建正常