drbd虚拟机宕机恢复方法
问题现象
云南计算节点YN-ec-compute-19因系统盘损坏宕机且操作系统无法恢复,其上本地虚拟机无法疏散且无法迁移
拟采用drbd备份的数据对compute19上的虚拟机进行恢复
恢复方法
1、确认compute19的drbd主备节点,一般是相邻的节点compute18或compute20,确认方法如下
登录compute20 lsblk显示有/dev/drbd0和/dev/drbd1两个设备,其中/dev/drbd1已挂载到目录/one_images
查看/etc/drbd.d/drbd0.res或者/etc/drbd.d/drbd1.res可以确认compute20节点是否compute19节点的备份数据存放节点
通过以上可以判断出drbd数据备份的逻辑:
(1)compute19和compute20互为主备节点
(2)compute20的drbd1为primary,/dev/drbd1挂载至/one_image目录,凡是compute20写入/dev/drbd1中的数据都会同步至compute19节点的/dev/drbd0设备中去
(3)同理,compute19上的/dev/drbd1也是挂载至/one_image目录,凡是compute19写入/dev/drbd1中的书都会同步至compute20节点的/dev/drbd0设备中去
2、因compute19节点已经宕机且系统无法恢复,故设法将compute20节点中的/dev/drbd0设备中的虚拟机数据取出,再挑选资源足够的计算节点恢复该虚拟机。
3、将compute20节点的drbd0提为primary,然后挂载至/com19_recovery目录
修改/etc/drbd.d/drbd0.res,将YN-ec-compute-19修改为YN-ec-compute-20
drbdadm primary drbd0将drdb0提为primary后挂载至/com19_recovery目录,验证其中是否有compute19同步的虚拟机目录
为防止/dev/drbd0设备同步机制再次运行,建议可以将/com19_recovery/目录下的问题件拷贝至compute20上的其他设备中去,比如新建/com19_bak目录,cp -r /com19_recovery/* /com19_bak。本例中compute19节点已停止运行,故设备中不存在drbd同步机制再次运行的风险了,不做上述拷贝也可以。
4、挑选一台计算节点YN-ec-compute-20恢复compute19上的一台虚拟机6fcb4f2f-e001-4965-b93a-f2d9c751609c,本例中直接挑选了com19的备份节点com20作为恢复虚拟机的节点,也可以挑选其他资源更加充足的节点,无论挑选哪个计算节点,操作方法均相同。
5、在YN-ec-compute-20上执行文件拷贝,并确认目录和文件属主以及权限如下,如果不相符需要和正常运行的虚拟机目录文件权限属主作对照修改一致
cp -r /com19_bak/6fcb4f2f-e001-4965-b93a-f2d9c751609c /var/lib/nova/instances/
6、nova show确认openstack记录该虚拟机在已宕机计算节点compute19上;
执行nova evacuate [instance uuid] [目的计算节点] --on-shared-storage,其中目的计算节点即为步骤5中手动操作恢复虚拟机目录的节点,本例中为YN-ec-compute-20
虚拟机由rebuild状态转换为Active,并且计算节点更换为YN-ec-compute-19
vnc验证可以访问虚拟机
7、compute19上的其他虚拟机参照步骤4-6操作依次恢复。