使用救援镜像恢复Nutanix集群中故障的节点CVM(适用于ESXi虚拟化)
当Nutanix集群中某一节点的CVM遇到操作系统故障无法启动时,可以尝试通过救援镜像恢复CVM服务,而无需重刷整个节点。
风险说明:CVM作为节点存储控制器,异常的恢复操作可能导致所在节点上的数据不可用或元数据损坏。如果无法确定是否能通过该方式恢复CVM,建议将该节点强制踢出集群再重新加回。踢出集群的步骤请参阅:https://portal.nutanix.com/kb/2379
环境说明
以下操作基于AOS 5.5+ESXi 6/6.5环境。所涉及的相关CVM配置项请根据实际情况修改。示例如下:
- 待恢复的故障CVM(CVM-1):IP为192.168.1.3,所在Hypervisor的IP为192.168.1.2
- 集群内任意一台正常的CVM(CVM-2):IP为192.168.1.6
恢复流程
1. 登录到CVM-2,找到CVM的OS镜像目录:
$ cd /home/nutanix/data/installer $ ls
确认当前AOS版本号(以V5.5.9.1为例):el7.3-release-euphrates-5.5.9.1-stable-8853e467f66bd91981d3bb9e8f7ee074
$ cd el7.3-release-euphrates-5.5.9.1-stable-8853e467f66bd91981d3bb9e8f7ee074/
2. 生成镜像文件:
$ ./make_iso.sh svmrescue RescueShell 50
3. 等待ISO镜像生成完毕,将ISO从CVM-2中复制到CVM-1的本地存储介质(local datastore)上:
$ cd .. $ scp svmrescue.iso root@192.168.1.2:/vmfs/volumes/NTNX-local-ds-CVM-1-A/ServiceVM_Centos/
4. 在vCenter中,编辑CVM-1虚拟机上的“CD/DVD驱动器”挂载路径:
从[NTNX-local-ds-CVM-1-A] ServiceVM_Centos/ServiceVM_Centos.iso
改为[NTNX-local-ds-CVM-1-A] ServiceVM_Centos/svmrescue.iso
保存虚拟机设置,并打开CVM电源。
5. 打开VNC虚拟控制台。当系统进入引导列表时,选择“Rescue Shell”,回车继续。
6. 等待进入Shell,待初始化完毕后,在Shell中执行恢复命令:
$ chmod +x do_svmrescue.sh $ ./do_svmrescue.sh
该脚本将执行CVM救援操作。
7. 待重刷完成,通过vCenter手动关闭CVM-1,并恢复该虚拟机的“CD/DVD驱动器”挂载路径:[NTNX-local-ds-CVM-1-A] ServiceVM_Centos/ServiceVM_Centos.iso
8. 打开CVM电源,使用nutanix账户进入系统。然后等待约5分钟,至所有服务自启动完毕。
CVM登陆用户名:nutanix;密码:nutanix/4u
9. 根据原网络配置CVM-1上的eth0
网卡:
$ vi/etc/sysconfig/network-scripts/ifcfg-eth0 # Auto generated by CentosNetworkInterfacesConfig on Timepoint GATEWAY="192.168.1.254" NM_CONTROLLED="no" NETMASK="255.255.255.0" IPADDR="192.168.1.3" DEVICE="eth0" TYPE="Ethernet" ONBOOT="yes" BOOTPROTO="none"
保存,然后重启网络服务:
$ service network restart
网络重启完毕,确认与集群内其他CVM能互相Ping通即可。
10. 返回至CVM-2上,对CVM-1发起AOS引导修复:
$ boot_disk_replace -i 192.168.1.3
注:如果第一次执行脚本报错,可以检查./data/logs/boot_disk_replace.log
,若发现提示Failed to run gen2_svm_boot with ret=255 out= err=Connection to 192.168.1.3 closed by remote host.
则再次执行上述命令。(这是重刷脚本的一个已知Bug,不影响实际结果)
11. 修复期间CVM-1会重启一次,当再次进入系统时,跟踪AOS服务启动状态:
$ watch genesis status
待所有服务启动后,故障CVM修复完毕。
12. 确认集群状态即可:
$ cluster status | grep -v -i up
注意事项
1. 恢复后的CVM所带的NCC组件版本将重置成当前AOS内置的NCC版本,可能会比集群所用的版本低。此情况一般出现在集群单独升级过NCC时。该节点CVM将在下次NCC检查任务发起时自动进行升级,同时在Prism的“任务”标签卡中可以查看到升级进度。若提示升级失败,则需要使用离线NCC安装脚本手动更新。不一致的版本可能会触发错误的报警事件,影响集群稳定性。
2. 恢复后的CVM可能会出现节点时钟与集群不一致的问题,并触发相关报警事件。这可能是当前节点NTP同步还未完成导致的,一般等待若干小时后即可自行恢复。
— END —