一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据恢复方法及相关装置与流程

2023-01-15 08:36:42 来源:中国专利 TAG:


1.本技术涉及存储技术领域,特别涉及一种数据恢复方法;还涉及一种数据恢复装置、设备以及计算机可读存储介质。


背景技术:

2.随着科技的发展,存储技术也在飞速的改进。raid(redundant array of independent disks,独立冗余磁盘阵列)技术是存储中的重要技术。目前业界有软raid存储技术和硬raid存储技术。软raid存储技术是对raid阵列中条带和分块的管理都使用软件实现。硬raid存储技术(即raid卡)使用硬件实现对数据的管理。在硬raid存储技术中,当发生意外掉电的情况时,容易发生写数据丢失故障。为解决由于意外掉电导致的写数据丢失,目前在raid卡中使用基于日志的访问文件系统来解决意外掉电期间的写数据丢失。每次收到主机i/o写请求时,将该写请求的时间戳以及其他的关键信息写入一个文件日志中。当写请求的数据被安全的写入到磁盘后清除日志文件中对应的日志。该方案需要依赖底层文件系统支持来进行日志记录,写数据写入之前和写入之后都需要读写文件系统中的日志文件。并且如果在写入数据过程中出现意外掉电的情况,若要恢复丢失的数据,需要从文件系统读取该写数据对应的日志文件,根据时间戳以及其他的关键信息恢复数据。上述方案会导致raid卡更高的开销,影响数据恢复的速度与raid写数据性能。
3.有鉴于此,如何解决上述技术缺陷已成为本领域技术人员亟待解决的技术问题。


技术实现要素:

4.本技术的目的是提供一种数据恢复方法,能够加速恢复数据,提升raid卡写数据性能。本技术的另一个目的是提供一种数据恢复装置、设备以及计算机可读存储介质,均具有上述技术效果。
5.为解决上述技术问题,本技术提供了一种数据恢复方法,包括:扫描缓存节点,根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带;所述缓存节点位于非易失性随机访问存储器;从校验数据表的校验元素中读取数据恢复信息;所述校验数据表位于所述非易失性随机访问存储器;根据所述数据恢复信息,恢复未完成数据下刷的所述条带的数据。
6.可选的,所述根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带包括:根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带。
7.可选的,根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带包括:若与所述条带对应的所述比特位的值为第一数值,则确定意外掉电时所述条带未
完成数据下刷;若与所述条带对应的所述比特位的值为第二数值,则确定意外掉电时所述条带已完成数据下刷。
8.可选的,所述位图元数据中一个比特位对应一个条带。
9.可选的,所述根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带前还包括:根据所述控制字段的赋值,判断是否存在意外掉电时未完成数据下刷的条带;若存在,则根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带。
10.可选的,所述根据所述控制字段的赋值,判断是否存在意外掉电时未完成数据下刷的条带包括:若所述控制字段的赋值为真,则不存在意外掉电时未完成数据下刷的条带;若所述控制字段的赋值为假,则存在意外掉电时未完成数据下刷的条带。
11.可选的,还包括:申请所述缓存节点,并在所述缓存节点记录所述数据下刷信息。
12.可选的,还包括:申请所述校验元素,并在所述校验元素记录所述数据恢复信息。
13.可选的,所述在所述缓存节点记录所述数据下刷信息包括:若所述条带的数据分块与校验分块已全部下刷到磁盘,则将所述缓存节点中控制字段关联的位图元数据中与所述条带对应的比特位置为第一数值;若所述条带的数据分块与校验分块未全部下刷到磁盘,则将所述位图元数据中与所述条带对应的比特位置为第二数值。
14.可选的,所述在所述缓存节点记录所述数据下刷信息还包括:若各所述条带的数据分块与校验分块均已下刷到磁盘,则将所述控制字段赋值为真;若至少一个所述条带的数据分块与校验分块没有全部下刷到磁盘,则将所述控制字段赋值为假。
15.可选的,所述缓存节点还包括前指针字段与后指针字段;所述前指针字段指向前一次主机i/o写请求时申请的所述缓存节点,后指针字段指向后一次主机i/o写请求时申请的所述缓存节点。
16.可选的,还包括:在所述校验元素中记录所述条带的校验分块的计算结果。
17.可选的,所述在所述校验元素中记录所述条带的校验分块的计算结果包括:若已计算得到所述条带的校验分块,则将所述校验元素中的条带字段中对应的比特位置为第一预设值;若没有计算得到所述条带的校验分块,则将所述条带字段中对应的比特位置为第二预设值。
18.可选的,所述条带字段中的一个比特位对应一个条带。
19.可选的,所述在所述校验元素中记录所述条带的校验分块的计算结果还包括:
若已经计算得到所有的所述条带的校验分块,则将所述校验元素中的校验字段赋值为真;若没有计算得到所有的所述条带的校验分块,则将所述校验字段赋值为假。
20.可选的,还包括:将所述条带的数据分块写入所述缓存节点的缓存字段。
21.可选的,还包括:判断数据恢复是否成功;若数据恢复成功,则释放所述缓存节点与所述校验元素。
22.为解决上述技术问题,本技术还提供了一种数据恢复装置,包括:确定模块,用于扫描缓存节点,根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带;所述缓存节点位于非易失性随机访问存储器;读取模块,用于从校验数据表的校验元素中读取数据恢复信息;所述校验数据表位于所述非易失性随机访问存储器;恢复模块,用于根据所述数据恢复信息,恢复未完成数据下刷的所述条带的数据。
23.为解决上述技术问题,本技术还提供了一种数据恢复设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上任一项所述的数据恢复方法的步骤。
24.为解决上述技术问题,本技术还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述的数据恢复方法的步骤。
25.本技术所提供的数据恢复方法,包括:扫描缓存节点,根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带;所述缓存节点位于非易失性随机访问存储器;从校验数据表的校验元素中读取数据恢复信息;所述校验数据表位于所述非易失性随机访问存储器;根据所述数据恢复信息,恢复未完成数据下刷的所述条带的数据。
26.可见,本技术所提供的数据恢复方法,在非易失性随机访问存储器中维护缓存节点与校验数据表,写数据过程中通过缓存节点记录条带的数据下刷信息,通过校验数据表中的校验元素记录数据恢复信息。从意外掉电恢复后,读取非易失性随机访问存储器中记录的信息,即可据此完成数据恢复。整个写数据流程中不需要访问文件系统,数据恢复时也不需要访问文件系统,从而可以加速恢复raid卡中由于意外掉电而丢失的数据,提升raid卡写数据性能。
27.本技术所提供的数据恢复装置、设备以及计算机可读存储介质均具有上述技术效果。
附图说明
28.为了更清楚地说明本技术实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
29.图1为本技术实施例所提供的一种数据恢复方法的流程示意图;图2为本技术实施例所提供的一种raid卡的架构图;图3为本技术实施例所提供的一种缓存节点的示意图;图4为本技术实施例所提供的一种校验数据表的示意图;图5为本技术实施例所提供的一种主机i/o按条带切分示意图;图6为本技术实施例所提供的一种具体的数据恢复方案的示意图;图7为本技术实施例所提供的一种数据恢复装置的示意图;图8为本技术实施例所提供的一种数据恢复设备的示意图。
具体实施方式
30.本技术的核心是提供一种数据恢复方法,能够加速恢复数据,提升raid卡写数据性能。本技术的另一个核心是提供一种数据恢复装置、设备以及计算机可读存储介质,均具有上述技术效果。
31.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
32.请参考图1,图1为本技术实施例所提供的一种数据恢复方法的流程示意图,参考图1所示,该方法包括:s101:扫描缓存节点,根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带;所述缓存节点位于非易失性随机访问存储器;结合图2所示的raid卡的架构图,本实施例在raid卡的nvram(non-volatile random access memory,非易失性随机访问存储器)中维护一个校验数据表与多个缓存节点。校验数据表包括多个校验元素。缓存节点是用于标识主机i/o写请求的结构体。一个缓存节点标识一次主机i/o写请求。缓存节点用于记录数据下刷信息。校验数据表采用一维线性表元数据组织方式管理校验元素。校验数据表中的校验元素可用于记录数据恢复信息。数据恢复信息包括主机i/o写请求的时间戳以及其他的关键信息。区别于将主机i/o写请求的时间戳以及其他的关键信息存放在文件系统的文件日志的传统技术方案,本实施例将主机i/o请求的时间戳以及其他的关键信息存放在nvram中的校验元素中。对于关键信息的具体内容,本实施例在此不做赘述,可以参考传统方案中在文件日志中所记录的关键信息的内容。也就是说,本实施例的改进点在于时间戳、关键信息的存放位置,而非关键信息的具体内容。
33.图2中的主机系统可以是工作站、个人计算机、移动手机、笔记本电脑和服务器等,多个主机系统通过网络共享存储系统中的存储资源,网络可以采用广域网(wan)连接、存储区域网络(san)、局域网(lan)连接和无线wifi连接等。网络可以包括一个或多个无线连接的网络,多个raid卡组成的存储系统之间可以通过以太网光纤通道(fcoe)、光纤通道、iscsi等连接组成一个大型的存储环境。
34.raid卡中固件层包括驱动程序、raid卡内核和文件系统等。raid卡中固件层的驱动程序用于解析主机系统下发的命令,例如解析主机i/o请求中的写数据命令和其他命令。
文件系统是前文中提到的raid卡使用基于日志的直接访问文件系统来解决意外掉电期间的写数据丢失问题的方案中的文件系统。system monitor监控系统监控raid卡中的各种异常事件。raid卡控制器包括缓存cache、nvram、i/o处理器、硬盘控制器和硬盘连接器等。
35.意外掉电恢复后,raid卡扫描缓存节点,根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带。
36.在一些实施例中,根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带包括:根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带。
37.参考图3所示,图3中所示的control字段为控制字段,该控制字段可以为bool类型。control字段与位图元数据相关联,位图元数据是管理条带的一种的数据结构。位图元数据中的比特位的数值反应条带的数据下刷情况。
38.其中,根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带可以包括:若与所述条带对应的所述比特位的值为第一数值,则确定意外掉电时所述条带未完成数据下刷;若与所述条带对应的所述比特位的值为第二数值,则确定意外掉电时所述条带已完成数据下刷。
39.所述位图元数据中一个比特位对应一个条带。
40.本实施例中位图元数据的每一个比特位与一个条带相对应。每一个比特位的值反映对应的条带的数据分块与校验分块的下刷情况。如果条带的数据分块与校验分块均已下刷到磁盘,则位图元数据中与此条带对应的比特位的值为第一数值。如果条带的数据分块与校验分块没有全部下刷到磁盘,则位图元数据中与此条带对应的比特位的值为第二数值。第一数值与第二数值不同。通过识别比特位的数值即可确定出对应的条带是否在意外掉电发生时未完成数据下刷。数据分块是指磁盘分区中存放主机下发的有效数据。校验分块由条带中的数据分块异或运算得出。
41.第一数值可以为1、第二数值可以为0。如果条带的数据分块与校验分块均已下刷到磁盘,则位图元数据中与此条带对应的比特位置为1。如果条带的数据分块与校验分块没有全部下刷到磁盘,则位图元数据中与此条带对应的比特位置为0。
42.在一些实施例中,所述根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带前还包括:根据所述控制字段的赋值,判断是否存在意外掉电时未完成数据下刷的条带;若存在,则根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带。
43.本实施例通过控制字段的赋值来反映所有的条带的数据下刷情况。在确定具体的未完成数据下刷的条带前,首先可根据控制字段的赋值判断是否有未完成数据下刷的条带,在判断出有未完成数据下刷的条带的基础上,再进一步根据位图元数据的比特位确定未完成数据下刷的具体条带。如果判断出没有未完成数据下刷的条带,则不需要再进一步根据位图元数据的比特位确定未完成数据下刷的具体条带。
44.其中,所述根据所述控制字段的赋值,判断是否存在意外掉电时未完成数据下刷的条带可以包括:若所述控制字段的赋值为真,则不存在意外掉电时未完成数据下刷的条带;若所述控制字段的赋值为假,则存在意外掉电时未完成数据下刷的条带。
45.如果各个条带的数据分块与校验分块均已经下刷到磁盘,则控制字段的赋值为ture。如果至少有一个条带的数据分块与校验分块没有全部下刷到磁盘,则控制字段赋值为false。
46.s102:从校验数据表的校验元素中读取数据恢复信息;所述校验数据表位于所述非易失性随机访问存储器;参考图4所示,数据恢复信息可存放于校验元素的数据字段。图4中所示的data字段为数据字段。
47.s103:根据所述数据恢复信息,恢复未完成数据下刷的所述条带的数据。
48.确定出未完成数据下刷的具体条带后,结合读取到的数据恢复信息,raid卡启动数据恢复流程,恢复未完成数据下刷的条带的数据。对于数据恢复流程的具体实现过程,本技术在此不再赘述,可以参考传统技术方案中关于数据恢复流程的描述。
49.进一步,在一些实施例中,还包括:申请所述缓存节点,并在所述缓存节点记录所述数据下刷信息。
50.申请所述校验元素,并在所述校验元素记录所述数据恢复信息。
51.raid卡的驱动程序接收主机发送的主机i/o写请求后,对主机i/o写请求进行解析,并从校验数据表中申请本次主机i/o写请求对应的校验元素以及申请对应的缓存节点。
52.其中,所述在所述缓存节点记录所述数据下刷信息可以包括:若所述条带的数据分块与校验分块已全部下刷到磁盘,则将所述缓存节点中控制字段关联的位图元数据中与所述条带对应的比特位置为第一数值;若所述条带的数据分块与校验分块未全部下刷到磁盘,则将所述位图元数据中与所述条带对应的比特位置为第二数值。
53.例如,如果条带的数据分块与校验分块均已下刷到磁盘,则将位图元数据中与此条带对应的比特位置为1。如果条带的数据分块与校验分块没有全部下刷到磁盘,则位图元数据中与此条带对应的比特位置为0。
54.此外,所述在所述缓存节点记录所述数据下刷信息还可以包括:若各所述条带的数据分块与校验分块均已下刷到磁盘,则将所述控制字段赋值为真;若至少一个所述条带的数据分块与校验分块没有全部下刷到磁盘,则将所述控制字段赋值为假。
55.例如,如果位图元数据中各个条带对应的比特位均为1,则将控制字段赋值为ture。如果位图元数据中各个条带对应的比特位不全部为1,则保持控制字段为false。
56.进一步,在一些实施例中,所述缓存节点还包括前指针字段与后指针字段;所述前指针字段指向前一次主机i/o写请求时申请的所述缓存节点,后指针字段指向后一次主机i/o写请求时申请的所述缓存节点。
57.本实施例采取双向链表元数据组织方式管理缓存节点。参考图3所示,图3中所示
的pre_pointer字段为前指针字段,图3中所示的next_pointer字段为后指针字段。前指针字段指向前一次主机i/o写请求时申请的缓存节点,后指针字段指向后一次主机i/o写请求时申请的缓存节点。通过缓存节点中的前指针字段和后指针字段可将多次主机i/o写请求对应的缓存节点连接在一起。
58.进一步,在一些实施例中,还包括:将所述条带的数据分块写入所述缓存节点的缓存字段。
59.参考图3所示,图3中的cache_ptr即为缓存字段。各个条带的数据分块写入缓存节点中cache_ptr字段,指向缓存中的具体区域。
60.进一步,在一些实施例中,还包括:在所述校验元素中记录所述条带的校验分块的计算结果。
61.校验分块的计算结果反映的是否已经对条带的数据分块进行异或运算得到了条带的校验分块。
62.其中,所述在所述校验元素中记录所述条带的校验分块的计算结果可以包括:若已计算得到所述条带的校验分块,则将所述校验元素中的条带字段中对应的比特位置为第一预设值;若没有计算得到所述条带的校验分块,则将所述条带字段中对应的比特位置为第二预设值。
63.所述条带字段中的一个比特位对应一个条带。
64.参考图4所示,条带字段即为图4中所示的stripe[32]字段,stripe[32]字段可以是int类型的数组,一个int类型数据包含8个bit位,一个bit位对应一个条带。如果条带已计算得出校验分块,则置位对应的bit位为第一预设值。如果条带没有计算得出校验分块,则置位对应的bit位为第二预设值。第一预设值与第二预设值不同。
[0065]
例如,第一预设值为1,第二预设值为0,如果条带已计算得出校验分块,则置位对应的bit位为1。如果条带没有计算得出校验分块,则保持对应的bit位为0。
[0066]
进一步,所述在所述校验元素中记录所述条带的校验分块的计算结果可以还包括:若已经计算得到所有的所述条带的校验分块,则将所述校验元素中的校验字段赋值为真;若没有计算得到所有的所述条带的校验分块,则将所述校验字段赋值为假。
[0067]
参考图4所示,校验字段即为图4中所示的parity_ok字段。该parity_ok字段可以为bool类型。当写数据切分后的条带全部计算出校验分块后,赋值parity_ok字段为true。在写数据切分后的条带未全部计算出校验分块时,校验字段保持为false。主机i/o写请求按条带切分后的各个条带可参考图5所示,条带stripe1的数据分块为strip5、strip6、strip7以及strip8,校验分块为parity2。
[0068]
进一步,在一些实施例中,还包括:判断数据恢复是否成功;若数据恢复成功,则释放所述缓存节点与所述校验元素。
[0069]
结合图6所示的步骤s1至s12,以下阐述一种具体的实施方式:主机向raid卡发出写数据请求,raid卡的驱动程序接收主机发出的写数据请求并
解析。
[0070]
根据解析的命令参数,从校验数据表中申请写数据请求对应的校验元素,申请缓存节点,并将申请的缓存节点加入到双向链表元数据组织方式管理的缓存节点中。
[0071]
raid卡控制器的主控线程将写数据切分为条带,切分后的各个条带还未有计算得出校验分块,因此将校验元素中stripe[32]字段对应各个条带的bit位都置位为0,赋值校验元素中parity_ok字段为false。
[0072]
将切分后的各个条带的数据分块写入缓存节点中cache_ptr字段。
[0073]
raid卡向主机发送数据写入完成信号(即立即响应主机)。
[0074]
线程池中的工作线程利用暂存在缓存中条带的数据分块异或运算得出条带的校验分块,然后将校验分块写入缓存中。由于已计算得出条带的校验分块,所以将校验元素中stripe[32]字段对应各个条带的bit位都置位为1,并赋值校验元素中的parity_ok字段为true。由于此时条带的数据分块和校验分块还没有下刷到物理磁盘,所以将与申请的缓存节点中control字段关联的位图元数据中的各个bit位都置位为0,并赋值control字段为false。
[0075]
线程池中的工作线程将暂存在缓存中的数据分块和校验分块下刷到物理磁盘,由于数据分块和校验分块都已下刷到物理磁盘,所以将与缓存节点中control字段关联的位图元数据中的各个bit位都置位为1,并赋值control字段为true。
[0076]
判断校验元素中的parity_ok字段是否为true,并判断缓存节点中的control字段是否为true。如果parity_ok字段不为true或者缓存节点中的control字段不为true,则返回到s6。
[0077]
释放校验元素资源到校验数据表中,并释放双向链表元数据组织方式管理的缓存节点到全局空闲缓存节点链表中。
[0078]
如果某个时刻出现意外掉电事件,raid卡控制器扫描双向链表元数据组织方式管理的缓存节点,如果检查出某个缓存节点中control字段关联的位图元数据中的某个bit位为0,则表明暂存在缓存中的该条带的数据分块和校验分块没有全部下刷到磁盘,没有下刷到物理磁盘的数据就是由于意外掉电丢失的具体数据。
[0079]
读取对应的校验元素data字段中存放的时间戳和关键信息,并启动数据恢复流程。
[0080]
判断数据恢复是否成功,如果数据恢复成功,则跳转到s9释放相关资源。如果数据恢复失败,则可以结束。
[0081]
综上所述,本技术所提供的数据恢复方法,在非易失性随机访问存储器中维护缓存节点与校验数据表,写数据过程中通过缓存节点记录条带的数据下刷信息,通过校验数据表中的校验元素记录数据恢复信息。从意外掉电恢复后,读取非易失性随机访问存储器中记录的信息,即可据此完成数据恢复。整个写数据流程中不需要访问文件系统,数据恢复时也不需要访问文件系统,从而可以加速恢复raid卡中由于意外掉电而丢失的数据,提升raid卡写数据性能。
[0082]
本技术还提供了一种数据恢复装置,下文描述的该装置可以与上文描述的方法相互对应参照。请参考图7,图7为本技术实施例所提供的一种数据恢复装置的示意图,结合图7所示,该装置包括:
确定模块10,用于扫描缓存节点,根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带;所述缓存节点位于非易失性随机访问存储器;读取模块20,用于从校验数据表的校验元素中读取数据恢复信息;所述校验数据表位于所述非易失性随机访问存储器;恢复模块30,用于根据所述数据恢复信息,恢复未完成数据下刷的所述条带的数据。
[0083]
在上述实施例的基础上,作为一种具体的实施方式,所述确定模块10具体用于:根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带。
[0084]
在上述实施例的基础上,作为一种具体的实施方式,所述确定模块10包括:第一确定单元,用于若与所述条带对应的所述比特位的值为第一数值,则确定意外掉电时所述条带未完成数据下刷;第二确定单元,用于若与所述条带对应的所述比特位的值为第二数值,则确定意外掉电时所述条带已完成数据下刷。
[0085]
在上述实施例的基础上,作为一种具体的实施方式,所述位图元数据中一个比特位对应一个条带。
[0086]
在上述实施例的基础上,作为一种具体的实施方式,还包括:第一判断模块,用于根据所述控制字段的赋值,判断是否存在意外掉电时未完成数据下刷的条带;若存在,则所述确定模块根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带。
[0087]
在上述实施例的基础上,作为一种具体的实施方式,所述第一判断模块包括:第一确定单元,用于若所述控制字段的赋值为真,则不存在意外掉电时未完成数据下刷的条带;第二确定单元,用于若所述控制字段的赋值为假,则存在意外掉电时未完成数据下刷的条带。
[0088]
在上述实施例的基础上,作为一种具体的实施方式,还包括:第一记录模块,用于申请所述缓存节点,并在所述缓存节点记录所述数据下刷信息。
[0089]
在上述实施例的基础上,作为一种具体的实施方式,还包括:第二记录模块,用于申请所述校验元素,并在所述校验元素记录所述数据恢复信息。
[0090]
在上述实施例的基础上,作为一种具体的实施方式,所述第二记录模块包括:第一置位单元,用于若所述条带的数据分块与校验分块已全部下刷到磁盘,则将所述缓存节点中控制字段关联的位图元数据中与所述条带对应的比特位置为第一数值;第二置位单元,用于若所述条带的数据分块与校验分块未全部下刷到磁盘,则将所述位图元数据中与所述条带对应的比特位置为第二数值。
[0091]
在上述实施例的基础上,作为一种具体的实施方式,还包括:第一赋值模块,用于若各所述条带的数据分块与校验分块均已下刷到磁盘,则将
所述控制字段赋值为真;第二赋值模块,用于若至少一个所述条带的数据分块与校验分块没有全部下刷到磁盘,则将所述控制字段赋值为假。
[0092]
在上述实施例的基础上,作为一种具体的实施方式,所述缓存节点还包括前指针字段与后指针字段;所述前指针字段指向前一次主机i/o写请求时申请的所述缓存节点,后指针字段指向后一次主机i/o写请求时申请的所述缓存节点。
[0093]
在上述实施例的基础上,作为一种具体的实施方式,还包括:第三记录模块,用于在所述校验元素中记录所述条带的校验分块的计算结果。
[0094]
在上述实施例的基础上,作为一种具体的实施方式,所述第三记录模块包括:第一记录单元,用于若已计算得到所述条带的校验分块,则将所述校验元素中的条带字段中对应的比特位置为第一预设值;第二记录单元,用于若没有计算得到所述条带的校验分块,则将所述条带字段中对应的比特位置为第一预设值。
[0095]
在上述实施例的基础上,作为一种具体的实施方式,所述条带字段中的一个比特位对应一个条带。
[0096]
在上述实施例的基础上,作为一种具体的实施方式,还包括:第三赋值模块,用于若已经计算得到所有的所述条带的校验分块,则将所述校验元素中的校验字段赋值为真;第四赋值模块,用于若没有计算得到所有的所述条带的校验分块,则将所述校验字段赋值为假。
[0097]
在上述实施例的基础上,作为一种具体的实施方式,还包括:写入模块,用于将所述条带的数据分块写入所述缓存节点的缓存字段。
[0098]
在上述实施例的基础上,作为一种具体的实施方式,还包括:第二判断模块,用于判断数据恢复是否成功;释放模块,用于若数据恢复成功,则释放所述缓存节点与所述校验元素。
[0099]
本技术所提供的数据恢复装置,在非易失性随机访问存储器中维护缓存节点与校验数据表,写数据过程中通过缓存节点记录条带的数据下刷信息,通过校验数据表中的校验元素记录数据恢复信息。从意外掉电恢复后,读取非易失性随机访问存储器中记录的信息,即可据此完成数据恢复。整个写数据流程中不需要访问文件系统,数据恢复时也不需要访问文件系统,从而可以加速恢复raid卡中由于意外掉电而丢失的数据,提升raid卡写数据性能。
[0100]
本技术还提供了一种数据恢复设备,参考图8所示,该设备包括存储器1和处理器2。
[0101]
存储器1,用于存储计算机程序;处理器2,用于执行计算机程序实现如下的步骤:扫描缓存节点,根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带;所述缓存节点位于非易失性随机访问存储器;从校验数据表的校验元素中读取数据恢复信息;所述校验数据表位于所述非易失性随机访问存储器;根据所述数据恢复信息,恢复未完成数据下刷的所述条带的数据。
[0102]
对于本技术所提供的设备的介绍请参照上述方法实施例,本技术在此不做赘述。
[0103]
本技术还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下的步骤:扫描缓存节点,根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带;所述缓存节点位于非易失性随机访问存储器;从校验数据表的校验元素中读取数据恢复信息;所述校验数据表位于所述非易失性随机访问存储器;根据所述数据恢复信息,恢复未完成数据下刷的所述条带的数据。
[0104]
该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-only memory ,rom)、随机存取存储器(random access memory ,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0105]
对于本技术所提供的计算机可读存储介质的介绍请参照上述方法实施例,本技术在此不做赘述。
[0106]
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备以及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0107]
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0108]
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
[0109]
以上对本技术所提供的数据恢复方法、装置、设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献