vsan存储服务器非正常关机导致虚拟机故障解决方法

Vsan是一种以vSphere内核为基础进行开发、可扩展的分布式存储架构,Vsan通过在vSphere集群主机当中安装闪存和硬盘来构建vsan存储层,这些设备由vsan进行控制和管理,vsan形成一个供vSphere集群使用的统一共享存储层。
vSphere提供了HA功能,保证单台主机故障后业务可以在其他的主机上运行,同一个虚拟机的同一份数据,必须保存在不同主机上,也允许有主机故障。但是如果多台主机同时故障的话,就会导致整个vsan存储崩溃,一般突然断电或者非正常关机就会导致虚拟机故障,下面就是非正常关机导致虚拟机故障的恢复方式。
·
故障环境为一套VMWARE VSAN 的超融合基础架构,共包含三台服务器节点。每台服务器节点上配置2块200G容量的SSD硬盘和4块1T容量的机械硬盘,共6块SSD硬盘和12块机械硬盘。
每个服务器节点上创建两个磁盘组,每个磁盘组使用1个SSD硬盘作为缓存盘,2个机械硬盘作为容量盘,共配置6个磁盘组,组成VSAN存储空间存储虚拟机文件。
在使用过程中,由于非正常关机,导致VSAN中,逻辑架构出现故障,部分虚拟机磁盘组件出现问题,导致磁盘文件丢失。
·

一.磁盘镜像和故障检测

为防止在数据恢复过程中由于部分操作对原始磁盘造成不可还原的修改,导致数据出现二次丢失, 对原始磁盘进行镜像备份
将VSAN的节点服务器上所有硬盘编号拆出,接入到备份服务器中,使用WinHex软件对所有硬盘进行底层的逐字节镜像备份
获取到客户三台节点服务器上的所有硬盘的底层镜像,共18个镜像文件。
对全部镜像文件进行分析扫描,发现故障虚拟机的元数据和组件信息没有严重损坏和丢失的情况,保留较为完整,有很大的把握可以完整恢复。
·

二.恢复方案

1、扫描组件信息。
因为VSAN中所有文件以对象的方式存在,而每个对象会被分割为多个组件,扫描所有组件信息,组件信息中记录组件ID和该组件属于哪个对象的对象ID等信息。编写程序扫描组件信息。
2、提取组件。
根据组件中的信息,找到每个数据块和该块在组件的逻辑位置,编写程序提取完整组件。
3、合并VMDK文件。
根据组件信息中的描述信息将组件按照描述信息中记录的RAID级别和各个组件在对象中的逻辑位置进行组合,拼接出完整的对象,即完整的vmdk文件。
4、刷新缓存盘数据。
每个组件可能会有部分数据留在缓存盘上,并没有写入到容量盘中,编写程序将缓存盘上的数据刷新到对应的组件或对象中。
5、合并快照。
对于有快照的vmdk文件,将快照和父盘进行合并。
6、解析vmdk,恢复文件。
将合并完成后的vmdk文件进行解析,并提取其中SQL server 2008 R2数据库的备份文件。
7、数据库还原和检测。
安装SQL server 2008 R2数据库,将提取完成的数据库备份文件进行还原操作,还原过程没有任何报错,成功还原后使用dbcc命令检查数据库完整性,检查完成无任何报错。