服务器
VSAN是一种以vSphere内核为基础进行开发、可扩展的分布式存储架构。VSAN通过在vSphere集群主机当中安装闪存和硬盘来构建VSAN存储层,由VSAN进行控制和管理,形成一个供vSphere集群使用的统一共享存储层。
vSphere基础架构中的存储正在发生变化,传统的基于LUN的存储管理机制将存储能力应用于数据存储级别。底层存储阵列不了解虚拟化,也不了解文件系统。VMware的下一代策略驱动存储方式不再基于传统的VMFS存储卷,而是基于对象存储系统模型,基于虚拟数据存储或者分布式数据存储,
VSAN数据存储是一个对象存储,以文件系统的形式呈现给vSphere主机,这个对象存储服务会从启用VSAN集群中的每台主机上加载卷。将他们展现为单一的、在所有节点上可见的分布式共享数据存储,VSAN简化了存储配置,对于虚拟机来说,只有一个数据存储,这个分布式数据存储来自VSAN集群中每一台vSphere主机上的存储空间,通过磁盘组进行配置,在单独的存储实体中存储所有的虚拟机文件,这种数据存储的方式相对来说已经很安全了,但是在出现闪存盘或者是容量盘出现故障的时候,数据会往其他的节点转移,在转移的时候过程中,也有可能出现其他的故障,我公司近期解决了一个VSAN存储崩溃,虚拟机无法访问的故障。
出现故障是四台dell的服务器组成的VSAN集群,每台服务器上两个磁盘组,一个磁盘组是一个SSD硬盘带5块SAS硬盘,SSD做闪存,SAS做容量盘,其中一个节点上的一个磁盘组中的容量盘出现故障离线,这个时候VSAN进行数据重构迁移,在很不赶巧的时候,这个时候由于停电导致数据迁移没有完成,在来电的时候,其中另外一个磁盘组中的容量盘也由两块故障离线了,导致整个数据存储出现故障,VSAN的管理控制台可以登陆,但是所有的虚拟机都无法访问了。
先把四个节点的所有硬盘都做个只读的镜像,包含SSD闪存盘和SAS容量盘,还有三块因故障离线的硬盘,备份完成之后,把所有的原盘都还原到服务器上,开始对镜像文件来进行分析底层数据存储结构,来确认虚拟机所在硬盘的分布信息,因为现有的虚拟化程序没有针对VSAN的架构来恢复虚拟机的,工程师在分析底层数据存储结构的时候,也在做相应的程序开发,来测试数据分布信息的准确性。
单独分析每个节点上的两个磁盘组,看下磁盘组内的闪存硬盘和容量盘之间的对应关系,每块硬盘都有一个唯一标识进行磁盘间的对应,根据硬盘的ID信息,判读磁盘组里面的硬盘ID信息。
1、在每块硬盘上获取磁盘的UUID和磁盘组的UUID
2、根据每个磁盘组中的容量盘的组件信息获取此容量盘的组件信息
3、根据组件信息中记录的组件的MAP位置提取组件位图。
4、根据组件的位图提取组件数据和缓存数据
5、根据组件的描述信息获取组件所属对象及组件顺序,并把组件合并成对象
6、根据对象,提取数据。
对象也可以看成一个卷,也可以理解成是一个逻辑卷,每个存在于数据存储上的VSAN对象都是由多个组件构成,这些组件分布于集群主机上配置的磁盘组中,在恢复的过程中,组件的信息提取是关键的步骤,因为组件是每个对象的重要组成部分,本次故障组件损坏的很少,恢复出来的虚拟机都能正常启动,这次故障解决在分析组件位图和磁盘对应关系用来比较长的时间,但是最后把所有的技术难题都解决了,恢复出来的虚拟机都正常启动,圆满解决了VSAN出现故障导致数据丢失的恢复。