前言: 这个问题是偶然情况下遇见的,在社区分享给大家以作参考。感谢CTI的各位大哥,是一线的坚实后盾
需求: 两个超融合6.0.0R5集群,虚拟机进行跨集群迁移。
环境: 源端集群CPU配置:2 个CPU * 16核 目的集群CPU配置:2个CPU * 24核 虚拟机:Centos虚拟机,硬件配置:18C,100G内存,1T+2T的磁盘
问题: 迁移该虚拟机时失败,且操作日志报错:【操作已中断!是网络异常或不稳定导致,请稍后重试。】
处理过程:1、 检查两个600R5集群之间的管理网通信正常,且无安全设备阻隔。 2、 检查源虚拟机的硬件配置,发现为18插槽,每插槽1核数的vCPU配置。
3、 通过抓取迁移时qemu启动参数发现,源端的一个mem-node内存数量为50G,目的端一个mem-node内存数量为100G,存在不一致情况。
4、 因为启用了Numa调度,如果虚拟机配置的vCPU核心数是1,且插槽数大于1,会进行特殊处理。例如虚拟机配置的是18槽 * 1核心,会根据服务器实际存在的插槽数进行修改vCPU的配置参数。
按照逻辑,会先计算出需要的插槽数, 逻辑为:插槽数 = (该虚拟机总核数 + 单颗物理CPU的核数 – 1 )/ 单颗物理CPU的核数
接着计算出核心数, 逻辑为:核心数 = (该虚拟机总核数 + 插槽数 – 1 )/ 插槽数
当前案例中虚拟机的总核数为18
所以在源端集群时,插槽数为2,核心数为9。也就是虚拟机开机会使用2插槽的CPU,每插槽各9核心的方式去分配资源。由于开启了Numa调度,需要的100G内存会绑定在两个物理CPU上,也就是各50G。这样形成了mem-node0= 50G,mem-node1 = 50G 。
但是在目的端集群时,插槽数为1,核心数为18。也就是虚拟机开机实际使用的是1插槽的CPU,每插槽18核心。而且由于Numa调度,此时100G内存只绑定在一个物理CPU上。形成了mem-node0 = 100G的情况。
5、 由于迁移前后需要对比虚拟机的各项参数,为确认一致才能算作迁移完成,此时源端有mem-node0 和mem-node1 ,但是目的端只有mem-node0。构建出来的启动参数源目不一致,集群认为迁移过程有异常情况,导致迁移失败。
规避方案:1、 配置虚拟机vCPU核数时,直接在此处填写,让平台自动生成插槽数和核心数。而不是直接修改插槽数和核心数
2、 迁移虚拟机时使用SCMT信服云迁移工具、HCI系统镜像、HCI P2V迁移工具、导出导入的方式进迁移。 |