一种逻辑卷管理中raid6缺失磁盘的数据恢复方法与流程

专利2022-06-29  176


本发明属于数据恢复与取证领域,涉及一种缺失磁盘的数据恢复方法,尤其涉及一种逻辑卷管理中raid6缺失磁盘的数据恢复方法。
背景技术
:在数据恢复与取证领域中,随着硬盘容量的不断增加,加上硬盘性能也在不断提高,使得硬盘的用户群不断增加,硬盘的使用次数也急剧增加,硬盘的故障也随之提高。逻辑卷管理(lvm,即logicalvolumemanager)是linux环境下对磁盘分区进行管理的一种机制,也是linux下实现零停机前提下可以自如地对文件系统的大小进行调整,且文件系统跨越不同磁盘和分区的一种完美解决方案。逻辑卷管理中raid是lvm中的一类数据类型,其兼容lvm与raid的优点,支持坏盘修复以及在线扩容等优点,逻辑卷管理中raid设备管理技术在大容量存储系统中被广泛使用。其中逻辑卷管理中raid6是一个可以最多支持两块坏盘的一种raid,容错性高,使用广泛。逻辑卷管理中的raid6的校验值q的计算以及组织方式与普通的raid6不一样,当逻辑卷管理中的raid6缺一、二块磁盘时,现有技术中尚无一种缺失磁盘的数据恢复方法。技术实现要素:针对现有技术的不足,本发明提供了一种逻辑卷管理中raid6缺失磁盘的数据恢复方法。本发明申请包括以下步骤:s100:加载逻辑卷管理中raid的各个磁盘,其中,逻辑卷管理的raid分配至一个或多个磁盘上,各个磁盘包含数据条带、校验值p条带及校验值q条带,所述数据条带用以存储用户数据,所述校验值p条带用以存储校验值p,所述校验值q条带用以存储校验值q;s200:解析逻辑卷管理的配置区域的数据,获取逻辑卷管理的raid类型、磁盘数量、条带大小、组织方式及旋转方向,包括以下步骤:s201:根据各个物理卷的配置区域的偏移地址,寻址并解析各个物理卷的所述配置区域的描述信息,获取所述配置区域的数据的偏移地址及所述配置区域的数据的字节长度;s202:寻址所述配置区域的数据的偏移地址,并根据所述配置区域的数据的字节长度获取所述配置区域的数据;s203:解析所述配置区域的数据,获取逻辑卷管理的raid类型、磁盘数量、条带大小、组织方式及旋转方向;s300:判断逻辑卷管理的类型是否为raid6系列,如果是,执行步骤s400,否则,结束流程;s400:获取未缺失磁盘的逻辑卷并记录缺失的逻辑卷的磁盘序号及磁盘个数;s500:恢复缺失磁盘的数据,包括以下步骤;s510:伽罗华域gf(28)中,采用本原多项式为0x11d并生成如下表一所示的伽罗华域正表及表二所示的伽罗华域反表,用以恢复逻辑卷管理中raid6缺失磁盘的数据:表一:伽罗华域正表表二:伽罗华域反表s520:获取伽罗华域正表第n个值作为第n个磁盘的系数kn,其中,n为对应磁盘的序号且n为不小于0、不大于255的正整数;s530:定义伽罗华域的乘法公式为:x*y=gfilog[(gflog[x] gflog[y])mod255]定义伽罗华域的除法公式为:x/y=gfilog[(gflog[x]-gflog[y])mod255]其中,x、y为伽罗华域中的值且均为不小于0、不大于255的整数;s540:判断逻辑卷管理中raid6是否缺失一块磁盘,如果是,执行步骤s560,否则执行步骤s550;s550:判断逻辑卷管理中raid6是否缺失二块磁盘,如果是,执行步骤s570,否则,结束流程;s560:根据所获取的系数kn及未缺失磁盘的逻辑卷,对逻辑卷管理中raid6缺失一块磁盘的数据进行恢复,执行步骤s600;s570:根据所获取的系数kn及未缺失磁盘的逻辑卷,对逻辑卷管理中raid6缺失二块磁盘的数据进行恢复。s600:按照基于元数据的raid数据恢复方法恢复数据。优选地,所述raid6系列包括raid6、raid6_zr、raid6_nr、raid6_nc,对应的组织方式及旋转方向如下表三所示。表三逻辑卷管理所支持raid6的类型、组织方式及旋转方向优选地,所述表三中raid6_zr及raid6的组织方式如下表四所示。表四:raid6_zr及raid6的组织方式优选地,所述表三中raid6_nr的组织方式如下表五所示。表五:raid6_nr的组织方式abcde1d1d2d3pq2d4d5pqd63d7pqd8d94pqd10d11d125qd13d14d15p优选地,所述表三中raid6_nc的组织方式如下表六所示。表六:raid6_nc的组织方式abcde1d1d2d3qp2d5d6qpd43d9qpd7d84qpd10d11d125pd13d14d15q优选地,所述步骤s560包括如下步骤:情况1:对逻辑卷管理中raid6缺失一块磁盘中包含校验值p的情况下进行数据恢复后,执行步骤s600,数据恢复方法包括:设a、b、c为数据条带中存储的用户数据,分别存储于第i、第j及第m个磁盘中,p为校验值p条带存储的校验值p,按下述第一公式计算并获取缺失的校验值p:p=a⊕b⊕c其中,运算符号⊕表示异或加;情况2:对逻辑卷管理中raid6缺失一块磁盘中包含校验值q的情况下对校验值q条带进行数据恢复后,执行步骤s600,数据恢复方法包括:设a、b、c为数据条带中存储的用户数据,分别存储于第i、第j及第m个磁盘中;q为校验值q条带存储的校验值q;ki、kj及km分别表示从伽罗华域正表中所获取的第i、第j及第m个值,并各个作为第i、第j及第m个磁盘的系数,......以此类推,其中,i、j及m均为磁盘序号且为不小于0、不大于255的正整数;按下述第二公式计算并获取缺失的校验值q:q=a*ki⊕b*kj⊕c*km其中,运算符号⊕表示异或加,运算符号*表示伽罗华域中的所述乘法;情况3:对逻辑卷管理中raid6缺失一块磁盘中包含数据条带的情况下进行数据条带数据恢复后,执行步骤s600,数据恢复方法包括:设b、c为数据条带中存储的用户数据,分别存储于第j及第m个磁盘中,......以此类推,p为校验值p条带存储的校验值p,按所述第一公式的变形进行计算并获取缺失的数据a:a=p⊕b⊕c其中,运算符号⊕表示异或减。优选地,所述步骤s570包括以下步骤:情况1:对逻辑卷管理中raid6缺失二块磁盘中包含校验值p及校验值q的情况下进行数据恢复后,执行步骤s600,数据恢复方法包括:采用所述第一公式及第二公式进行计算并获取缺失的校验值p及校验值q;情况2:对逻辑卷管理中raid6缺失二块磁盘中包含校验值p及数据条带的情况下进行数据恢复后,执行步骤s600,数据恢复方法包括:设a、c为数据条带中存储的用户数据,分别存储于第i及第m个磁盘中,q为校验值q条带存储的校验值q,ki及km分别表示从伽罗华域正表中所获取的第i及第m个值,并各个作为第i及第m个磁盘的系数,......以此类推,其中,i、m均为磁盘序号且为不小于0、不大于255的正整数;按所述第二公式的变形进行计算并获取缺失的数据b:b=(q⊕a*ki⊕c*km)/kj其中,运算符号⊕表示异或减,运算符号*表示伽罗华域中的所述乘法,运算符号/表示伽罗华域中的所述除法;获取数据b后,按所述公式一恢复校验值p;情况3:对逻辑卷管理中raid6缺失二块磁盘中包含校验值q及数据条带的情况下进行数据恢复后,执行步骤s600,数据恢复方法包括:设b、c为数据条带中存储的用户数据,分别存储于第j及第m个磁盘中;kj及km分别表示从伽罗华域正表中所获取的第j及第m个值,并各个作为第j及第m个磁盘的系数,......以此类推,其中,j及m均为磁盘序号且为不小于0、不大于255的正整数,p为校验值p条带存储的校验值p,按所述第一公式的变形进行计算并获取缺失的数据a:a=p⊕b⊕c其中,运算符号⊕表示异或减;恢复a后,按所述第二公式计算并获取缺失的校验值q:q=a*ki⊕b*kj⊕c*km其中,运算符号⊕表示异或加,运算符号*表示伽罗华域中的所述乘法;情况4:对逻辑卷管理中raid6缺失二块磁盘均为数据条带的情况下进行数据恢复后,执行步骤s600,数据恢复方法包括:设a、b、c为数据条带中存储的用户数据,分别存储于第i、第j及第m个磁盘中;p为校验值p条带存储的校验值p;q为校验值q条带存储的校验值q;ki、kj及km分别表示从伽罗华域正表中所获取的第i、第j及第m个值,并各个作为第i、第j及第m个磁盘的系数,......以此类推,其中,i、j及m均为磁盘序号且为不小于0、不大于255的正整数;已知c、p、q,按所述第一、第二公式的变形进行计算并获取缺失的数据a、b:p=a⊕b⊕cq=a*ki⊕b*kj⊕c*kma=p⊕b⊕cq=(p⊕b⊕c)*ki⊕b*kj⊕c*kmq=p*ki⊕b*ki⊕c*ki⊕b*kj⊕c*kmq=p*ki⊕c*ki⊕c*km⊕b*ki⊕b*kjq⊕p*ki⊕c*ki⊕c*km=(ki kj)*b根据上述的变形及计算,获取缺失的数据a、b:b=(q⊕p*ki⊕c*ki⊕c*km)/(ki kj)a=p⊕b⊕c其中,运算符号⊕表示异或加/减,运算符号*表示伽罗华域中的所述乘法,运算符号/表示伽罗华域中的所述除法,运算符号 表示加法。优选地,所述第一、第二公式中的p、q、a、b、c及系数ki、kj及km的字节长度相同。本发明具有以下有益效果是:解决了现有技术中尚无一种逻辑卷管理中raid6缺失磁盘的数据恢复方法的技术问题。附图说明图1为本发明所提供的方法的总流程图;图2为本发明中解析逻辑卷管理的配置区域的数据的流程图;图3为本发明中恢复缺失磁盘的数据的流程图;图4a至图4c为逻辑卷管理中raid6所包括的组织方式的示意图。具体实施方式为便于描述,本发明可能包含如下术语:pe:physicalextent物理块pv:physicalvolume物理卷;pvs:physicalvolumes物理卷vg:volumegroup卷组vgs:volumegroups卷组lv:logicalvolume逻辑卷lvs:logicalvolumes逻辑卷segment:区段其中,一个pv里有多个pe;1个或多个pv构成vg;,vg中存在一个以上的lv;,lv从vg中分配空间;除特别说明的数据格式(如ascii码、正则字符串),以外,有关偏移地址等数据都是以小端格式存储。本申请中所指“缺失磁盘”是指组成该lvmraid6的数据块lv缺失或损坏,也就是说,lv对应的pv或者存储设备缺失或者损坏。此外,本申请将题为《一种基于元数据的raid数据恢复方法》、申请号为2019108135847、申请日为2019年8月30日的发明申请以及题为《一种逻辑卷管理的磁盘簇数据的恢复方法》、申请号为2019110501682、申请日为2019年10月31日的发明申请的全文引入本申请作为参考。图1示出了本发明所提供的方法的总流程图。如图1所示,本发明包括以下步骤:s100:加载逻辑卷管理中raid的各个磁盘,其中,逻辑卷管理的raid分配至一个或多个磁盘上,各个磁盘包含数据条带、校验值p条带及校验值q条带,数据条带用以存储用户数据,校验值p条带用以存储校验值p,校验值q条带用以存储校验值q;s200:解析逻辑卷管理的配置区域的数据,获取逻辑卷管理的raid类型(type)、磁盘数量(device_count)、条带大小(stripe_size)、组织方式及旋转方向。图2示出了本发明中解析逻辑卷管理的配置区域的数据的流程图,如图2所示,步骤s200包括以下步骤:s201:根据各个物理卷的配置区域的偏移地址,寻址并解析各个物理卷的配置区域的描述信息,获取配置区域的数据的偏移地址及配置区域的数据的字节长度;s202:寻址配置区域的数据的偏移地址,并根据配置区域的数据的字节长度获取配置区域的数据;s203:解析配置区域的数据,获取逻辑卷管理的raid类型(type)、磁盘数量(device_count)、条带大小(stripe_size)、组织方式及旋转方向;具体地,可以参照题为《一种逻辑卷管理的磁盘簇数据的恢复方法》、申请号为2019110501682、申请日为2019年10月31日的发明申请。在本发明的一个实施例中,获取的配置区域的数据如下:lv_raid6_nc{id="7atjjy-114m-ebcu-7hm2-6kib-fhcv-yhn6pi"status=["read","write","visible"]flags=[]creation_host="ubuntu"creation_time=1555322368segment_count=1segment1{start_extent=0extent_count=258type="raid6_nc"device_count=5region_size=1024stripe_size=128raids=["lv_raid6_nc_rmeta_0","lv_raid6_nc_rimage_0","lv_raid6_nc_rmeta_1","lv_raid6_nc_rimage_1","lv_raid6_nc_rmeta_2","lv_raid6_nc_rimage_2","lv_raid6_nc_rmeta_3","lv_raid6_nc_rimage_3","lv_raid6_nc_rmeta_4","lv_raid6_nc_rimage_4"]上述配置区域的数据中,raid类型(type)为raid6_nc、磁盘数量(device_count)为5、条带大小(stripe_size)为128。s300:判断逻辑卷管理的类型是否为raid6系列,如果是,执行步骤s400,否则,结束流程;其中,raid6系列包括raid6、raid6_zr、raid6_nr、raid6_nc,对应的组织方式及旋转方向如下表三所示。表三逻辑卷管理所支持raid6的类型、组织方式及旋转方向s400:获取未缺失磁盘的逻辑卷并记录缺失的逻辑卷的磁盘序号及磁盘个数;在本发明的另一实施例中,获取的配置区域的数据如下:raids=["lv0_rmeta_0","lv0_rimage_0","lv0_rmeta_1","lv0_rimage_1","lv0_rmeta_2","lv0_rimage_2"]其中,lv0_rmeta_0为该lvmraid的超级块,而lv0_rimage_0为该lvmraid的数据块,按照题为《一种逻辑卷管理的磁盘簇数据的恢复方法》、申请号为2019110501682、申请日为2019年10月31日的发明申请的技术方案恢复lvmraid的数据块lv,如果在加载的所有磁盘中都找不到或者找不全该lv所需的pv数据段,则将该lv标记为缺失。记录这些缺失的逻辑卷的磁盘序号及磁盘个数。s500:恢复缺失磁盘的数据。图3示出了本发明中恢复缺失磁盘的数据的流程图,如图3所示,包括以下步骤;s510:伽罗华域gf(28)中,采用本原多项式为0x11d并生成如下表一所示的伽罗华域正表gfilog及表二所示的伽罗华域反表gflog,用以恢复逻辑卷管理中raid6缺失磁盘的数据:表一:伽罗华域正表表二:伽罗华域反表s520:获取伽罗华域正表第n个值作为第n个磁盘的系数kn,其中,n为对应磁盘的序号且n为不小于0、不大于255的正整数;每个系数kn的取值与数据顺序无关,只与磁盘顺序相关且一一对应。换言之,第0块磁盘上所有的系数kn都取伽罗华域正表第1个值,即,k0=1;第1块磁盘上所有的系数kn都取第2个值,即,k1=2;第2块磁盘上所有的系数kn都取第3个值,即,k2=4……;以此类推。表一所示的伽罗华域正表gfilog及表二所示的伽罗华域反表gflog均为一维表,为方便查表,表一及表二均图示为16*16的二维形式。s530:定义伽罗华域的乘法公式为:x*y=gfilog[(gflog[x] gflog[y])mod255]定义伽罗华域的除法公式为:x/y=gfilog[(gflog[x]-gflog[y])mod255]其中,x、y为伽罗华域中的值且均为不小于0、不大于255的整数;s540:判断逻辑卷管理中raid6是否缺失一块磁盘,如果是,执行步骤s560,否则执行步骤s550;s550:判断逻辑卷管理中raid6是否缺失二块磁盘,如果是,执行步骤s570,否则,结束流程;图4a至图4c示出了逻辑卷管理中raid6所包括的组织方式。其中,图4a示出了raid类型为raid6及raid6_zr的情况下五块磁盘的组织方式;图4b示出了raid类型为raid6_nr的情况下五块磁盘的组织方式;图4c示出了raid类型为raid6_nc的情况下五块磁盘的组织方式;本申请以图4a的组织方式为例进行说明。s560:根据所获取的系数kn及未缺失磁盘的逻辑卷,对逻辑卷管理中raid6缺失一块磁盘的数据进行恢复,执行步骤s600,包括如下步骤:情况1:对逻辑卷管理中raid6缺失一块磁盘中包含校验值p的情况下进行数据恢复后,执行步骤s600,数据恢复方法包括:如图4a所示,d1至d15为数据条带中存储的用户数据,p为校验值p条带存储的校验值p,q为校验值q条带存储的校验值q。其中,a列中的p、d4、d7、d10及q为同一磁盘(即,第0个磁盘)中存储的校验值p、用户数据d4、d7、d10及校验值q,a列中个条带的系数均为k0;换言之,第0块磁盘上所有的系数都取值k0=1。同理,b列中的q、p、d8、d11、d13同一磁盘(即,第1个磁盘)中存储的校验值q、校验值p及用户数据d8、d11、d13,b列中个条带的系数均为k1;换言之,第1块磁盘上所有的系数都取值k1=2……,以此类推。综上所述,第0块磁盘上所有的系数都取值k0=1,第1块磁盘上所有的系数都取值k1=2、第2块磁盘上所有的系数都取值k2=4……,以此类推。设d1、d2、d3为数据条带中存储的用户数据,分别存储于第2、第3及第4个磁盘中,p为校验值p条带存储的校验值p,按下述第一公式计算并获取缺失的校验值p:p=d1⊕d2⊕d3其中,运算符号⊕表示异或加;情况2:对逻辑卷管理中raid6缺失一块磁盘中包含校验值q的情况下对校验值q条带进行数据恢复后,执行步骤s600,数据恢复方法包括:设d1、d2、d3为数据条带中存储的用户数据,分别存储于第2、第3及第4个磁盘中;q为校验值q条带存储的校验值q;k2、k3及k4分别表示从伽罗华域正表中所获取的第2、第3及第4个值,并各个作为第2、第3及第4个磁盘的系数,其中,磁盘序号且为不小于0、不大于255的正整数,换言之,磁盘序号从0开始计,不大于255,最大支持256个磁盘;按下述第二公式计算并获取缺失的校验值q:q=d1*k2⊕d2*k3⊕d3*k4同理,如果需要,可计算图4a中第二行q值=k0*d4⊕k3*d5⊕k4*d6;同理也可以计算第五行q值=k1*d13⊕k2*d14⊕k3*d15,以此类推。其中,运算符号⊕表示异或加,运算符号*表示伽罗华域中的乘法;情况3:对逻辑卷管理中raid6缺失一块磁盘中包含数据条带的情况下进行数据条带数据恢复后,执行步骤s600,数据恢复方法包括:设d2、d3为数据条带中存储的用户数据,分别存储于第3及第4个磁盘中,p为校验值p条带存储的校验值p,按第一公式的变形进行计算并获取缺失的数据a:d1=p⊕d2⊕d3其中,运算符号⊕表示异或减。s570:根据所获取的系数kn及未缺失磁盘的逻辑卷,对逻辑卷管理中raid6缺失二块磁盘的数据进行恢复,步骤s570包括以下步骤;情况1:对逻辑卷管理中raid6缺失二块磁盘中包含校验值p及校验值q的情况下进行数据恢复后,执行步骤s600,数据恢复方法包括:采用第一公式及第二公式进行计算并获取缺失的校验值p及校验值q;情况2:对逻辑卷管理中raid6缺失二块磁盘中包含校验值p及数据条带的情况下进行数据恢复后,执行步骤s600,数据恢复方法包括:设d1、d3为数据条带中存储的用户数据,分别存储于第2及第4个磁盘中,q为校验值q条带存储的校验值q,k2及k4分别表示从伽罗华域正表中所获取的第2及第4个值,并各个作为第2及第4个磁盘的系数,其中磁盘序号且为不小于0、不大于255的正整数,换言之,磁盘序号从0开始计,不大于255,最大支持256个磁盘;按第二公式的变形进行计算并获取缺失的数据d2:d2=(q⊕d1*k2⊕d3*k4)/k3其中,运算符号⊕表示异或减,运算符号*表示伽罗华域中的乘法,运算符号/表示伽罗华域中的除法;获取数据d2后,按公式一恢复校验值p;情况3:对逻辑卷管理中raid6缺失二块磁盘中包含校验值q及数据条带的情况下进行数据恢复后,执行步骤s600,数据恢复方法包括:设d2、d3为数据条带中存储的用户数据,分别存储于第3及第4个磁盘中;k3及k4分别表示从伽罗华域正表中所获取的第3及第4个值,并各个作为第3及第4个磁盘的系数,其中,磁盘序号且为不小于0、不大于255的正整数,换言之,磁盘序号从0开始计,不大于255,最大支持256个磁盘;p为校验值p条带存储的校验值p,按第一公式的变形进行计算并获取缺失的数据d1:d1=p⊕d2⊕d3其中,运算符号⊕表示异或减;恢复d1后,按第二公式计算并获取缺失的校验值q:q=k2*d1⊕k3*d2⊕k4*d3其中,运算符号⊕表示异或加,运算符号*表示伽罗华域中的乘法;情况4:对逻辑卷管理中raid6缺失二块磁盘均为数据条带的情况下进行数据恢复后,执行步骤s600,数据恢复方法包括:设d1、d2、d3为数据条带中存储的用户数据,分别存储于第2、第3及第4个磁盘中;p为校验值p条带存储的校验值p;q为校验值q条带存储的校验值q;k2、k3及k4分别表示从伽罗华域正表中所获取的第2、第3及第4个值,并各个作为第2、第3及第4个磁盘的系数,其中,磁盘序号且为不小于0、不大于255的正整数,换言之,磁盘序号从0开始计,不大于255,最大支持256个磁盘;已知d3、p、q,可按第一、第二公式的变形进行计算并获取缺失的数据d1、d2:p=d1⊕d2⊕d3q=d1*k2⊕d2*k3⊕d3*k4d1=p⊕d2⊕d3q=(p⊕d2⊕d3)*k2⊕d2*k3⊕d3*k4q=p*k2⊕d2*k2⊕d3*k2⊕d2*k3⊕d3*k4q=p*k2⊕d3*k2⊕d3*k4⊕d2*k2⊕d2*k3q⊕p*k2⊕d3*k2⊕d3*k4=(k2 k3)*d2根据上述的变形及计算,获取缺失的数据d1、d2:d2=(q⊕p*k2⊕d3*k2⊕d3*k4)/(k2 k3)d1=p⊕d2⊕d3其中,运算符号⊕表示异或加/减,运算符号*表示伽罗华域中的乘法,运算符号/表示伽罗华域中的除法,运算符号 表示加法。值得注意的是,第一、第二公式中的p、q、d1、d2、d3及系数k2、k3及k4的字节长度相同。s600:按照基于元数据的raid数据恢复方法恢复数据。具体地,可以参照题为《一种基于元数据的raid数据恢复方法》、申请号为2019108135847、申请日为2019年8月30日的发明申请,在此不作赘述。通过本发明提供的方法,解决了现有技术中尚无一种逻辑卷管理中raid6缺失磁盘的数据恢复方法的技术问题。应当理解的是,本发明不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。当前第1页1 2 3 
技术特征:

1.一种逻辑卷管理中raid6缺失磁盘的数据恢复方法,其特征在于包括以下步骤:

s100:加载逻辑卷管理中raid的各个磁盘,其中,逻辑卷管理的raid分配至一个或多个磁盘上,各个磁盘包含数据条带、校验值p条带及校验值q条带,所述数据条带用以存储用户数据,所述校验值p条带用以存储校验值p,所述校验值q条带用以存储校验值q;

s200:解析逻辑卷管理的配置区域的数据,获取逻辑卷管理的raid类型、磁盘数量、条带大小、组织方式及旋转方向,包括以下步骤:

s201:根据各个物理卷的配置区域的偏移地址,寻址并解析各个物理卷的所述配置区域的描述信息,获取所述配置区域的数据的偏移地址及所述配置区域的数据的字节长度;

s202:寻址所述配置区域的数据的偏移地址,并根据所述配置区域的数据的字节长度获取所述配置区域的数据;

s203:解析所述配置区域的数据,获取逻辑卷管理的raid类型、磁盘数量、条带大小、组织方式及旋转方向;

s300:判断逻辑卷管理的类型是否为raid6系列,如果是,执行步骤s400,否则,结束流程;

s400:获取未缺失磁盘的逻辑卷并记录缺失的逻辑卷的磁盘序号及磁盘个数;

s500:恢复缺失磁盘的数据,包括以下步骤;

s510:伽罗华域gf(28)中,采用本原多项式为0x11d并生成如下表一所示的伽罗华域正表及表二所示的伽罗华域反表,用以恢复逻辑卷管理中raid6缺失磁盘的数据:

表一:伽罗华域正表

表二:伽罗华域反表

s520:获取伽罗华域正表第n个值作为第n个磁盘的系数kn,其中,n为对应磁盘的序号且n为不小于0、不大于255的整数;

s530:定义伽罗华域的乘法公式为:

x*y=gfilog[(gflog[x] gflog[y])mod255]

定义伽罗华域的除法公式为:

x/y=gfilog[(gflog[x]-gflog[y])mod255]

其中,x、y为伽罗华域中的值且均为不小于0、不大于255的整数;

s540:判断逻辑卷管理中raid6是否缺失一块磁盘,如果是,执行步骤s560,否则执行步骤s550;

s550:判断逻辑卷管理中raid6是否缺失二块磁盘,如果是,执行步骤s570,否则,结束流程;

s560:根据所获取的系数kn及未缺失磁盘的逻辑卷,对逻辑卷管理中raid6缺失一块磁盘的数据进行恢复,执行步骤s600;

s570:根据所获取的系数kn及未缺失磁盘的逻辑卷,对逻辑卷管理中raid6缺失二块磁盘的数据进行恢复;

s600:按照基于元数据的raid数据恢复方法恢复数据。

2.根据权利要求1所述的一种逻辑卷管理中raid6缺失磁盘的数据恢复方法,其特征在于,所述raid6系列包括raid6、raid6_zr、raid6_nr、raid6_nc,对应的组织方式及旋转方向如下表三所示。

表三:逻辑卷管理所支持raid6的类型、组织方式及旋转方向

3.根据权利要求2所述的一种逻辑卷管理中raid6缺失磁盘的数据恢复方法,其特征在于,所述表三中raid6_zr及raid6的组织方式如下表四所示。

表四:raid6_zr及raid6的组织方式

abcde1pqd1d2d32d4pqd5d63d7d8pqd94d10d11d12pq5qd13d14d15p

4.根据权利要求2所述的一种逻辑卷管理中raid6缺失磁盘的数据恢复方法,其特征在于,所述表三中raid6_nr的组织方式如下表五所示。

表五:raid6_nr的组织方式

abcde1d1d2d3pq2d4d5pqd63d7pqd8d94pqd10d11d125qd13d14d15p

5.根据权利要求2所述的一种逻辑卷管理中raid6缺失磁盘的数据恢复方法,其特征在于,所述表三中raid6_nc的组织方式如下表六所示。

表六:raid6_nc的组织方式

abcde1d1d2d3qp2d5d6qpd43d9qpd7d84qpd10d11d125pd13d14d15q

6.根据权利要求1所述的一种逻辑卷管理中raid6缺失磁盘的数据恢复方法,其特征在于,所述步骤s560包括如下步骤:

情况1:对逻辑卷管理中raid6缺失一块磁盘中包含校验值p的情况下进行数据恢复后,执行步骤s600,数据恢复方法包括:

设a、b、c为数据条带中存储的用户数据,分别存储于第i、第j及第m个磁盘中,p为校验值p条带存储的校验值p,按下述第一公式计算并获取缺失的校验值p:

p=a⊕b⊕c

其中,运算符号⊕表示异或加;

情况2:对逻辑卷管理中raid6缺失一块磁盘中包含校验值q的情况下对校验值q条带进行数据恢复后,执行步骤s600,数据恢复方法包括:

设a、b、c为数据条带中存储的用户数据,分别存储于第i、第j及第m个磁盘中;q为校验值q条带存储的校验值q;ki、kj及km分别表示从伽罗华域正表中所获取的第i、第j及第m个值,并各个作为第i、第j及第m个磁盘的系数,......以此类推,其中,i、j及m均为磁盘序号且为不小于0、不大于255的整数;

按下述第二公式计算并获取缺失的校验值q:

q=a*ki⊕b*kj⊕c*km

其中,运算符号⊕表示异或加,运算符号*表示伽罗华域中的所述乘法;

情况3:对逻辑卷管理中raid6缺失一块磁盘中包含数据条带的情况下进行数据条带数据恢复后,执行步骤s600,数据恢复方法包括:

设b、c为数据条带中存储的用户数据,分别存储于第j及第m个磁盘中,......以此类推,p为校验值p条带存储的校验值p,按所述第一公式的变形进行计算并获取缺失的数据a:

a=p⊕b⊕c

其中,运算符号⊕表示异或减。

7.根据权利要求3所述的一种逻辑卷管理中raid6缺失磁盘的数据恢复方法,其特征在于,所述步骤s570包括以下步骤:

情况1:对逻辑卷管理中raid6缺失二块磁盘中包含校验值p及校验值q的情况下进行数据恢复后,执行步骤s600,数据恢复方法包括:

采用所述第一公式及第二公式进行计算并获取缺失的校验值p及校验值q;

情况2:对逻辑卷管理中raid6缺失二块磁盘中包含校验值p及数据条带的情况下进行数据恢复后,执行步骤s600,数据恢复方法包括:

设a、c为数据条带中存储的用户数据,分别存储于第i及第m个磁盘中,q为校验值q条带存储的校验值q,ki及km分别表示从伽罗华域正表中所获取的第i及第m个值,并各个作为第i及第m个磁盘的系数,......以此类推,其中,i、m均为磁盘序号且为不小于0、不大于255的整数;按所述第二公式的变形进行计算并获取缺失的数据b:

b=(q⊕a*ki⊕c*km)/kj

其中,运算符号⊕表示异或减,运算符号*表示伽罗华域中的所述乘法,运算符号/表示伽罗华域中的所述除法;

获取数据b后,按所述公式一恢复校验值p;

情况3:对逻辑卷管理中raid6缺失二块磁盘中包含校验值q及数据条带的情况下进行数据恢复后,执行步骤s600,数据恢复方法包括:

设b、c为数据条带中存储的用户数据,分别存储于第j及第m个磁盘中;kj及km分别表示从伽罗华域正表中所获取的第j及第m个值,并各个作为第j及第m个磁盘的系数,......以此类推,其中,j及m均为磁盘序号且为不小于0、不大于255的整数,p为校验值p条带存储的校验值p,按所述第一公式的变形进行计算并获取缺失的数据a:

a=p⊕b⊕c

其中,运算符号⊕表示异或减;

获取a后,按所述第二公式计算并获取缺失的校验值q:

q=a*ki⊕b*kj⊕c*km

其中,运算符号⊕表示异或加,运算符号*表示伽罗华域中的所述乘法;

情况4:对逻辑卷管理中raid6缺失二块磁盘均为数据条带的情况下进行数据恢复后,执行步骤s600,数据恢复方法包括:

设a、b、c为数据条带中存储的用户数据,分别存储于第i、第j及第m个磁盘中;p为校验值p条带存储的校验值p;q为校验值q条带存储的校验值q;ki、kj及km分别表示从伽罗华域正表中所获取的第i、第j及第m个值,并各个作为第i、第j及第m个磁盘的系数,......以此类推,其中,i、j及m均为磁盘序号且为不小于0、不大于255的整数;已知c、p、q,按所述第一、第二公式的变形进行计算并获取缺失的数据a、b:

p=a⊕b⊕c

q=a*ki⊕b*kj⊕c*km

a=p⊕b⊕c

q=(p⊕b⊕c)*ki⊕b*kj⊕c*km

q=p*ki⊕b*ki⊕c*ki⊕b*kj⊕c*km

q=p*ki⊕c*ki⊕c*km⊕b*ki⊕b*kj

q⊕p*ki⊕c*ki⊕c*km=(ki kj)*b

根据上述的变形及计算,获取缺失的数据a、b:

b=(q⊕p*ki⊕c*ki⊕c*km)/(ki kj)

a=p⊕b⊕c

其中,运算符号⊕表示异或加/减,运算符号*表示伽罗华域中的所述乘法,运算符号/表示伽罗华域中的所述除法,运算符号 表示加法。

8.根据权利要求1所述的一种逻辑卷管理中raid6缺失磁盘的数据恢复方法,其特征在于,所述第一、第二公式中的p、q、a、b、c及系数ki、kj及km的字节长度相同。

技术总结
本发明公开了一种逻辑卷管理中raid6缺失磁盘的数据恢复方法,其特征在于包括以下步骤:S100:加载逻辑卷管理中raid的各个磁盘,其中,逻辑卷管理的raid分配至一个或多个磁盘上,各个磁盘包含数据条带、校验值P条带及校验值Q条带,所述数据条带用以存储用户数据,所述校验值P条带用以存储校验值P,所述校验值Q条带用以存储校验值Q;S200:解析逻辑卷管理的配置区域的数据,获取逻辑卷管理的raid类型、磁盘数量、条带大小、组织方式及旋转方向;S300:判断逻辑卷管理的类型是否为raid6系列,如果是,执行步骤S400,否则,结束流程;S400:获取未缺失磁盘的逻辑卷并记录缺失的逻辑卷的磁盘序号及磁盘个数;S500:恢复缺失磁盘的数据;S600:按照基于元数据的raid数据恢复方法恢复数据。

技术研发人员:梁效宁
受保护的技术使用者:四川效率源科技有限责任公司
技术研发日:2020.01.16
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-27405.html

最新回复(0)