CN115599589B - 一种数据恢复方法及相关装置 - Google Patents
一种数据恢复方法及相关装置 Download PDFInfo
- Publication number
- CN115599589B CN115599589B CN202211507999.XA CN202211507999A CN115599589B CN 115599589 B CN115599589 B CN 115599589B CN 202211507999 A CN202211507999 A CN 202211507999A CN 115599589 B CN115599589 B CN 115599589B
- Authority
- CN
- China
- Prior art keywords
- data
- strip
- check
- cache node
- data recovery
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000011084 recovery Methods 0.000 title claims abstract description 113
- 238000000034 method Methods 0.000 title claims abstract description 70
- 230000001680 brushing effect Effects 0.000 claims abstract description 27
- 238000004364 calculation method Methods 0.000 claims description 22
- 238000011010 flushing procedure Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 11
- 230000000694 effects Effects 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 238000005192 partition Methods 0.000 description 6
- 230000008520 organization Effects 0.000 description 5
- 230000000903 blocking effect Effects 0.000 description 4
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1064—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请公开了一种数据恢复方法,涉及存储技术领域,包括:扫描缓存节点,根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带;所述缓存节点位于非易失性随机访问存储器;从校验数据表的校验元素中读取数据恢复信息;所述校验数据表位于所述非易失性随机访问存储器;根据所述数据恢复信息,恢复未完成数据下刷的所述条带的数据。该方法能够加速恢复数据,提升RAID卡写数据性能。本申请还公开了一种数据恢复装置、设备以及计算机可读存储介质,均具有上述技术效果。
Description
技术领域
本申请涉及存储技术领域,特别涉及一种数据恢复方法;还涉及一种数据恢复装置、设备以及计算机可读存储介质。
背景技术
随着科技的发展,存储技术也在飞速的改进。RAID(Redundant Array ofIndependent Disks,独立冗余磁盘阵列)技术是存储中的重要技术。目前业界有软RAID存储技术和硬RAID存储技术。软RAID存储技术是对RAID阵列中条带和分块的管理都使用软件实现。硬RAID存储技术(即RAID卡)使用硬件实现对数据的管理。在硬RAID存储技术中,当发生意外掉电的情况时,容易发生写数据丢失故障。为解决由于意外掉电导致的写数据丢失,目前在RAID卡中使用基于日志的访问文件系统来解决意外掉电期间的写数据丢失。每次收到主机I/O写请求时,将该写请求的时间戳以及其他的关键信息写入一个文件日志中。当写请求的数据被安全的写入到磁盘后清除日志文件中对应的日志。该方案需要依赖底层文件系统支持来进行日志记录,写数据写入之前和写入之后都需要读写文件系统中的日志文件。并且如果在写入数据过程中出现意外掉电的情况,若要恢复丢失的数据,需要从文件系统读取该写数据对应的日志文件,根据时间戳以及其他的关键信息恢复数据。上述方案会导致RAID卡更高的开销,影响数据恢复的速度与RAID写数据性能。
有鉴于此,如何解决上述技术缺陷已成为本领域技术人员亟待解决的技术问题。
发明内容
本申请的目的是提供一种数据恢复方法,能够加速恢复数据,提升RAID卡写数据性能。本申请的另一个目的是提供一种数据恢复装置、设备以及计算机可读存储介质,均具有上述技术效果。
为解决上述技术问题,本申请提供了一种数据恢复方法,包括:
扫描缓存节点,根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带;所述缓存节点位于非易失性随机访问存储器;
从校验数据表的校验元素中读取数据恢复信息;所述校验数据表位于所述非易失性随机访问存储器;
根据所述数据恢复信息,恢复未完成数据下刷的所述条带的数据。
可选的,所述根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带包括:
根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带。
可选的,根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带包括:
若与所述条带对应的所述比特位的值为第一数值,则确定意外掉电时所述条带未完成数据下刷;
若与所述条带对应的所述比特位的值为第二数值,则确定意外掉电时所述条带已完成数据下刷。
可选的,所述位图元数据中一个比特位对应一个条带。
可选的,所述根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带前还包括:
根据所述控制字段的赋值,判断是否存在意外掉电时未完成数据下刷的条带;
若存在,则根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带。
可选的,所述根据所述控制字段的赋值,判断是否存在意外掉电时未完成数据下刷的条带包括:
若所述控制字段的赋值为真,则不存在意外掉电时未完成数据下刷的条带;
若所述控制字段的赋值为假,则存在意外掉电时未完成数据下刷的条带。
可选的,还包括:
申请所述缓存节点,并在所述缓存节点记录所述数据下刷信息。
可选的,还包括:
申请所述校验元素,并在所述校验元素记录所述数据恢复信息。
可选的,所述在所述缓存节点记录所述数据下刷信息包括:
若所述条带的数据分块与校验分块已全部下刷到磁盘,则将所述缓存节点中控制字段关联的位图元数据中与所述条带对应的比特位置为第一数值;
若所述条带的数据分块与校验分块未全部下刷到磁盘,则将所述位图元数据中与所述条带对应的比特位置为第二数值。
可选的,所述在所述缓存节点记录所述数据下刷信息还包括:
若各所述条带的数据分块与校验分块均已下刷到磁盘,则将所述控制字段赋值为真;
若至少一个所述条带的数据分块与校验分块没有全部下刷到磁盘,则将所述控制字段赋值为假。
可选的,所述缓存节点还包括前指针字段与后指针字段;所述前指针字段指向前一次主机I/O写请求时申请的所述缓存节点,后指针字段指向后一次主机I/O写请求时申请的所述缓存节点。
可选的,还包括:
在所述校验元素中记录所述条带的校验分块的计算结果。
可选的,所述在所述校验元素中记录所述条带的校验分块的计算结果包括:
若已计算得到所述条带的校验分块,则将所述校验元素中的条带字段中对应的比特位置为第一预设值;
若没有计算得到所述条带的校验分块,则将所述条带字段中对应的比特位置为第二预设值。
可选的,所述条带字段中的一个比特位对应一个条带。
可选的,所述在所述校验元素中记录所述条带的校验分块的计算结果还包括:
若已经计算得到所有的所述条带的校验分块,则将所述校验元素中的校验字段赋值为真;
若没有计算得到所有的所述条带的校验分块,则将所述校验字段赋值为假。
可选的,还包括:
将所述条带的数据分块写入所述缓存节点的缓存字段。
可选的,还包括:
判断数据恢复是否成功;
若数据恢复成功,则释放所述缓存节点与所述校验元素。
为解决上述技术问题,本申请还提供了一种数据恢复装置,包括:
确定模块,用于扫描缓存节点,根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带;所述缓存节点位于非易失性随机访问存储器;
读取模块,用于从校验数据表的校验元素中读取数据恢复信息;所述校验数据表位于所述非易失性随机访问存储器;
恢复模块,用于根据所述数据恢复信息,恢复未完成数据下刷的所述条带的数据。
为解决上述技术问题,本申请还提供了一种数据恢复设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上任一项所述的数据恢复方法的步骤。
为解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述的数据恢复方法的步骤。
本申请所提供的数据恢复方法,包括:扫描缓存节点,根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带;所述缓存节点位于非易失性随机访问存储器;从校验数据表的校验元素中读取数据恢复信息;所述校验数据表位于所述非易失性随机访问存储器;根据所述数据恢复信息,恢复未完成数据下刷的所述条带的数据。
可见,本申请所提供的数据恢复方法,在非易失性随机访问存储器中维护缓存节点与校验数据表,写数据过程中通过缓存节点记录条带的数据下刷信息,通过校验数据表中的校验元素记录数据恢复信息。从意外掉电恢复后,读取非易失性随机访问存储器中记录的信息,即可据此完成数据恢复。整个写数据流程中不需要访问文件系统,数据恢复时也不需要访问文件系统,从而可以加速恢复RAID卡中由于意外掉电而丢失的数据,提升RAID卡写数据性能。
本申请所提供的数据恢复装置、设备以及计算机可读存储介质均具有上述技术效果。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种数据恢复方法的流程示意图;
图2为本申请实施例所提供的一种RAID卡的架构图;
图3为本申请实施例所提供的一种缓存节点的示意图;
图4为本申请实施例所提供的一种校验数据表的示意图;
图5为本申请实施例所提供的一种主机I/O按条带切分示意图;
图6为本申请实施例所提供的一种具体的数据恢复方案的示意图;
图7为本申请实施例所提供的一种数据恢复装置的示意图;
图8为本申请实施例所提供的一种数据恢复设备的示意图。
具体实施方式
本申请的核心是提供一种数据恢复方法,能够加速恢复数据,提升RAID卡写数据性能。本申请的另一个核心是提供一种数据恢复装置、设备以及计算机可读存储介质,均具有上述技术效果。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1为本申请实施例所提供的一种数据恢复方法的流程示意图,参考图1所示,该方法包括:
S101:扫描缓存节点,根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带;所述缓存节点位于非易失性随机访问存储器;
结合图2所示的RAID卡的架构图,本实施例在RAID卡的NVRAM(Non-VolatileRandom Access Memory,非易失性随机访问存储器)中维护一个校验数据表与多个缓存节点。校验数据表包括多个校验元素。缓存节点是用于标识主机I/O写请求的结构体。一个缓存节点标识一次主机I/O写请求。缓存节点用于记录数据下刷信息。校验数据表采用一维线性表元数据组织方式管理校验元素。校验数据表中的校验元素可用于记录数据恢复信息。数据恢复信息包括主机I/O写请求的时间戳以及其他的关键信息。区别于将主机I/O写请求的时间戳以及其他的关键信息存放在文件系统的文件日志的传统技术方案,本实施例将主机I/O请求的时间戳以及其他的关键信息存放在NVRAM中的校验元素中。对于关键信息的具体内容,本实施例在此不做赘述,可以参考传统方案中在文件日志中所记录的关键信息的内容。也就是说,本实施例的改进点在于时间戳、关键信息的存放位置,而非关键信息的具体内容。
图2中的主机系统可以是工作站、个人计算机、移动手机、笔记本电脑和服务器等,多个主机系统通过网络共享存储系统中的存储资源,网络可以采用广域网(WAN)连接、存储区域网络(SAN)、局域网(LAN)连接和无线WIFI连接等。网络可以包括一个或多个无线连接的网络,多个RAID卡组成的存储系统之间可以通过以太网光纤通道(FCoE)、光纤通道、iSCSI等连接组成一个大型的存储环境。
RAID卡中固件层包括驱动程序、RAID卡内核和文件系统等。RAID卡中固件层的驱动程序用于解析主机系统下发的命令,例如解析主机I/O请求中的写数据命令和其他命令。文件系统是前文中提到的RAID卡使用基于日志的直接访问文件系统来解决意外掉电期间的写数据丢失问题的方案中的文件系统。system monitor监控系统监控RAID卡中的各种异常事件。RAID卡控制器包括缓存cache、NVRAM、I/O处理器、硬盘控制器和硬盘连接器等。
意外掉电恢复后,RAID卡扫描缓存节点,根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带。
在一些实施例中,根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带包括:
根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带。
参考图3所示,图3中所示的control字段为控制字段,该控制字段可以为bool类型。control字段与位图元数据相关联,位图元数据是管理条带的一种的数据结构。位图元数据中的比特位的数值反应条带的数据下刷情况。
其中,根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带可以包括:
若与所述条带对应的所述比特位的值为第一数值,则确定意外掉电时所述条带未完成数据下刷;
若与所述条带对应的所述比特位的值为第二数值,则确定意外掉电时所述条带已完成数据下刷。
所述位图元数据中一个比特位对应一个条带。
本实施例中位图元数据的每一个比特位与一个条带相对应。每一个比特位的值反映对应的条带的数据分块与校验分块的下刷情况。如果条带的数据分块与校验分块均已下刷到磁盘,则位图元数据中与此条带对应的比特位的值为第一数值。如果条带的数据分块与校验分块没有全部下刷到磁盘,则位图元数据中与此条带对应的比特位的值为第二数值。第一数值与第二数值不同。通过识别比特位的数值即可确定出对应的条带是否在意外掉电发生时未完成数据下刷。数据分块是指磁盘分区中存放主机下发的有效数据。校验分块由条带中的数据分块异或运算得出。
第一数值可以为1、第二数值可以为0。如果条带的数据分块与校验分块均已下刷到磁盘,则位图元数据中与此条带对应的比特位置为1。如果条带的数据分块与校验分块没有全部下刷到磁盘,则位图元数据中与此条带对应的比特位置为0。
在一些实施例中,所述根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带前还包括:
根据所述控制字段的赋值,判断是否存在意外掉电时未完成数据下刷的条带;
若存在,则根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带。
本实施例通过控制字段的赋值来反映所有的条带的数据下刷情况。在确定具体的未完成数据下刷的条带前,首先可根据控制字段的赋值判断是否有未完成数据下刷的条带,在判断出有未完成数据下刷的条带的基础上,再进一步根据位图元数据的比特位确定未完成数据下刷的具体条带。如果判断出没有未完成数据下刷的条带,则不需要再进一步根据位图元数据的比特位确定未完成数据下刷的具体条带。
其中,所述根据所述控制字段的赋值,判断是否存在意外掉电时未完成数据下刷的条带可以包括:
若所述控制字段的赋值为真,则不存在意外掉电时未完成数据下刷的条带;
若所述控制字段的赋值为假,则存在意外掉电时未完成数据下刷的条带。
如果各个条带的数据分块与校验分块均已经下刷到磁盘,则控制字段的赋值为ture。如果至少有一个条带的数据分块与校验分块没有全部下刷到磁盘,则控制字段赋值为false。
S102:从校验数据表的校验元素中读取数据恢复信息;所述校验数据表位于所述非易失性随机访问存储器;
参考图4所示,数据恢复信息可存放于校验元素的数据字段。图4中所示的data字段为数据字段。
S103:根据所述数据恢复信息,恢复未完成数据下刷的所述条带的数据。
确定出未完成数据下刷的具体条带后,结合读取到的数据恢复信息,RAID卡启动数据恢复流程,恢复未完成数据下刷的条带的数据。对于数据恢复流程的具体实现过程,本申请在此不再赘述,可以参考传统技术方案中关于数据恢复流程的描述。
进一步,在一些实施例中,还包括:
申请所述缓存节点,并在所述缓存节点记录所述数据下刷信息。
申请所述校验元素,并在所述校验元素记录所述数据恢复信息。
RAID卡的驱动程序接收主机发送的主机I/O写请求后,对主机I/O写请求进行解析,并从校验数据表中申请本次主机I/O写请求对应的校验元素以及申请对应的缓存节点。
其中,所述在所述缓存节点记录所述数据下刷信息可以包括:
若所述条带的数据分块与校验分块已全部下刷到磁盘,则将所述缓存节点中控制字段关联的位图元数据中与所述条带对应的比特位置为第一数值;
若所述条带的数据分块与校验分块未全部下刷到磁盘,则将所述位图元数据中与所述条带对应的比特位置为第二数值。
例如,如果条带的数据分块与校验分块均已下刷到磁盘,则将位图元数据中与此条带对应的比特位置为1。如果条带的数据分块与校验分块没有全部下刷到磁盘,则位图元数据中与此条带对应的比特位置为0。
此外,所述在所述缓存节点记录所述数据下刷信息还可以包括:
若各所述条带的数据分块与校验分块均已下刷到磁盘,则将所述控制字段赋值为真;
若至少一个所述条带的数据分块与校验分块没有全部下刷到磁盘,则将所述控制字段赋值为假。
例如,如果位图元数据中各个条带对应的比特位均为1,则将控制字段赋值为ture。如果位图元数据中各个条带对应的比特位不全部为1,则保持控制字段为false。
进一步,在一些实施例中,所述缓存节点还包括前指针字段与后指针字段;所述前指针字段指向前一次主机I/O写请求时申请的所述缓存节点,后指针字段指向后一次主机I/O写请求时申请的所述缓存节点。
本实施例采取双向链表元数据组织方式管理缓存节点。参考图3所示,图3中所示的pre_pointer字段为前指针字段,图3中所示的next_pointer字段为后指针字段。前指针字段指向前一次主机I/O写请求时申请的缓存节点,后指针字段指向后一次主机I/O写请求时申请的缓存节点。通过缓存节点中的前指针字段和后指针字段可将多次主机I/O写请求对应的缓存节点连接在一起。
进一步,在一些实施例中,还包括:
将所述条带的数据分块写入所述缓存节点的缓存字段。
参考图3所示,图3中的cache_ptr即为缓存字段。各个条带的数据分块写入缓存节点中cache_ptr字段,指向缓存中的具体区域。
进一步,在一些实施例中,还包括:
在所述校验元素中记录所述条带的校验分块的计算结果。
校验分块的计算结果反映的是否已经对条带的数据分块进行异或运算得到了条带的校验分块。
其中,所述在所述校验元素中记录所述条带的校验分块的计算结果可以包括:
若已计算得到所述条带的校验分块,则将所述校验元素中的条带字段中对应的比特位置为第一预设值;
若没有计算得到所述条带的校验分块,则将所述条带字段中对应的比特位置为第二预设值。
所述条带字段中的一个比特位对应一个条带。
参考图4所示,条带字段即为图4中所示的stripe[32]字段,stripe[32]字段可以是int类型的数组,一个int类型数据包含8个bit位,一个bit位对应一个条带。如果条带已计算得出校验分块,则置位对应的bit位为第一预设值。如果条带没有计算得出校验分块,则置位对应的bit位为第二预设值。第一预设值与第二预设值不同。
例如,第一预设值为1,第二预设值为0,如果条带已计算得出校验分块,则置位对应的bit位为1。如果条带没有计算得出校验分块,则保持对应的bit位为0。
进一步,所述在所述校验元素中记录所述条带的校验分块的计算结果可以还包括:
若已经计算得到所有的所述条带的校验分块,则将所述校验元素中的校验字段赋值为真;
若没有计算得到所有的所述条带的校验分块,则将所述校验字段赋值为假。
参考图4所示,校验字段即为图4中所示的parity_ok字段。该parity_ok字段可以为bool类型。当写数据切分后的条带全部计算出校验分块后,赋值parity_ok字段为true。在写数据切分后的条带未全部计算出校验分块时,校验字段保持为false。主机I/O写请求按条带切分后的各个条带可参考图5所示,条带stripe1的数据分块为strip5、strip6、strip7以及strip8,校验分块为parity2。
进一步,在一些实施例中,还包括:
判断数据恢复是否成功;
若数据恢复成功,则释放所述缓存节点与所述校验元素。
结合图6所示的步骤S1至S12,以下阐述一种具体的实施方式:
主机向RAID卡发出写数据请求,RAID卡的驱动程序接收主机发出的写数据请求并解析。
根据解析的命令参数,从校验数据表中申请写数据请求对应的校验元素,申请缓存节点,并将申请的缓存节点加入到双向链表元数据组织方式管理的缓存节点中。
RAID卡控制器的主控线程将写数据切分为条带,切分后的各个条带还未有计算得出校验分块,因此将校验元素中stripe[32]字段对应各个条带的bit位都置位为0,赋值校验元素中parity_ok字段为false。
将切分后的各个条带的数据分块写入缓存节点中cache_ptr字段。
RAID卡向主机发送数据写入完成信号(即立即响应主机)。
线程池中的工作线程利用暂存在缓存中条带的数据分块异或运算得出条带的校验分块,然后将校验分块写入缓存中。由于已计算得出条带的校验分块,所以将校验元素中stripe[32]字段对应各个条带的bit位都置位为1,并赋值校验元素中的parity_ok字段为true。由于此时条带的数据分块和校验分块还没有下刷到物理磁盘,所以将与申请的缓存节点中control字段关联的位图元数据中的各个bit位都置位为0,并赋值control字段为false。
线程池中的工作线程将暂存在缓存中的数据分块和校验分块下刷到物理磁盘,由于数据分块和校验分块都已下刷到物理磁盘,所以将与缓存节点中control字段关联的位图元数据中的各个bit位都置位为1,并赋值control字段为true。
判断校验元素中的parity_ok字段是否为true,并判断缓存节点中的control字段是否为true。如果parity_ok字段不为true或者缓存节点中的control字段不为true,则返回到S6。
释放校验元素资源到校验数据表中,并释放双向链表元数据组织方式管理的缓存节点到全局空闲缓存节点链表中。
如果某个时刻出现意外掉电事件,RAID卡控制器扫描双向链表元数据组织方式管理的缓存节点,如果检查出某个缓存节点中control字段关联的位图元数据中的某个bit位为0,则表明暂存在缓存中的该条带的数据分块和校验分块没有全部下刷到磁盘,没有下刷到物理磁盘的数据就是由于意外掉电丢失的具体数据。
读取对应的校验元素data字段中存放的时间戳和关键信息,并启动数据恢复流程。
判断数据恢复是否成功,如果数据恢复成功,则跳转到S9释放相关资源。如果数据恢复失败,则可以结束。
综上所述,本申请所提供的数据恢复方法,在非易失性随机访问存储器中维护缓存节点与校验数据表,写数据过程中通过缓存节点记录条带的数据下刷信息,通过校验数据表中的校验元素记录数据恢复信息。从意外掉电恢复后,读取非易失性随机访问存储器中记录的信息,即可据此完成数据恢复。整个写数据流程中不需要访问文件系统,数据恢复时也不需要访问文件系统,从而可以加速恢复RAID卡中由于意外掉电而丢失的数据,提升RAID卡写数据性能。
本申请还提供了一种数据恢复装置,下文描述的该装置可以与上文描述的方法相互对应参照。请参考图7,图7为本申请实施例所提供的一种数据恢复装置的示意图,结合图7所示,该装置包括:
确定模块10,用于扫描缓存节点,根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带;所述缓存节点位于非易失性随机访问存储器;
读取模块20,用于从校验数据表的校验元素中读取数据恢复信息;所述校验数据表位于所述非易失性随机访问存储器;
恢复模块30,用于根据所述数据恢复信息,恢复未完成数据下刷的所述条带的数据。
在上述实施例的基础上,作为一种具体的实施方式,所述确定模块10具体用于:
根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带。
在上述实施例的基础上,作为一种具体的实施方式,所述确定模块10包括:
第一确定单元,用于若与所述条带对应的所述比特位的值为第一数值,则确定意外掉电时所述条带未完成数据下刷;
第二确定单元,用于若与所述条带对应的所述比特位的值为第二数值,则确定意外掉电时所述条带已完成数据下刷。
在上述实施例的基础上,作为一种具体的实施方式,所述位图元数据中一个比特位对应一个条带。
在上述实施例的基础上,作为一种具体的实施方式,还包括:
第一判断模块,用于根据所述控制字段的赋值,判断是否存在意外掉电时未完成数据下刷的条带;
若存在,则所述确定模块根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带。
在上述实施例的基础上,作为一种具体的实施方式,所述第一判断模块包括:
第一确定单元,用于若所述控制字段的赋值为真,则不存在意外掉电时未完成数据下刷的条带;
第二确定单元,用于若所述控制字段的赋值为假,则存在意外掉电时未完成数据下刷的条带。
在上述实施例的基础上,作为一种具体的实施方式,还包括:
第一记录模块,用于申请所述缓存节点,并在所述缓存节点记录所述数据下刷信息。
在上述实施例的基础上,作为一种具体的实施方式,还包括:
第二记录模块,用于申请所述校验元素,并在所述校验元素记录所述数据恢复信息。
在上述实施例的基础上,作为一种具体的实施方式,所述第二记录模块包括:
第一置位单元,用于若所述条带的数据分块与校验分块已全部下刷到磁盘,则将所述缓存节点中控制字段关联的位图元数据中与所述条带对应的比特位置为第一数值;
第二置位单元,用于若所述条带的数据分块与校验分块未全部下刷到磁盘,则将所述位图元数据中与所述条带对应的比特位置为第二数值。
在上述实施例的基础上,作为一种具体的实施方式,还包括:
第一赋值模块,用于若各所述条带的数据分块与校验分块均已下刷到磁盘,则将所述控制字段赋值为真;
第二赋值模块,用于若至少一个所述条带的数据分块与校验分块没有全部下刷到磁盘,则将所述控制字段赋值为假。
在上述实施例的基础上,作为一种具体的实施方式,所述缓存节点还包括前指针字段与后指针字段;所述前指针字段指向前一次主机I/O写请求时申请的所述缓存节点,后指针字段指向后一次主机I/O写请求时申请的所述缓存节点。
在上述实施例的基础上,作为一种具体的实施方式,还包括:
第三记录模块,用于在所述校验元素中记录所述条带的校验分块的计算结果。
在上述实施例的基础上,作为一种具体的实施方式,所述第三记录模块包括:
第一记录单元,用于若已计算得到所述条带的校验分块,则将所述校验元素中的条带字段中对应的比特位置为第一预设值;
第二记录单元,用于若没有计算得到所述条带的校验分块,则将所述条带字段中对应的比特位置为第一预设值。
在上述实施例的基础上,作为一种具体的实施方式,所述条带字段中的一个比特位对应一个条带。
在上述实施例的基础上,作为一种具体的实施方式,还包括:
第三赋值模块,用于若已经计算得到所有的所述条带的校验分块,则将所述校验元素中的校验字段赋值为真;
第四赋值模块,用于若没有计算得到所有的所述条带的校验分块,则将所述校验字段赋值为假。
在上述实施例的基础上,作为一种具体的实施方式,还包括:
写入模块,用于将所述条带的数据分块写入所述缓存节点的缓存字段。
在上述实施例的基础上,作为一种具体的实施方式,还包括:
第二判断模块,用于判断数据恢复是否成功;
释放模块,用于若数据恢复成功,则释放所述缓存节点与所述校验元素。
本申请所提供的数据恢复装置,在非易失性随机访问存储器中维护缓存节点与校验数据表,写数据过程中通过缓存节点记录条带的数据下刷信息,通过校验数据表中的校验元素记录数据恢复信息。从意外掉电恢复后,读取非易失性随机访问存储器中记录的信息,即可据此完成数据恢复。整个写数据流程中不需要访问文件系统,数据恢复时也不需要访问文件系统,从而可以加速恢复RAID卡中由于意外掉电而丢失的数据,提升RAID卡写数据性能。
本申请还提供了一种数据恢复设备,参考图8所示,该设备包括存储器1和处理器2。
存储器1,用于存储计算机程序;
处理器2,用于执行计算机程序实现如下的步骤:
扫描缓存节点,根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带;所述缓存节点位于非易失性随机访问存储器;从校验数据表的校验元素中读取数据恢复信息;所述校验数据表位于所述非易失性随机访问存储器;根据所述数据恢复信息,恢复未完成数据下刷的所述条带的数据。
对于本申请所提供的设备的介绍请参照上述方法实施例,本申请在此不做赘述。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下的步骤:
扫描缓存节点,根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带;所述缓存节点位于非易失性随机访问存储器;从校验数据表的校验元素中读取数据恢复信息;所述校验数据表位于所述非易失性随机访问存储器;根据所述数据恢复信息,恢复未完成数据下刷的所述条带的数据。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory ,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本申请所提供的计算机可读存储介质的介绍请参照上述方法实施例,本申请在此不做赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备以及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的数据恢复方法、装置、设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围。
Claims (17)
1.一种数据恢复方法,其特征在于,包括:
扫描缓存节点,根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带;所述缓存节点位于非易失性随机访问存储器;所述数据下刷信息用于表征所述条带是否完成数据下刷;
从校验数据表的校验元素中读取数据恢复信息;所述校验数据表位于所述非易失性随机访问存储器;所述校验元素用于记录所述数据恢复信息;
根据所述数据恢复信息,恢复未完成数据下刷的所述条带的数据;
所述根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带包括:
根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带;所述位图元数据中一个比特位对应一个条带;
所述根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带前还包括:
根据所述控制字段的赋值,判断是否存在意外掉电时未完成数据下刷的条带;
若存在,则根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带。
2.根据权利要求1所述的数据恢复方法,其特征在于,根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带包括:
若与所述条带对应的所述比特位的值为第一数值,则确定意外掉电时所述条带未完成数据下刷;
若与所述条带对应的所述比特位的值为第二数值,则确定意外掉电时所述条带已完成数据下刷。
3.根据权利要求1所述的数据恢复方法,其特征在于,所述根据所述控制字段的赋值,判断是否存在意外掉电时未完成数据下刷的条带包括:
若所述控制字段的赋值为真,则不存在意外掉电时未完成数据下刷的条带;
若所述控制字段的赋值为假,则存在意外掉电时未完成数据下刷的条带。
4.根据权利要求1所述的数据恢复方法,其特征在于,还包括:
申请所述缓存节点,并在所述缓存节点记录所述数据下刷信息。
5.根据权利要求1所述的数据恢复方法,其特征在于,还包括:
申请所述校验元素,并在所述校验元素记录所述数据恢复信息。
6.根据权利要求4所述的数据恢复方法,其特征在于,所述在所述缓存节点记录所述数据下刷信息包括:
若所述条带的数据分块与校验分块已全部下刷到磁盘,则将所述缓存节点中控制字段关联的位图元数据中与所述条带对应的比特位置为第一数值;
若所述条带的数据分块与校验分块未全部下刷到磁盘,则将所述位图元数据中与所述条带对应的比特位置为第二数值。
7.根据权利要求6所述的数据恢复方法,其特征在于,所述在所述缓存节点记录所述数据下刷信息还包括:
若各所述条带的数据分块与校验分块均已下刷到磁盘,则将所述控制字段赋值为真;
若至少一个所述条带的数据分块与校验分块没有全部下刷到磁盘,则将所述控制字段赋值为假。
8.根据权利要求1所述的数据恢复方法,其特征在于,所述缓存节点还包括前指针字段与后指针字段;所述前指针字段指向前一次主机I/O写请求时申请的所述缓存节点,后指针字段指向后一次主机I/O写请求时申请的所述缓存节点。
9.根据权利要求1所述的数据恢复方法,其特征在于,还包括:
在所述校验元素中记录所述条带的校验分块的计算结果。
10.根据权利要求9所述的数据恢复方法,其特征在于,所述在所述校验元素中记录所述条带的校验分块的计算结果包括:
若已计算得到所述条带的校验分块,则将所述校验元素中的条带字段中对应的比特位置为第一预设值;
若没有计算得到所述条带的校验分块,则将所述条带字段中对应的比特位置为第二预设值。
11.根据权利要求10所述的数据恢复方法,其特征在于,所述条带字段中的一个比特位对应一个条带。
12.根据权利要求9所述的数据恢复方法,其特征在于,所述在所述校验元素中记录所述条带的校验分块的计算结果还包括:
若已经计算得到所有的所述条带的校验分块,则将所述校验元素中的校验字段赋值为真;
若没有计算得到所有的所述条带的校验分块,则将所述校验字段赋值为假。
13.根据权利要求1所述的数据恢复方法,其特征在于,还包括:
将所述条带的数据分块写入所述缓存节点的缓存字段。
14.根据权利要求1所述的数据恢复方法,其特征在于,还包括:
判断数据恢复是否成功;
若数据恢复成功,则释放所述缓存节点与所述校验元素。
15.一种数据恢复装置,其特征在于,包括:
确定模块,用于扫描缓存节点,根据所述缓存节点记录的数据下刷信息,确定意外掉电时未完成数据下刷的条带;所述缓存节点位于非易失性随机访问存储器;所述数据下刷信息用于表征所述条带是否完成数据下刷;
读取模块,用于从校验数据表的校验元素中读取数据恢复信息;所述校验数据表位于所述非易失性随机访问存储器;所述校验元素用于记录所述数据恢复信息;
恢复模块,用于根据所述数据恢复信息,恢复未完成数据下刷的所述条带的数据;
确定模块具体用于:
根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带;所述位图元数据中一个比特位对应一个条带;
还包括:
第一判断模块,用于根据所述控制字段的赋值,判断是否存在意外掉电时未完成数据下刷的条带;
若存在,则所述确定模块根据所述缓存节点中控制字段关联的位图元数据中的比特位,确定意外掉电时未完成数据下刷的条带。
16.一种数据恢复设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至14任一项所述的数据恢复方法的步骤。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至14任一项所述的数据恢复方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211507999.XA CN115599589B (zh) | 2022-11-29 | 2022-11-29 | 一种数据恢复方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211507999.XA CN115599589B (zh) | 2022-11-29 | 2022-11-29 | 一种数据恢复方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115599589A CN115599589A (zh) | 2023-01-13 |
CN115599589B true CN115599589B (zh) | 2023-03-14 |
Family
ID=84852194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211507999.XA Active CN115599589B (zh) | 2022-11-29 | 2022-11-29 | 一种数据恢复方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115599589B (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104035830B (zh) * | 2014-06-24 | 2017-12-15 | 浙江宇视科技有限公司 | 一种数据恢复方法和装置 |
US10936441B2 (en) * | 2017-12-15 | 2021-03-02 | Microsoft Technology Licensing, Llc | Write-ahead style logging in a persistent memory device |
CN110673978B (zh) * | 2019-09-29 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种双控集群掉电后的数据恢复方法及相关装置 |
CN113391947B (zh) * | 2021-06-22 | 2022-12-02 | 深圳忆联信息系统有限公司 | Ssd raid条带掉电快速恢复方法、装置、计算机设备及存储介质 |
-
2022
- 2022-11-29 CN CN202211507999.XA patent/CN115599589B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115599589A (zh) | 2023-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110399310B (zh) | 一种存储空间的回收方法及装置 | |
CN111506251B (zh) | 数据处理方法、装置、smr存储系统及存储介质 | |
JP3597945B2 (ja) | 直接アクセス記憶装置のデータ圧縮用組込みディレクトリ情報の保持方法及びディレクトリ・レコードを含むシステム | |
US20130103902A1 (en) | Method and apparatus for implementing protection of redundant array of independent disks in file system | |
CN107643880A (zh) | 基于分布式文件系统的文件数据迁移的方法及装置 | |
US20020144069A1 (en) | Backup processing method | |
CN109683825B (zh) | 一种存储系统在线数据压缩方法、装置及设备 | |
CN116107516B (zh) | 数据写入方法、装置、固态硬盘、电子设备及存储介质 | |
US10990312B2 (en) | Method, apparatus, device and storage medium for processing data location of storage device | |
CN113419684B (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN116339644B (zh) | 一种独立磁盘冗余阵列创建方法、装置、设备及介质 | |
CN115599589B (zh) | 一种数据恢复方法及相关装置 | |
CN115543871B (zh) | 数据存储方法及相关设备 | |
CN109542671B (zh) | 校验数据生成方法及固态硬盘 | |
WO2021046693A1 (zh) | 存储系统中数据处理方法、装置以及存储系统 | |
US7930495B2 (en) | Method and system for dirty time log directed resilvering | |
CN115599607A (zh) | 一种raid阵列的数据恢复方法及相关装置 | |
CN111399774B (zh) | 分布式存储系统下基于快照的数据处理方法和装置 | |
CN113868018A (zh) | 一种数据保存方法及装置和一种数据恢复方法 | |
WO2024113687A1 (zh) | 一种数据恢复方法及相关装置 | |
CN109344011B (zh) | 一种数据备份方法及装置 | |
CN111984472A (zh) | 一种数据快照方法、装置及相关设备 | |
CN110908602A (zh) | 分布式存储系统的数据写入方法、装置、设备及存储介质 | |
CN110688257A (zh) | 一种全闪存阵列的局部元数据修复方法、装置及设备 | |
US20240176489A1 (en) | Priority based raid (redundant array of independent disks) rebuild for a data storage system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |