Dell XC系列服务器所用Satadom卡的镜像克隆及更换for Nutanix
Nutanix集群所用的Dell XC系列服务器上板载有Satadom卡,专门用于Hypervisor系统引导,以确保虚拟化层的完整性与稳定性。一般来说,这块板载的Satadom卡存在一定的使用寿命。如果出现I/O Error、Cannot open volumes的提示或者NCC服务自检出WARN - Hardware Satadom is wore and tore
,则需在其报废不可读之前主动更换。在更换前需要克隆原Satadom镜像,并导入至新Satadom卡中。
适用场景
注意:本教程仅适用于原Satadom仍可正常引导、读写的情况。如果Satadom已损坏或者无法引导节点,则本手册方法不适用,需要完全重刷Satadom及对应ESXi系统。
系统环境:Nutanix (AOS 4.7.x~5.5.x) + VMware ESXi (5.5~6.7)。如果用NX自带的AHV虚拟化环境,则操作可能有所不同。
镜像下载
Satadom卡的克隆工作需要在另外特制的CentOS系统中进行,而不是在ESXi中。
专用镜像下载:官方下载源
文件名:centos6-satadom-1-25-2016.iso
MD5值:3666ec042b14073d1a12dcdfb1b16188
准备工作
通过SSH登陆待更换Satadom卡的主机节点上的CVM:
1、查看节点IP和节点ID信息:
$ ncli host ls
记录下节点ID,后面要用到。
2、确认主机的本地磁盘上是否有足够空间存放镜像文件(大小一般为64G):
$ df -h | grep -E 'Use|/dev/sd.1' $ list_disks
这两条命令都可以看到当前本地磁盘的使用情况。综合选择一块负载比较轻的磁盘,记录下对应的SN序列号。
3、检查集群容忍度(所有值需≥1)以及是否有未处理的警报:
$ ncli cluster get-domain-fault-tolerance-status type=node $ ncli alert ls | grep -E 'Mes|Cre' ; date
4、检查当前集群服务状态:
$ cluster status | grep -v UP $ svmips | wc –w $ nodetool -h localhost ring | grep Normal | grep -c Up
5、检查节点是否与集群IP有活动的通信链路(192.168.5.2
为集群虚拟IP):
$ allssh 'ssh root@192.168.5.1 esxcfg-route -l' | grep --color 192.168.5.2
如果有信息报出,则需要待链路通信全部结束才可进行后续操作。
克隆Satadom镜像
1、通过vSphere Client迁移主机上除CVM外所有虚拟机,然后将主机置于维护模式。
2、将CVM置于维护模式,防止主机离线超过30分钟后被踢出Nutanix的Metadata Ring(host-id
数值根据实际节点ID替换掉):
$ ncli host edit id={host-id} enable-maintenance-mode=true
3、关闭CVM:
$ cvm_shutdown -P now
4、登陆iDRAC,启动VNC虚拟控制台
5、进入控制台后挂载虚拟镜像:centos6-satadom-1-25-2016.iso,并将下次启动顺序改为“Virtual CD/DVD/ISO”,然后重启主机。
6、引导进入系统,使用下列信息登陆:
用户名:root,密码为空。
7、检查是否已识别到Satadom卡(一般标识为SATADOM-SL 3ME/3IE3
):
$ lsscsi
8、克隆Satadom卡镜像,并将其保存到本地磁盘上:
a) 罗列所有磁盘名称及对应的序列号:
$ echo /dev/sd? | xargs -t -n 1 smartctl -i 2>&1 | grep -E "sd|Serial"
核对本地磁盘的序列号是否和之前检查的一致,然后记录下对应的磁盘位置,下步用。
b) 挂载本地磁盘的首个分区“sd*1”:假设我们要挂载到/dev/sde
,那么它的首个分区位置就是“sde1”:
$ mkdir /tmp/hddmnt $ mount /dev/sde1 /tmp/hddmnt $ mkdir /tmp/hddmnt/clone_image
c) 克隆Satadom卡镜像(/dev/sda
为Satadom卡的磁盘位置):
$ cd /tmp/hddmnt/clone_image $ dmesg -n 1 $ dd if=/dev/sda bs=1024K | tee node1.img | md5sum > node1.img.md5sum
复制耗时一般为15~20分钟左右,视Satadom的使用时长,复制时间会有所增加。如果复制耗时超过2个小时,则可能这个Satadom因寿命问题无法进行克隆。只能换新后重刷!
d) 使用sync命令强制同步磁盘缓存:
$ sync ; sync
e) 使用diff命令校验克隆镜像的一致性:
$ diff -s /dev/sda /tmp/hddmnt/clone_image/node1.img
提示:Files XXXX are identical
表示校验通过;Binary files XXXX differ
表示失败,需要重新克隆。
f) 校验克隆镜像的hash值:
$ md5sum /tmp/hddmnt/clone_image/node1.img $ cat /tmp/hddmnt/clone_image/node1.img.md5sum
对比输出的两个md5值是否一致。
g) 通过两次校验后,卸载刚刚创建的新分区,然后关机:
$ cd $ umount /tmp/hddmnt $ shutdown -h now
更换硬件并恢复镜像
1、更换物理Satadom卡硬件(本处略)。
2、开机,通过iDRAC里的VNC控制台重新挂载之前下载的引导镜像,并引导进入系统。
3、挂载克隆时指定本地磁盘的首个分区:
$ mount /dev/sde1 /tmp/hddmnt
4、查看新Satadom卡的磁盘信息,并记录下设备路径(一般为/dev/sda
不变):
$ lsscsi | grep SATADOM
5、将镜像写入新Satadom卡中,然后同步磁盘缓存:
$ dmesg -n 1 $ dd if=/tmp/hddmnt/clone_image/node1.img of=/dev/sda bs=1024K $ sync ; sync
此处耗时约为10分钟。注意观察复制过程中的进度状态。
6、再次使用diff命令校验克隆镜像的一致性:
$ diff -s /dev/sda /tmp/hddmnt/clone_image/node1.img
7、再次验证Satadom卡上镜像的hash值:
$ md5sum /dev/sda > node1.img.md5sum $ cat /tmp/hddmnt/clone_image/node1.img.md5sum
对比输出的两个md5值是否一致。两次验证有任何一次出现不一致,则需要重新复制文件。
8、至此,新Satadom卡克隆及更换工作完毕。从本机磁盘上删除之前提取出的镜像临时文件:
$ cd /tmp/hddmnt/clone_image/ $ rm node1.img $ rm node1.img.md5sum $ cd .. $ rmdir clone_image $ cd ..
9、卸载挂载的本地磁盘,然后在VNC控制台中恢复正常本地引导并重启主机:
$ umount /tmp/hddmnt $ reboot
10、正常引导启动后,打开CVM。
更换后的状态检查
1、检查节点时间是否同步:
$ allssh 'date'
2、检查CPU频率是否正常(和其他节点保持一致即可):
$ cat /proc/cpuinfo | egrep "model name|cpu" | sort | uniq
3、退出CVM维护模式:
$ ncli host edit id={host-id} enable-maintenance-mode=false
4、待服务完全启动完毕,检查集群状态:
$ ncli cluster get-domain-fault-tolerance-status type=node $ cluster status | grep -v UP
注意事项
针对ESXi 6.0系统,在完成上述操作后,可能会无法启动CVM(提示找不到指定的Datastore)。具体问题如下:
A cloned and replaced SATADOM drive is successful (by using the dd procedure), but the NTNX-local data store is not remounted. This causes the Controller VM of the host to become orphaned or missing. Also, the Controller VM fails to start.
解决办法:
The hypervisorwas able to only find the SATADOM partition device and add, using the original name, then register the Controller VM again with the original name.
1、通过SSH登陆主机的ESXi管理命令行。
2、列出系统识别到的Datastore ID:
$ esxcli storage vmfs snapshot list
3、重新挂载上述Datastore(“XXXX”处替换为实际值):
$ esxcli storage vmfs snapshot mount -u XXXX
4、重新尝试启动CVM,此时就应该可以正常启动了。
— END —