问题1: externalnId号
虚拟机突然出现很多externaln +vmid 的虚拟机,这样的vm无法开机或者删除。
需删除 主机上对应的 id.recovery 文件,重启vdsm即可。
问题2 :对于ovirt中的 虚拟机在界面上出现 异常,显示 ?的 状态。分析engine的代码
? 对应平台的三种状态:
case NotResponding:
case Unknown:
case Unassigned:
return getApplicationResources().vmStatusUnknown();
依次分析:
1) NotResponding 一般为一个主机上的个别虚拟机出现异常
是调用完相应的vds command之后 ,如 GetVmStatsVDS ChangeDiskVDS PauseVDSC 等命令,返回值中携带vm的详细信息。而后会 更新 vm的dynamic数据VdsBrokerObjectsBuilder.buildVMDynamicData(mVmReturn.mVm),而当返回的xml中携带monitorResponse 的值 小于0,则会将该vm 置为notResponding 。
2)Unknown 一般为主机异常断电,平台与主机的网络出现异常时的情况
VdsNotRespondingTreatmentCommand 会将出现问题的vds上的 vm设置为unknow
而一般出现这种情况的是 调用主机上rpc接口,rpc调用出现 异常,通常为网络问题。抛出VDSNetworkException
vdsManager.handleNetworkException((VDSNetworkException) callException, _vds);
3) 第三种就是返回了平台没有定义的状态
解决方案
对应第一种,只需登陆vm所在主机,kill vm所对应的进程 即可。
virsh -c qemu+tls://ip/system
list -all
destory id即可
或者直接 kill -s 9 pid 即可。
而第二种就需检查网络的状态,而后主机自身的状态。