本发明涉及数据存储处理领域,具体地,涉及一种数据存储设备数据恢复方法及系统。
背景技术:
当前的存储普遍采用raid技术来避免单一硬件损坏导致的数据丢失。避免磁盘损坏的有raid5,raid6,华为的raid2.0技术等;避免云存储服务器故障的n+mraid等。当存储数据节点(磁盘,或服务器)故障后,使用raid技术后,可以将损坏的硬件直接替换为新的硬件,然后通过算法恢复新硬件上的数据。
以raid5为例其技术实现方式如表1所示:
表1
raid5是一种存储性能、数据安全和存储成本兼顾的存储解决方案。以四个硬盘组成的raid5为例,其数据存储方式如图3所示:图3中,ap为a1,a2和a3的奇偶校验信息,其它以此类推。由图中可以看出,raid5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成raid5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当raid5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。
raid5可以理解为是raid0和raid1的折衷方案。raid5可以为系统提供数据安全保障,但保障程度要比mirror低而磁盘空间利用率要比mirror高。raid5具有和raid0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,raid5的磁盘空间利用率要比raid1高,存储成本相对较低。
当图3的disk3(disk0,disk1,disk2等任意盘损坏均可)损坏时,可以通过其它几个盘的数据来计算出disk3的数据;然后把disk3磁盘换掉,更换为新的空白磁盘disk3`;然后通过算法恢复disk3`上的数据。
如图3通过a1与a2与a3算出ap,b1与b2与bp算出b3,以此类推还可以算出c3,d3。从而恢复disk3`上的数据,上述为当前的重构技术。
可以看出当前的重构需要从其它几个盘读出全部数据计算后写入disk3`;而在重构的过程中系统磁盘被重构过程占用,基本无法进行外部业务的处理。或者说如果外部业务处理大的过程中重构时间非常长,有时多达数周。以上以raid5为例,其它的raid算法,包括但不限于raid0,raid5,raid6,华为的raid2.0,raid1,raid10,raidn+m等等都有类似问题,都采用的类似方案,只是计算方法有不同。
综上所述,本申请发明人在实现本申请发明技术方案的过程中,发现上述技术至少存在如下技术问题:
在现有技术中,现有的数据存储设备数据恢复方式存在计算量较大,效率较低,且在数据恢复的过程中数据存储设备外部业务处理能力严重下降的技术问题。
技术实现要素:
本发明提供了一种数据存储设备数据恢复方法及系统,解决了现有的数据存储设备数据恢复方式存在计算量较大,效率较低,且在数据恢复的过程中数据存储设备外部业务处理能力严重下降的技术问题,实现了高效、快速的完成数据存储设备的数据恢复,且保障了数据存储设备外部业务处理能力的技术效果。
为解决上述技术问题,本申请提供了一种数据存储设备数据恢复方法,所述方法包括:
步骤1:对数据存储设备中的每一个数据块进行编号,数据存储设备包括n个子数据存储设备,n为大于等于1的正整数;
步骤2:当数据存储设备中子数据存储设备a出现损坏,记录a损坏时还没有成功写入a的所有数据的对应数据块编号(丢弃对应数据),以及a损坏后写入的所有数据的对应数据块编号(丢弃对应数据),基于记录的编号,生成第一记录信息;
步骤3:将损坏的子数据存储设备a更换为完好的子数据存储设备b,并将子数据存储设备a的数据复制到子数据存储设备b中,并记录下复制失败的数据块的编号信息,基于记录的编号,生成第二记录信息;
步骤4:通过第一记录信息和第二记录信息生成需要重构的数据块编号,并根据当前的raid算法重构出相应数据块,然后将重构出的数据块写入子数据存储设备b中。
其中,当前的raid算法包含但不限于:raid0,raid5,raid6,华为的raid2.0,raid1,raid10,raidn+m等等。
进一步的,对数据存储设备中的每一个数据块进行编号,具体为:编号为管理编号,在系统写入数据前进行确定。比如将把0~1000byte为块1,1001~2000byte为块2,2001~3000byte为块3,……。为了管理方便进行的编号,后面当这些块发生数据变动了之后则可以方便的记录这些块。
进一步的,所述第一记录信息具体实现方式包括但不限于:表格、日志、位图、数据库。
进一步的,当有新数据写入数据块时,一方面将数据块的数据改为对应的数据,同时记录下数据块被改写过,并记录下所有被改写过的数据块的编号信息,生成第一记录信息。
进一步的,所述子数据存储设备包括但不限于:服务器集群、服务器、pc机、磁盘、带库、u盘、光盘、硬盘。
步骤1之后步骤2之前还包括判断步骤,所述判断步骤具体为:对数据存储设备的损坏真假进行判断,若为真则进行后续步骤;若为假,则跳过步骤3进行后续步骤。盘被误踢场景,后面自动恢复。仅重构误踢过程中的部分数据块。即第二记录信息中的数据为空,仅使用第一记录信息中的数据来重构。
另一方面,本申请还提供了一种数据存储设备数据恢复系统,所述系统包括:
编号模块,所述编号模块用于:对数据存储设备中的每一个数据块进行编号,数据存储设备包括n个子数据存储设备,n为大于等于1的正整数;
第一记录模块,所述第一记录模块用于:当数据存储设备中子数据存储设备a损坏出现损坏,记录a损坏时还没有成功写入a的所有数据的数据块编号,以及a损坏后写入的所有数据的数据块编号,基于记录的编号,生成第一记录信息;
更换模块,所述更换模块用于:将损坏的子数据存储设备a更换为完好的子数据存储设备b;
第二记录模块,所述第二记录模块用于:将子数据存储设备a的数据复制到子数据存储设备b中,并记录下复制失败的数据块和对应的编号信息,生成第二记录信息;
数据重构模块,所述数据重构模块用于:通过第一记录信息和第二记录信息生成需要重构的数据信息,并重构出相应数据块,将重构出的数据块写入子数据存储设备b中。
其中,更换模块的更换即可以是自动的更换模块(即热备盘的方式),也可以是用户手动进行更换(即把a盘拔出插入b盘等过程)。
其中,通过第一记录信息和第二记录信息生成需要重构的数据信息,并重构出相应数据块,具体包括:
将第一记录信息与第二记录信息的并集,生成需要重构的所有数据块编号集合;
按照对应raid的重构算法来对数据块进行数据重构,计算出子数据存储设备b中当前数据块的数据,并写入该数据块中。
本申请提供的一个或多个技术方案,至少具有如下技术效果或优点:
由于损坏的磁盘一般是部分赤道或扇区损害,不会全部数据损坏,而本申请中的方法和系统正是针对性的只恢复已经损坏的数据块和损坏后被改写的数据,与传统的方式相比较效率明显提升,传统的需要进行大量的运算,然后恢复全部的数据,本申请是通过第一记录信息和第二记录信息生成需要重构的数据信息,并重构出相应数据块;
进一步的,本发明在新设备数据构建时,尽量使用了已经损坏设备上的数据,而已经损坏的盘,已经不参与外部业务了,在io的模型上,从已经损坏盘上读取数据就是顺序io,而此时的新设备也未参与外部业务,io就为顺序写io;而传统做法,读数据,写数据均为随机io(由于有外部业务)。最少顺序io比随机io的读写效率提高5倍,通常10倍,甚至10多倍;本发明在数据构建的过程中省略了大量的计算工作,数据不需要经过cpu进行校验计算,可以直接通过dma技术,将数据从坏盘搬运到新盘中,效率也大幅提高。
进一步的,利用本专利的思路还可以解决硬盘(节点等)由于震动,过热,电磁干扰等非持久性故障(这些故障会导致磁盘在某个时间内无法正常使用,而被踢出raid组,但发现磁盘未真正损坏后,此磁盘会被重新加入raid组,并启动重构)导致的重构时间过长的问题。还可以解决用户误拔出正在使用的正常盘(在用户维护设备时常发生。当热拔出磁盘后发现磁盘是正常的,随后热插入磁盘,系统会对此磁盘进行全盘重构),而导致的重构时间过长的问题。
进一步的,在传统算法重构的过程中,会大量的对磁盘进行读写,并使用cpu进行计算,此时外部业务难以获取到对应的读写和cpu资源,所以会导致外部业务效率大幅降低。而本申请在恢复数据的过程中,尽量使用了坏盘上的数据,而坏盘是已经不参与业务了,新盘在此时也没有参与业务,并且没有大量的计算工作,基本不与外部业务,争抢计算机资源。也就保证了外部业务的处理能力。
所以,有效解决了现有的数据存储设备数据恢复方式存在计算量较大,效率较低,且在数据恢复的过程中数据存储设备外部业务处理能力严重下降的技术问题,进而实现了高效、快速的完成数据存储设备的数据恢复,且保障了数据存储设备外部业务处理能力的技术效果。
附图说明
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定;
图1是本申请中数据存储设备数据恢复方法的流程示意图;
图2是本申请中数据存储设备数据恢复系统的组成示意图;
图3是本申请中raid5方案示意图;
图4是本申请中raid5重构计算方法示意图;
图5是本申请中raid5中的数据块进行分块并编号示意图;
图6是本申请中记录表1生成示意图;
图7是本申请中记录表2生成示意图;
图8是本申请中依据记录表1记录表2进行重构的示意图。
具体实施方式
本发明提供了一种数据存储设备数据恢复方法及系统,解决了现有的数据存储设备数据恢复方式存在计算量较大,效率较低,且在数据恢复的过程中数据存储设备外部业务处理能力严重下降的技术问题,实现了高效、快速的完成数据存储设备的数据恢复,且保障了数据存储设备外部业务处理能力的技术效果。
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在相互不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述范围内的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
请参考图1-图2,本申请提供了一种数据存储设备数据恢复方法及系统,所述方法包括:
步骤1:对数据存储设备中的每一个数据块进行编号,数据存储设备包括n个子数据存储设备,n为大于等于1的正整数;
步骤2:当数据存储设备中子数据存储设备a出现损坏,记录a损坏时还没有成功写入a的所有数据的对应数据块编号(丢弃对应数据),以及a损坏后写入的所有数据的对应数据块编号(丢弃对应数据),基于记录的编号,生成第一记录信息;
步骤3:将损坏的子数据存储设备a更换为完好的子数据存储设备b,并将子数据存储设备a的数据复制到子数据存储设备b中,并记录下复制失败的数据块的编号信息,基于记录的编号,生成第二记录信息;
步骤4:通过第一记录信息和第二记录信息生成需要重构的数据块编号,并根据当前的raid算法重构出相应数据块,然后将重构出的数据块写入子数据存储设备b中。
所述系统包括:编号模块、第一记录模块、更换模块、第二记录模块、数据重构模块。
下面以磁盘为例举例对本申请进行介绍:
首先,对磁盘的每一个数据块进行编号;然后,当有磁盘disk3损坏后,此时坏盘被踢出raid5,并且此时raid5处于降级状态。记录下所有被改写的块。如图6,当有新数据写入块2时,一方面我们把块2的数据改为对应的c1’,cp’,c2’,同时记录下块2被改写过。这个过程中我们会记录下所有被改写过的磁盘块,并把这些数据叫“记录表1”。
然后,离线恢复disk3’上的数据,由于disk3已经损坏了,我们需要更换为disk3’。此时disk3’是空白盘,为了减小重构时间我们进行如下处理:把disk3上的数据copy到disk3’上,由于disk3损坏了我们假设此时ap,b3,c3,copy成功而d3copy失败,我们记录下失败的数据块块3;当copy完成后我们会得到一个有不完整数据的disk3’,并有copy失败的记录表,并把这些数据叫“记录表2”
然后,把disk3’磁盘放入系统,并启动轻重构过程,仅重构“记录表1”+“记录表2”的数据块;通过“记录表1”我们发现块2要重构,我们通过c1’与cp’与c2’计算出c3’。通过“记录表2”我们发现块3要重构,我们通过dp与d1与d2计算出d3。我们分别把c3’和d3写入disk3’的对应位置就完成了重构过程。
其中,轻重构相对于传统的重构算法需要将所有的数据块均需要使用raid对应的算法计算一遍的方式不同,轻重构是指经过某种处理使得仅需要对部分必要的数据块使用raid对应的算法的重构方案;本处就是指使用“记录表1”+“记录表2”的部分数据进行重构。
另外,数据存储设备容易出现错误,但是设备本身并没有损坏,也可采用本申请中的方法或系统进行处理,具体如:
误踢盘(服务器)场景。磁盘非持久性的损坏场景。比如温度过高导致,或者外部震动导致,或电磁干扰导致。盘被踢,后发现盘未损坏,后面自动恢复。仅重构误踢过程中的部分数据块。
具体步骤如下:
首先,对磁盘的每一个数据块进行编号;然后,当有磁盘disk3临时损坏后,记录下所有被改写的块。如图6,当有新数据写入块2时,一方面我们把块2的数据改为对应的c1’,cp’,c2’,同时记录下块2被改写过。这个过程中我们会记录下所有被改写过的磁盘块,并把这些数据叫“记录表1”。
然后,我们发现disk3已经恢复。随后disk3直接重新参与轻重构过程。
然后,启动轻重构过程,仅重构“记录表1”的数据块;通过“记录表1”我们发现块2要重构,我们通过c1’与cp’与c2’计算出c3’。我们把c3’写入disk3的对应位置就完成了重构过程。
本申请提供的一个或多个技术方案,至少具有如下技术效果或优点:
由于损坏的磁盘一般是部分赤道或扇区损害,不会全部数据损坏,而本申请中的方法和系统正是针对性的只恢复已经损坏的数据块和损坏后被改写的数据,与传统的方式相比较效率明显提升,传统的需要进行大量的运算,然后恢复全部的数据,本申请是通过第一记录信息和第二记录信息生成需要重构的数据信息,并重构出相应数据块;
利用本专利的思路还可以解决硬盘(节点等)由于震动,过热,电磁干扰等非持久性故障(这些故障会导致磁盘在某个时间内无法正常使用,而被踢出raid组,但发现磁盘未真正损坏后,此磁盘会被重新加入raid组,并启动重构)导致的重构时间过长的问题。
还可以解决用户误拔出正在使用的正常盘(在用户维护设备时常发生。当热拔出磁盘后发现磁盘是正常的,随后热插入磁盘,系统会对此磁盘进行全盘重构),而导致的重构时间过长的问题。
进一步的,本发明在新设备数据构建时,尽量使用了已经损坏设备上的数据,而已经损坏的盘,已经不参与外部业务了,在io的模型上,从已经损坏盘上读取数据就是顺序读io,而此时的新设备也未参与外部业务,io就为顺序写io;而传统做法,读数据,写数据均为随机io(由于有外部业务)。最少顺序io比随机io的读写效率提高5倍,通常10倍,甚至10多倍。由此就会大幅的提高io读写效率;而且本发明在数据构建的过程中省略了大量的计算工作,数据不需要经过cpu进行校验计算,可以直接通过dma技术,将数据从坏盘搬运到新盘中,效率也大幅提高。
进一步的,利用本专利的思路还可以解决硬盘(节点等)由于震动,过热,电磁干扰等非持久性故障(这些故障会导致磁盘在某个时间内无法正常使用,而被踢出raid组,但发现磁盘未真正损坏后,此磁盘会被重新加入raid组,并启动重构)导致的重构时间过长的问题。还可以解决用户误拔出正在使用的正常盘(在用户维护设备时常发生。当热拔出磁盘后发现磁盘是正常的,随后热插入磁盘,系统会对此磁盘进行全盘重构),而导致的重构时间过长的问题。
进一步的,在传统算法重构的过程中,会大量的对磁盘进行读写,并使用cpu进行计算,此时外部业务难以获取到对应的读写和cpu资源,所以会导致外部业务效率大幅降低。而本申请在恢复数据的过程中,尽量使用了坏盘上的数据,而坏盘是已经不参与业务了,新盘在此时也没有参与业务,并且没有大量的计算工作,基本不与外部业务,争抢计算机资源。也就保证了外部业务的处理能力。
所以,有效解决了现有的数据存储设备数据恢复方式存在计算量较大,效率较低,且在数据恢复的过程中数据存储设备外部业务处理能力严重下降的技术问题,进而实现了高效、快速的完成数据存储设备的数据恢复,且保障了数据存储设备外部业务处理能力的技术效果。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。