您好, 访客   登录/注册

基于VMWare vSAN集群节点损坏的数据恢复研究

来源:用户上传      作者:张宇

  摘要:为了解决VMware vSAN集群中某些节点意外损坏导致集群中部分虚拟机无法正常使用问题,提出了一种基于vSAN集群中损坏节点元数据和现有节点元数据重新恢复用户损坏数据的方法。在vSAN集群中某个节点的缓存硬盘或容量硬盘损坏率达到策略上限时,或vSAN集群出现突然断电、网络故障等特殊情况时,导vSAN节点宕机无法正常使用时可启用此恢复方法。通获取宕机节点中缓存硬盘中的缓存链表及容量硬盘中组件相关信息来确认用户损坏数据的范围,并根据包含用户损坏数据的现存节点中的相关信息进行重建,进而实现对损坏虚拟机的恢复。实验结果表明,经该方法在vSAN集群节点损坏硬盘时或节点不可用时,可恢复用户丢失的重要数据,并且恢复的概率相当高。
  关键词:VMware vSAN集群;节点损坏;数据恢复
  中图分类号:TP3 文献标识码:A
  文章编号:1009-3044(2020)01-0272-02
  1VMware vSAN集群介绍
  VMware vSAN是企业级存储虚拟化软件,可以理解为软件定义的基于服务器集群搭建的分布式存储。分布式可以将数据、10访问分散到多个节点,让整个存储系统随着节点的增多容量和性能线性增加。
  VMware vSAN的设计目标是为了解决VMware传统集群模式下共享存储无法灵活扩展的问题。随着企业应用产生的数据越来越多,因此对存储容量的要求也越来越大,并且在面临的可扩充性问题和性能方面的压力也越来越大。VMwarevSAN在兼容VMware传统模式集群的功能基础之上、在伸缩性和可靠性方面进行了大量改进,最大的优点是突破了VMware传统模式集群不可横向扩展的功能。
  1.1VMware vSAN集群结构
  VMware vSAN聚合本地本或直接连接数据存储设备,并创建在vSAN集群的所有主机之间共享的单个存储池。VMwarevSAN消除了对外部共享存储的需求,并简化了存储配置和虚拟机配置。VMware vSAN是ESXi虚拟机管理程序中包含的分布式软件层,它与VMware vSphere完全集成。VMware vSAN支持需要共享存储的VMware vSphere功能,例如高可用性(HAl,vMotion和分布式资源调度程序(DRS)。VM存储策略使您可以定义虚拟机存储要求和功能。VMware vSAN群集中的每个主机都可以为群集提供存储。这些存储设备组合在一起以创建单个VMware vSAN数据存储。混合VMware vSAN集群使用SSD(闪存硬盘)硬盘作为缓存层,使用HDD(机械硬盘)硬盤作为容量层。全闪存的VMware vSAN群集将SDD硬盘设备用于缓存层和容量层。该体系结构创建了专为虚拟环境设计的闪存优化,弹性共享数据存储。VMware vSAN集群架构图如图1所示。
  1.2 VMware vSAN集群存储过程
  VMware vSAN集群的每个节点中必须包含一个或多个磁盘组,磁盘组是为vSAN集群提供性能和容量的主机和物理设备组上的物理存储容量单元。磁盘组必须由一块SSD硬盘和一块或多块HDD硬盘组成。用于缓存的磁盘设备不能在磁盘组之间共享,也不用于其他目的,单个缓存设备必须专用于单个磁盘组,在混合集群中,SSD硬盘用于缓存层,HDD硬盘用于存储容量层。VMware vSAN集群的可用容量是每个节点磁盘组中容量层大小的集合,缓存容量不计算在可用容量内。
  vSAN集群以灵活的数据容器也就是对象形式存储并管理数据,在vSAN集群中对象的类型分为四种,名称空间对象、交换空间对象、虚拟磁盘对象及虚拟磁盘快照对象。对象又由多个组件组成,并且vSAN集群给对象组件设计了不同的存储策略来提高读写对象数据的性能及安全性,对象的组件才是vSAN集群存储的最小单元。vSAN集群为了提高性能将对象的不同的组件存储在不同节点不同磁盘组中的不同容量硬盘或缓存硬盘中。
  VMware vSAN集群在存储过程中为了保证数据不丢修,数据的存放位置就要一定的要求了,一个对象的相同数据的不同组件必须保存在不同的节点上。图2是vSAN集群的存储过程架构图:
  2VMware vSAN集群节点损坏分析
  VMware vSAN集群至少由三个节点组成,每个节点都有一个或多个磁盘组,每个磁盘组中可以是全缓存硬盘或缓存硬盘加容量硬盘的组合。每个硬盘都是一个独立的存储单位,vSAN集群中的最小存储单位不会跨磁盘组存储,更不会跨硬盘存储。因此,当磁盘组中的某个硬盘损坏或某个节点的磁盘组损坏时,只会丢失存储于这个硬盘或磁盘组中的最小单位数据,但由于vSAN集群存储过程中将一个对象数据分割成N多个最小单位数据,因此即使丢失部分数据也会影响整个vSAN集群。
  2.1磁盘组中硬盘不可用分析
  磁盘组中至少有一个或多个缓存硬盘和一个或多个容量硬盘,当有多个缓存硬盘时,其中某个缓存硬盘不可用时不会影响vSAN集群中的数据,只会影响其10性能,当损坏的是唯一的缓存硬盘时,整个磁盘组将不可用,会影响vSAN集群中的数据。当其中某个容量硬盘不可用时,会丢失此容量硬盘中的数据,是否影响vSAN集群中的数据,取决于用户配置的vSAN集群策略。当vSAN集群策略不允许容量硬盘缺失的情况时,某块容量硬盘的不可用会导致所有存储在此容量上的组件数据丢失,从而导致所有包含这些组件的对象数据不可用,最终导致用户数据丢失。
  因此得出结论,vSAN集群中当磁盘组中有硬盘不可用时,有一定的机率会影响vSAN集群中的用户数据,取决于不可用的硬盘类型以及vSAN集群配置的存储策略。当损坏的硬盘影响vSAN集群中的数据时,可先检测不可用的硬盘是否可单独运行并可以读取其中的二进制数据,如果可以,则可通过分析损坏硬盘中的组件信息,提取此硬盘中的所有组件数据,最后结合其他可用硬盘中的组件数据合并成不可访问的对象数据。   2.2 vSAN集群节点不可用分析
  当vSAN集群出现突然断电、网络故障等特殊情况时会导致vSAN集群各节点之间的元信息不一致,因此会使vSAN集群中的部分节点不可用,而此时由于不可用的节点无法加入到vSAN集群,也无法同步正确的元信息,也就意味着这个节点将永远被孤立,这个节点的数据也将永远无法正常使用。从而引发vSAN集群故障,用户部分或全部数据无法访问。
  因此得出结论,当vSAN的节点不可用时一定会影响vSAN中的用户数据,并且很大概率会导致vSAN集群瘫痪,所有数据都无法正常使用。当出现vSAN集群瘫痪或vSAN集群节点不可用时,可逐个分析vSAN节点中的磁盘组信息,然后根据磁盘组的信息逐个分析磁盘中的硬盘信息,并根据磁盘的类型,分析并获取缓存列表及组件位图等信息。最后汇总获取的所有信息,并根据对象信息重组相关组件的数据,最后还原成用户可访问的数据。
  3基于vSAN集群节点损坏分析设计恢复算法
  根据vSAN集群节点损坏的深入分析,发现无论是vSAN节点中磁盘组中的部分硬盘不可访问还是vSAN集群中部分节点不可访问,都可根据vSAN的存储结构进行逆向重构,从而恢复用户不可访问的重要数据。
  3.1 vSAN节点磁盘组硬盘不可用恢复算法设计
  当vSAN节点磁盘组中出现硬盘不可用时,如若vSAN集群出现用户数据丢失的情况,则表明磁盘组中丢失的硬盘比较重要,可先判断硬盘是否存在物理故障并且检测能否读取硬盘的二进制数据,如果可以读取二进制数据,则判断不可用磁盘的类型,如果是缓存硬盘,则分析并获取其中的缓存链表,然后根据缓存列表提取各组件缓存的数据,然后分析并获取此磁盘组中其他的容量盘的组件信息,并手动将组件的缓存数据刷新到对应的组件中。如果不可用的硬盘为容量盘,则分析并获取其中的组件信息列表,然后分析并获取此磁盘组中缓存盘的缓存链表信息,并根据缓存链表信息将组件的缓存数据手动刷新到对应的组件当中。最后分析并获取vSAN集群中所有节点中所有磁盘组中硬盘的相关信息,并根据组件中包含的对象信息进行组件数据重组,然后生成用户可访问的数据。
  3.2 vSAN集群节点不可用恢复算法设计
  当vSAN集群中出现节点不可用,首先分析不可用节点中磁盘组的相关信息,根据磁盘组信息对磁盘进行分组,然后分析每组硬盘中的缓存硬盘以及容量硬盘,分别获取缓存硬盘中的缓存链表以及容量硬盘中的组件信息列表。接下来根据缓存链表获取组件的缓存数据,根据组件信息列表获取组件数据,并将组件的缓存数据手动合并到对应的组件数据中去。重复对每个磁盘组中的缓存硬盘和容量硬盘做同样的步骤。最后统计所有的组件数据,分析组件数据中描述的对象信息,将包含同一对象信息的组件数据根据组件配置信息合并成一个对象数据。合并完所有的对象数据后,将相关联的对象数据归类到一起,至此已经是用户可正常访问的数据了。
  4实验结果與分析
  为验证本文提出的恢复算法,将测试环境中的vSAN集群中的某个节点手动分离,并选择不迁移数据。此时vSAN集群中的部分对象将不可见,也就是部分数据会丢失。这时,通过本文提出的恢复算法,分析分离节点中的磁盘组及硬盘信息,并提取各硬盘中存储的组件数据,最后结合现有节点的组件数据合并成vSAN集群中丢失的对象数据。实验结果证明本文中提出的恢复算法几乎能恢复绝大部分的用户数据。
  5结束语
  本文在vSAN集群存储结构分析基础之上提出了一种解决vSAN集群节点损坏的数据恢复算法,此算法能够解决vSAN集群中节点损坏导致的用户数据丢失问题,极大的挽回数据丢失带来的损失。
转载注明来源:https://www.xzbu.com/8/view-15143730.htm