基于vmware vsan集群节点损坏的数据恢复研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于VMware vSAN 集群节点损坏的数据恢复研究
张宇
(北亚企安科技(北京)有限公司,北京100094)
摘要:为了解决VMware vSAN 集群中某些节点意外损坏导致集群中部分虚拟机无法正常使用问题,提出了一种基于vSAN
集群中损坏节点元数据和现有节点元数据重新恢复用户损坏数据的方法。
在vSAN 集群中某个节点的缓存硬盘或容量硬盘损坏率达到策略上限时,或vSAN 集群出现突然断电、网络故障等特殊情况时,导致vSAN 节点宕机无法正常使用时可启用此恢复方法。
通获取宕机节点中缓存硬盘中的缓存链表及容量硬盘中组件相关信息来确认用户损坏数据的范围,并根据包含用户损坏数据的现存节点中的相关信息进行重建,进而实现对损坏虚拟机的恢复。
实验结果表明,经该方法在vSAN 集群节点损坏硬盘时或节点不可用时,可恢复用户丢失的重要数据,并且恢复的概率相当高。
关键词:VMware vSAN 集群;节点损坏;数据恢复中图分类号:TP3
文献标识码:A
文章编号:1009-3044(2020)01-0272-02
开放科学(资源服务)标识码(OSID):
1VMware vSAN 集群介绍
VMware vSAN 是企业级存储虚拟化软件,可以理解为软件定义的基于服务器集群搭建的分布式存储。
分布式可以将数据、IO 访问分散到多个节点,让整个存储系统随着节点的增多容量和性能线性增加。
VMware vSAN 的设计目标是为了解决VMware 传统集群模式下共享存储无法灵活扩展的问题。
随着企业应用产生的数据越来越多,因此对存储容量的要求也越来越大,并且在面临的可扩充性问题和性能方面的压力也越来越大。
VMware vSAN 在兼容VMware 传统模式集群的功能基础之上、在伸缩性和可靠性方面进行了大量改进,最大的优点是突破了VMware 传统模式集群不可横向扩展的功能。
1.1VMware vSAN 集群结构
VMware vSAN 聚合本地本或直接连接数据存储设备,并创建在vSAN 集群的所有主机之间共享的单个存储池。
VMware vSAN 消除了对外部共享存储的需求,并简化了存储配置和虚拟机配置。
VMware vSAN 是ESXi 虚拟机管理程序中包含的分布式软件层,它与VMware vSphere 完全集成。
VMware vSAN 支持需要共享存储的VMware vSphere 功能,例如高可用性(HA),vMotion 和分布式资源调度程序(DRS)。
VM 存储策略使您可以定义虚拟机存储要求和功能。
VMware vSAN 群集中的每个主机都可以为群集提供存储。
这些存储设备组合在一起以创建单个VMware vSAN 数据存储。
混合VMware vSAN 集群使用SSD(闪存硬盘)硬盘作为缓存层,使用HDD(机械硬盘)硬盘作为容量层。
全闪存的VMware vSAN 群集将SDD 硬盘设备用于缓存层和容量层。
该体系结构创建了专为虚拟环境设计的闪存优化,弹性共享数据存储。
VMware vSAN 集群架构图如图1
所示。
图1VMware vSAN 集群架构图
1.2VMware vSAN 集群存储过程
VMware vSAN 集群的每个节点中必须包含一个或多个磁
盘组,磁盘组是为vSAN 集群提供性能和容量的主机和物理设备组上的物理存储容量单元。
磁盘组必须由一块SSD 硬盘和一块或多块HDD 硬盘组成。
用于缓存的磁盘设备不能在磁盘组之间共享,也不用于其他目的,单个缓存设备必须专用于单个磁盘组,在混合集群中,SSD 硬盘用于缓存层,HDD 硬盘用于存储容量层。
VMware vSAN 集群的可用容量是每个节点磁盘组中容量层大小的集合,缓存容量不计算在可用容量内。
vSAN 集群以灵活的数据容器也就是对象形式存储并管理数据,在vSAN 集群中对象的类型分为四种,名称空间对象、交换空间对象、虚拟磁盘对象及虚拟磁盘快照对象。
对象又由多个组件组成,并且vSAN 集群给对象组件设计了不同的存储策略来提高读写对象数据的性能及安全性,对象的组件才是
收稿日期:2019-10-05
基金项目:国家重点研发计划重点项目“物证检验质量保证与量值溯源关键技术研究”(2018YFC0807305)作者简介:张宇(1978—),男,山西人,本科,从事有损大容量存储数据重组分析技术研究与系统开发研究。
vSAN 集群存储的最小单元。
vSAN 集群为了提高性能将对象的不同的组件存储在不同节点不同磁盘组中的不同容量硬盘或缓存硬盘中。
VMware vSAN 集群在存储过程中为了保证数据不丢修,数据的存放位置就要一定的要求了,一个对象的相同数据的不同组件必须保存在不同的节点上。
图2是vSAN 集群的存储过程
架构图:
图2vSAN 集群的存储过程架构图
2VMware vSAN 集群节点损坏分析
VMware vSAN 集群至少由三个节点组成,每个节点都有一个或多个磁盘组,每个磁盘组中可以是全缓存硬盘或缓存硬盘加容量硬盘的组合。
每个硬盘都是一个独立的存储单位,vSAN 集群中的最小存储单位不会跨磁盘组存储,更不会跨硬盘存储。
因此,当磁盘组中的某个硬盘损坏或某个节点的磁盘组损坏时,只会丢失存储于这个硬盘或磁盘组中的最小单位数据,但由于vSAN 集群存储过程中将一个对象数据分割成N 多个最小单位数据,因此即使丢失部分数据也会影响整个vSAN 集群。
2.1磁盘组中硬盘不可用分析
磁盘组中至少有一个或多个缓存硬盘和一个或多个容量
硬盘,当有多个缓存硬盘时,其中某个缓存硬盘不可用时不会影响vSAN 集群中的数据,只会影响其IO 性能,当损坏的是唯一的缓存硬盘时,整个磁盘组将不可用,会影响vSAN 集群中的数据。
当其中某个容量硬盘不可用时,会丢失此容量硬盘中的数据,是否影响vSAN 集群中的数据,取决于用户配置的vSAN 集群策略。
当vSAN 集群策略不允许容量硬盘缺失的情况时,某块容量硬盘的不可用会导致所有存储在此容量上的组件数据丢失,从而导致所有包含这些组件的对象数据不可用,最终导致用户数据丢失。
因此得出结论,vSAN 集群中当磁盘组中有硬盘不可用时,有一定的机率会影响vSAN 集群中的用户数据,取决于不可用的硬盘类型以及vSAN 集群配置的存储策略。
当损坏的硬盘影响vSAN 集群中的数据时,可先检测不可用的硬盘是否可单独运行并可以读取其中的二进制数据,如果可以,则可通过分析损坏硬盘中的组件信息,提取此硬盘中的所有组件数据,最后结合其他可用硬盘中的组件数据合并成不可访问的对象数据。
2.2vSAN 集群节点不可用分析
当vSAN 集群出现突然断电、网络故障等特殊情况时会导致vSAN 集群各节点之间的元信息不一致,因此会使vSAN 集群中的部分节点不可用,而此时由于不可用的节点无法加入到vSAN 集群,也无法同步正确的元信息,也就意味着这个节点将永远被孤立,这个节点的数据也将永远无法正常使用。
从而引发vSAN 集群故障,用户部分或全部数据无法访问。
因此得出结论,当vSAN 的节点不可用时一定会影响vSAN 中的用户数据,并且很大概率会导致vSAN 集群瘫痪,所有数据都无法正常使用。
当出现vSAN 集群瘫痪或vSAN 集群节点不可用时,可逐个分析vSAN 节点中的磁盘组信息,然后根据磁盘组的信息逐个分析磁盘中的硬盘信息,并根据磁盘的类型,分析并获取缓存列表及组件位图等信息。
最后汇总获取的所有信息,并根据对象信息重组相关组件的数据,最后还原成用户可访问的数据。
3基于vSAN 集群节点损坏分析设计恢复算法
根据vSAN 集群节点损坏的深入分析,发现无论是vSAN 节点中磁盘组中的部分硬盘不可访问还是vSAN 集群中部分节点不可访问,都可根据vSAN 的存储结构进行逆向重构,从而恢复用户不可访问的重要数据。
3.1vSAN 节点磁盘组硬盘不可用恢复算法设计
当vSAN 节点磁盘组中出现硬盘不可用时,如若vSAN 集群出现用户数据丢失的情况,则表明磁盘组中丢失的硬盘比较重要,可先判断硬盘是否存在物理故障并且检测能否读取硬盘的二进制数据,如果可以读取二进制数据,则判断不可用磁盘的类型,如果是缓存硬盘,则分析并获取其中的缓存链表,然后根据缓存列表提取各组件缓存的数据,然后分析并获取此磁盘组中其他的容量盘的组件信息,并手动将组件的缓存数据刷新到对应的组件中。
如果不可用的硬盘为容量盘,则分析并获取其中的组件信息列表,然后分析并获取此磁盘组中缓存盘的缓存链表信息,并根据缓存链表信息将组件的缓存数据手动刷新到对应的组件当中。
最后分析并获取vSAN 集群中所有节点中所有磁盘组中硬盘的相关信息,并根据组件中包含的对象信息进行组件数据重组,然后生成用户可访问的数据。
3.2vSAN 集群节点不可用恢复算法设计
当vSAN 集群中出现节点不可用,首先分析不可用节点中
磁盘组的相关信息,根据磁盘组信息对磁盘进行分组,然后分析每组硬盘中的缓存硬盘以及容量硬盘,分别获取缓存硬盘中的缓存链表以及容量硬盘中的组件信息列表。
接下来根据缓存链表获取组件的缓存数据,根据组件信息列表获取组件数据,并将组件的缓存数据手动合并到对应的组件数据中去。
重复对每个磁盘组中的缓存硬盘和容量硬盘做同样的步骤。
最后统计所有的组件数据,分析组件数据中描述的对象信息,将包含同一对象信息的组件数据根据组件配置信息合并成一个对象数据。
合并完所有的对象数据后,将相关联的对象数据归类到一起,至此已经是用户可正常访问的数据了。
4实验结果与分析
为验证本文提出的恢复算法,将测试环境中的vSAN 集群中的某个节点手动分离,并选择不迁移数据。
此时vSAN 集群
(下转第281页)
定义使算法精练。
使用超声波传感器的触发和回声引脚,MOSFET栅极引脚和LED作为Arduino的I/O。
在连接电路图时,将Echo和Trigger引脚分别连接到第8和第9个数字引脚。
然后MOSFET引脚连接到引脚12,默认情况下板载LED连接到引脚13。
使用以下代码进行宏定义。
#define trigger9
#define echo8
#define LED13
#define MOSFET12
在setup函数中,对输入和输出进行声明。
在硬件中,只有超声波传感器的Echo引脚是输入引脚,其余都是输出引脚。
可以使用Arduino的pinMode函数来指定如下所示[8]。
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);
pinMode(LED,OUTPUT);
pinMode(MOSFET,OUTPUT);
在主loop函数内部,调用了名为measure_distance()的函数。
此函数功能使用超声波传感器测量物体前方的距离,并将值更新为变量“distance”。
要使用超声波传感器测量距离,必须首先将触发引脚保持低电平两微秒,然后保持高电平持续10微秒并再次保持低电平持续2微秒。
这将向空气中发出超声波信号的声波,它将被前方的物体反射,回声引脚将采集由它反射的信号。
然后使用时间值来计算传感器前方物体的距离。
计算出距离后,使用if语句比较距离值,如果距离<10cm,将MOSFET和LED变为高电平,在else语句中将MOSFET和LED 设置为低电平。
程序如下:
if(distance<10)
{
digitalWrite(LED,HIGH);digitalWrite(MOSFET,HIGH);
}
else
{
digitalWrite(LED,LOW);digitalWrite(MOSFET,LOW);
}
按照电路中所示进行连接,并将程序写入Arduino控制板。
将电磁阀连接到进水口,并使用12V适配器将电路连接到Ar⁃duino板的DC插孔。
确保板载LED指示灯熄灭,这样可确保电磁阀也关闭。
将超声波传感器直接放置在电磁阀下方,这样当水杯放置在电磁阀下方时,它会直接与超声波传感器相对。
超声波传感器将探测到物体后,MOSFET和LED一起打开,电磁阀执行打开阀门操作,饮用水流出来。
当移除水杯后,超声波传感器触发,信号传递给Arduino控制板,控制板将电路断开,电磁阀闭合,饮用水停止流出。
5结束语
本文研究了一套基于Arduino的自动饮水机系统,它利用超声波传感器监测到靠近饮水机的水杯,从而将信号传递Ar⁃
duino控制板,由控制板将执行数据通过场效应管,将信号传递给电磁阀,由电磁阀开启阀门控制饮水机流出水。
当水杯离开饮水机时,超声波传器监测到水杯离开饮水机,将信号传递给控制板,由控制板再将执行的数据通过场效应管,将信号传递给电磁阀,电磁阀的阀门自动闭合,饮水机不再流出水。
实验证明,基于Arduino的自动饮水机系统设计合理,具有一定的实用价值。
参考文献:
[1]蒯辙元.“有水皆污”衍生缺水危机[J].珠江水运,2011(7): 32-33.
[2]王龙,杨晓宇,雷宜衡.基于物联网的汽车甲醛监测系统设计[J].湖北工程学院学报,2019,39(3):79-83.
[3]杨继志,郭敬.Arduino的互动产品平台创新设计[J].单片机与
嵌入式系统应用,2012(4):39-41.
[4]王子豪.双足行走型自动送物机器人[J].科学技术创新,2019
(5):72-73.
[5]曹瑞,包空军.基于超声波传感器新技术的应用[J].科技信息, 2019(3):491.
[6]李哲,庄其,余跃.基于Arduino的激光雕刻机设计[J].电子设
计工程,2019,27(4):176-178,184.
[7]付孟林,姚圣男,殷傅如,等.基于Arduino的分布式智能家居
安防系统设计[J].电子世界,2019(9):188-189.
[8]王顺菊,薛盛智.超声波测距在智能极速车中的研究[J].广西
师范学院学报:自然科学版,2019,36(2):55-60.
【通联编辑:代影】
(上接第273页)
中的部分对象将不可见,也就是部分数据会丢失。
这时,通过本文提出的恢复算法,分析分离节点中的磁盘组及硬盘信息,并提取各硬盘中存储的组件数据,最后结合现有节点的组件数据合并成vSAN集群中丢失的对象数据。
实验结果证明本文中提出的恢复算法几乎能恢复绝大部分的用户数据。
5结束语
本文在vSAN集群存储结构分析基础之上提出了一种解决vSAN集群节点损坏的数据恢复算法,此算法能够解决vSAN集群中节点损坏导致的用户数据丢失问题,极大的挽回数据丢失带来的损失。
参考文献:
[1]于耳.一种基于vSAN的分布式存储系统构建和应用[J].中
国教育信息化,2014(16).
[2]左锋,宋艳.基于VSAN架构的云桌面系统建设研究[J].电脑
与信息技术,2018(4).
[3]王春海.解决VMware vSAN分区故障,网络安全和信息化, 2018(10).
[4]夏畅.VMware vSAN分布式存储技术研究[J].数据通信, 2018(1).
[5]王春海,樊玉芳.用VMware Workstation构建vSAN应用环境[J].网络安全和信息化,2018(2).
【通联编辑:张薇】。