CN115793985B - 一种安全存储方法、装置、设备及存储介质 - Google Patents
一种安全存储方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115793985B CN115793985B CN202310025601.7A CN202310025601A CN115793985B CN 115793985 B CN115793985 B CN 115793985B CN 202310025601 A CN202310025601 A CN 202310025601A CN 115793985 B CN115793985 B CN 115793985B
- Authority
- CN
- China
- Prior art keywords
- data
- old
- exclusive
- result
- target
- 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
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000012795 verification Methods 0.000 claims abstract description 28
- 230000002159 abnormal effect Effects 0.000 claims abstract description 27
- 238000011084 recovery Methods 0.000 claims description 70
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012549 training Methods 0.000 claims description 8
- 230000006870 function Effects 0.000 claims description 5
- 230000011218 segmentation Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000005856 abnormality Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请涉及存储技术领域,公开了一种安全存储方法、装置、设备及存储介质,应用于磁盘阵列卡,包括:获取主机侧发送的输入输出写请求;控制阵列控制器根据输入输出请求对目标日志中的第一地址参数进行读取,并根据第一地址参数从磁盘阵列卡获取旧目标数据及旧校验数据;目标日志用于记录阵列控制器进行校验更新的情况;对旧目标数据和旧校验数据进行异或运算得到第一异或结果并将第一异或结果存储至磁盘阵列卡的对应硬盘中,以便在存储异常时根据第一异或结果恢复出完整的旧目标数据及旧校验数据。本申请能够解决“写洞”问题的同时继续保持较高的系统IO性能,在不增加硬件成本的基础上,提高磁盘阵列卡的数据安全性以及用户体验。
Description
技术领域
本发明涉及存储技术领域,特别涉及一种安全存储方法、装置、设备及存储介质。
背景技术
“写洞”问题作为RAID(磁盘阵列)的一个难题,尤其是对软RAID解决方案而言,如果要追求极致的数据安全,那么在IO性能上就会大打折扣,例如,Linux的MDRAID的PPL(Partial Parity LockLog)方式。一般来说,只有硬RAID方案才能在解决了“写洞”问题的同时,继续保持较高的系统IO性能。笼统的说,在对基于RAID(RAID1/5/6)管理的存储设备进行写操作的同时发生了存储异常,就有一定概率会发生“写洞”问题。根据存储设备的失效发生的时候,可以将“写洞”问题场景分为:硬盘失效发生在异常之后、硬盘失效发生在异常及恢复过程中、硬盘失效发生在异常之前。在异常之前、过程中或者是之后,如果不能对“写洞”进行恰当的处理,这都会造成数据的永久丢失。
针对以上三种“写洞”问题场景,现有技术中采用两种策略来应对,一种是借助于采用非易失性内存NVRAM做为写缓存,达到原子写操作的目的,另一种是借助文件系统的Journal(日志)的设计思想,实现写请求的原子处理。第一种需要增加NVRAM的硬件资源,且NVRAM的存储资源有限。而第二种日志的方式看似完美,但是多次读写底层文件系统会严重影响性能。
因此,上述技术问题亟待本领域技术人员解决。
发明内容
有鉴于此,本发明的目的在于提供一种安全存储方法、装置、设备及存储介质,能够解决“写洞”问题的同时继续保持较高的系统IO性能,在不增加硬件成本的基础上,提高磁盘阵列卡的数据安全性以及用户体验。其具体方案如下:
本申请的第一方面提供了一种安全存储方法,应用于磁盘阵列卡,包括:
获取主机侧发送的输入输出写请求;
控制阵列控制器根据所述输入输出请求对目标日志中的第一地址参数进行读取,并根据所述第一地址参数从所述磁盘阵列卡获取旧目标数据及旧校验数据;其中,所述目标日志用于记录所述阵列控制器进行校验更新的情况;
对所述旧目标数据和所述旧校验数据进行异或运算得到第一异或结果并将所述第一异或结果存储至所述磁盘阵列卡的对应硬盘中,以便在存储异常时根据所述第一异或结果恢复出完整的所述旧目标数据及所述旧校验数据。
可选的,所述将所述第一异或结果存储至所述磁盘阵列卡的对应硬盘中之后,还包括:
根据所述输入输出写请求从所述主机侧获取与所述旧目标数据对应的新目标数据,并根据所述新目标数据、所述旧目标数据和所述旧校验数据得到新校验数据;
将所述新目标数据和所述新校验数据存储至所述磁盘阵列卡的对应硬盘中,以便在存储正常时保证数据及校验一致性。
可选的,所述将所述新目标数据和所述新校验数据存储至所述磁盘阵列卡的对应硬盘中之后,还包括:
获取新的参数值并利用新的参数值对所述目标日志中的参数进行覆盖写操作。
可选的,所述根据所述输入输出写请求从所述主机侧获取与所述旧目标数据对应的新目标数据,包括:
控制所述阵列控制器根据所述输入输出请求对所述目标日志中的第二地址参数进行读取,并根据所述第二地址参数从所述主机侧的内存中获取所述新目标数据。
可选的,所述根据所述第二地址参数从所述主机侧的内存中获取所述新目标数据之后,还包括:
将所述新目标数据搬移至所述磁盘阵列卡的内存中;
相应的,所述根据所述新目标数据、所述旧目标数据和所述旧校验数据得到新校验数据,包括:
在所述磁盘阵列卡的内存中对所述旧目标数据和所述新目标数据进行异或运算得到第二异或结果,并对所述第二异或结果和所述旧校验数据进行异或运算得到第三异或结果;
将所述第三异或结果作为所述新校验数据。
可选的,所述根据所述第一地址参数从所述磁盘阵列卡获取旧目标数据及旧校验数据,包括:
将所述旧目标数据及所述旧校验数据搬移至所述磁盘阵列卡的内存中;
相应的,所述对所述旧目标数据和所述旧校验数据进行异或运算得到第一异或结果,包括:
在所述磁盘阵列卡的内存中对所述旧目标数据和所述旧校验数据进行异或运算得到所述第一异或结果。
可选的,所述将所述第一异或结果存储至所述磁盘阵列卡的对应硬盘,包括:
将所述第一异或结果存储至所述磁盘阵列卡存储所述旧校验数据的校验盘的原子奇偶校验更新区域中,以便在存储异常时,从所述原子奇偶校验更新区域中读取所述第一异或结果并根据所述第一异或结果恢复出完整的所述旧目标数据及所述旧校验数据。
可选的,所述根据所述第一地址参数从所述磁盘阵列卡获取旧目标数据及旧校验数据,包括:
如果所述磁盘阵列卡中包含多个校验盘,则根据所述第一地址参数从所述磁盘阵列卡获取所述旧目标数据及多个所述旧校验数据;其中,一个校验盘上存储一个校验数据;
相应的,所述对所述旧目标数据和所述旧校验数据进行异或运算得到第一异或结果并将所述第一异或结果存储至所述磁盘阵列卡的对应硬盘中,包括:
分别对所述旧目标数据和各个所述旧校验数据进行异或运算得到多个所述第一异或结果并将各个所述第一异或结果分别存储至对应校验盘的所述原子奇偶校验更新区域中,以便在存储异常时,从各个所述原子奇偶校验更新区域中读取各个所述第一异或结果并根据各个所述第一异或结果恢复出相应的所述旧目标数据及所述旧校验数据。
可选的,所述根据所述第一异或结果恢复出完整的所述旧目标数据及所述旧校验数据,包括:
对所述目标日志中的状态参数进行读取;其中,所述状态参数为校验更新的状态定义;
根据所述状态参数确定出目标恢复算法,以利用所述目标恢复算法执行恢复流程。
可选的,所述状态参数与恢复算法之间具有对应关系;
相应的,所述根据所述状态参数确定出目标恢复算法,包括:
根据所述状态参数与恢复算法之间的所述对应关系确定出所述目标恢复算法。
可选的,恢复算法包括分块切分恢复算法和伽罗华域算法。
可选的,所述利用所述目标恢复算法执行恢复流程,包括:
对所述目标日志中的槽位参数和控制块参数进行读取;其中,所述槽位参数表征校验盘的所述原子奇偶校验更新区域的位置,所述控制块参数用户确定数据块所在的当前数据页链条及定位当前数据页链条的数据缓存区域。
利用所述目标恢复算法根据所述槽位参数从所述原子奇偶校验更新区域中读取所述第一异或结果,并通过控制块参数函数指针执行恢复流程。
可选的,所述获取主机侧发送的输入输出写请求之前,还包括:
获取所述主机侧下发的阵列创建指令;
控制所述阵列控制器根据所述阵列创建指令对所述目标日志中的参数进行初始化及赋值操作。
可选的,所述阵列创建指令为用户通过所述主机侧下发的创建阵列的命令行参数。
可选的,所述所述获取所述主机侧下发的阵列创建指令之后,还包括:
控制磁盘阵列卡固件层的驱动程序对所述命令行参数进行解析,并将解析后参数透传至所述阵列控制器,以便所述阵列控制器根据解析后参数对所述目标日志中的参数进行初始化及赋值操作。
可选的,所述根据所述第一异或结果恢复出完整的所述旧目标数据及所述旧校验数据之前,还包括:
通过定时器轮训的方式对所述磁盘阵列卡是否发生异常掉电进行检测,如果检测到所述磁盘阵列卡发生异常掉电,则判定存储异常。
可选的,所述目标日志存储于非易失性随机访问存储器或受掉电保护的内存中。
本申请的第二方面提供了一种安全存储装置,应用于磁盘阵列卡,包括:
请求获取模块,用于获取主机侧发送的输入输出写请求;
第一读取模块,用于控制阵列控制器根据所述输入输出请求对目标日志中的第一地址参数进行读取,并根据所述第一地址参数从所述磁盘阵列卡获取旧目标数据及旧校验数据;其中,所述目标日志用于记录所述阵列控制器进行校验更新的情况;
第一运算及恢复模块,用于对所述旧目标数据和所述旧校验数据进行异或运算得到第一异或结果并将所述第一异或结果存储至所述磁盘阵列卡的对应硬盘中,以便在存储异常时根据所述第一异或结果恢复出完整的所述旧目标数据及所述旧校验数据。
本申请的第三方面提供了一种电子设备,所述电子设备包括处理器和存储器;其中所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现前述安全存储方法。
本申请的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述安全存储方法。
本申请中,先获取主机侧发送的输入输出写请求;然后控制阵列控制器根据所述输入输出请求对目标日志中的第一地址参数进行读取,并根据所述第一地址参数从所述磁盘阵列卡获取旧目标数据及旧校验数据;其中,所述目标日志用于记录所述阵列控制器进行校验更新的情况;最后对所述旧目标数据和所述旧校验数据进行异或运算得到第一异或结果并将所述第一异或结果存储至所述磁盘阵列卡的对应硬盘中,以便在存储异常时根据所述第一异或结果恢复出完整的所述旧目标数据及所述旧校验数据。可见,本申请引入目标日志的概念,其用于记录所述阵列控制器进行校验更新的情况,在进行存储更新时,根据该目标日志中的参数获取旧目标数据及旧校验数据,以此生成一个异或结果,这个异或结果用于在存储异常时恢复数据,从而解决“写洞”问题的同时继续保持较高的系统IO性能,在不增加硬件成本的基础上,提高磁盘阵列卡的数据安全性以及用户体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种安全存储方法流程图;
图2为本申请提供的一种具体的PUFP格式定义示例图;
图3为本申请提供的一种具体的安全存储方法示意图;
图4为本申请提供的一种具体的安全存储方法流程图;
图5为本申请提供的一种RAID5中的写流程“写洞”问题场景分析图;
图6为本申请提供的一种RAID5的写洞保护详细示例图;
图7为本申请提供的一种图6中的“inlineXoR”操作示例图;
图8为本申请提供的一种RAID6的写洞保护详细示例图;
图9为本申请提供的一种安全存储装置结构示意图;
图10为本申请提供的一种安全存储电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有解决“写洞”问题一般采用两种策略,一种是借助于采用非易失性内存NVRAM做为写缓存,达到原子写操作的目的,另一种是借助文件系统的Journal(日志)的设计思想,实现写请求的原子处理。第一种需要增加NVRAM的硬件资源,且NVRAM的存储资源有限。而第二种日志的方式看似完美,但是多次读写底层文件系统会严重影响性能。针对上述技术缺陷,本申请提供一种安全存储方案,引入目标日志的概念,其用于记录所述阵列控制器进行校验更新的情况,在进行存储更新时,根据该目标日志中的参数获取旧目标数据及旧校验数据,以此生成一个异或结果,这个异或结果用于在存储异常时恢复数据,从而解决“写洞”问题的同时继续保持较高的系统IO性能,在不增加硬件成本的基础上,提高磁盘阵列卡的数据安全性以及用户体验。
图1为本申请实施例提供的一种安全存储方法流程图。参见图1所示,该安全存储方法应用于磁盘阵列卡,包括:
S11:获取主机侧发送的输入输出写请求。
本实施例中,磁盘阵列卡先获取主机侧发送的输入输出写请求。所述磁盘阵列卡即RAID卡,由多个存储阵列(RAID阵列)、阵列控制器(RAID卡控制器)、CPU、内存等组件构成,存储阵列由多个SSD盘构成,SSD盘构成的RAID卡相比HDD盘构成的RAID卡具备更快速读写性能的优势。
写洞保护的最基本要求就是“在RAID保护能力覆盖之下的数据永不丢失”。具体来说,在一个受到“写洞”影响的条带内,可以简单将数据分为两类,一类就是受到此次IO直接写覆盖的数据单元,而另外一些数据单元并未被直接写覆盖,但是在同条带其他数据和校验数据的更新过程中该条带潜在的失去了对这些数据的保护。基于此,本实施例定义了两种写洞保护级别分别是DPC和WRA。其中,数据奇偶校验一致性DPC(Data-ParityConsistency)保证数据和校验的一致性,这是底线,从根本上保证了对上述第二类数据的保护;WRA (Write Atomic)在DPC的基础上,针对上述第一类数据,可以进一步的保证其数据操作的原子性,即存储单元里面要么是写之前的完整的老数据,要么是完整的新数据,不存在中间不确定状态。
S12:控制阵列控制器根据所述输入输出请求对目标日志中的第一地址参数进行读取,并根据所述第一地址参数从所述磁盘阵列卡获取旧目标数据及旧校验数据;其中,所述目标日志用于记录所述阵列控制器进行校验更新的情况。
本实施例中,控制阵列控制器根据所述输入输出请求对目标日志中的第一地址参数进行读取,并根据所述第一地址参数从所述磁盘阵列卡获取旧目标数据及旧校验数据;其中,所述目标日志用于记录所述阵列控制器进行校验更新的情况。这里的所述目标日志的设置是本实施例提出的基于硬件的写洞保护的手段,又称为PUFP(Parity UpdateFootprint)机制,本实施例主要是在RAID卡中使用PUFP机制进行写洞保护。顾名思义,目标日志PUFP的内容是记录RAID卡控制器芯片进行校验(条带)更新的日志。PUFP和PSL引擎中激活的“排他锁”(Exclusive Lock)一一对应。每当成功锁定一个条带的写更新就会同时分配一个PUFP单元,用于跟踪记录校验的更新情况,其初始化由RAID卡引擎在分配之初进行(16B的写)。一个PUFP的大小为16字节或者32字节(PUFP+),格式内容如图2所示,PUFP一般存于非易失性随机访问存储器(非易失NVRAM)或者是受存储异常保护的内存中,正常操作过程中对PUFP只会进行覆盖写操作。
进一步的,将所述旧目标数据及所述旧校验数据搬移至所述磁盘阵列卡的内存中。所述第一地址参数为startLBA参数,表示当前namespace中的起始LBA(38位,覆盖1PB数据存储空间),由RAID卡初始化的时候一次写入。由startLBA参数定位RAID卡中对应硬盘的物理地址,定位完毕后读取旧目标数据D到RAID卡的本地DDR,同理从对应的硬盘上读取旧校验数据P到RAID卡的本地DDR。
S13:对所述旧目标数据和所述旧校验数据进行异或运算得到第一异或结果并将所述第一异或结果存储至所述磁盘阵列卡的对应硬盘中,以便在存储异常时根据所述第一异或结果恢复出完整的所述旧目标数据及所述旧校验数据。
本实施例中,对所述旧目标数据和所述旧校验数据进行异或运算得到第一异或结果并将所述第一异或结果存储至所述磁盘阵列卡的对应硬盘中,以便在存储异常时根据所述第一异或结果恢复出完整的所述旧目标数据及所述旧校验数据。具体的,在所述磁盘阵列卡的内存中对所述旧目标数据和所述旧校验数据进行异或运算得到所述第一异或结果。即由旧校验数据P和旧目标数据D异或运算得到pplP,pplP是数据恢复的基础。
需要说明的是,此时还需要将新数据落盘,再未发生存储异常时,正常落盘即可。也即还需要根据所述输入输出写请求从所述主机侧获取与所述旧目标数据对应的新目标数据,并根据所述新目标数据、所述旧目标数据和所述旧校验数据得到新校验数据。具体的,控制所述阵列控制器根据所述输入输出请求对所述目标日志中的第二地址参数进行读取,并根据所述第二地址参数从所述主机侧的内存中获取所述新目标数据。这里的所述第二地址参数为logicDeviceID、nsID这两个参数,其中,logicDeviceID参数表示该RAID组内的逻辑盘位置ID,用以标识出当前写操作所处理的硬盘,nsID参数为Namespace ID,由RAID卡初始化的时候一次写入。
接着将所述新目标数据搬移至所述磁盘阵列卡的内存中,在所述磁盘阵列卡的内存中对所述旧目标数据和所述新目标数据进行异或运算得到第二异或结果,并对所述第二异或结果和所述旧校验数据进行异或运算得到第三异或结果,最终将所述第三异或结果作为所述新校验数据。即由新目标数据D’和旧目标数据D异或运算得到△D,再由△D和P异或运算得到新校验数据P’。将所述新目标数据和所述新校验数据存储至所述磁盘阵列卡的对应硬盘中,以便在存储正常时保证数据及校验一致性。将D’、P’、pplP均落盘到对应硬盘。在此之后,获取新的参数值并利用新的参数值对所述目标日志中的参数进行覆盖写操作。
可见,本申请实施例先获取主机侧发送的输入输出写请求;然后控制阵列控制器根据所述输入输出请求对目标日志中的第一地址参数进行读取,并根据所述第一地址参数从所述磁盘阵列卡获取旧目标数据及旧校验数据;其中,所述目标日志用于记录所述阵列控制器进行校验更新的情况;最后对所述旧目标数据和所述旧校验数据进行异或运算得到第一异或结果并将所述第一异或结果存储至所述磁盘阵列卡的对应硬盘中,以便在存储异常时根据所述第一异或结果恢复出完整的所述旧目标数据及所述旧校验数据。本申请实施例引入目标日志的概念,其用于记录所述阵列控制器进行校验更新的情况,在进行存储更新时,根据该目标日志中的参数获取旧目标数据及旧校验数据,以此生成一个异或结果,这个异或结果用于在存储异常时恢复数据,从而解决“写洞”问题的同时继续保持较高的系统IO性能,在不增加硬件成本的基础上,提高磁盘阵列卡的数据安全性以及用户体验。
图3为本申请实施例提供的一种具体的安全存储方法流程图。参见图3所示,该安全存储方法应用于磁盘阵列卡,包括:
S21:获取主机侧发送的输入输出写请求。
本实施例中,关于上述步骤S21的具体过程,可以参考前述实施例中公开的相应内容,在此不再进行赘述。
S22:控制阵列控制器根据所述输入输出请求对目标日志中的第一地址参数进行读取。
S23:如果所述磁盘阵列卡中包含多个校验盘,则根据所述第一地址参数从所述磁盘阵列卡获取所述旧目标数据及多个所述旧校验数据;其中,一个校验盘上存储一个校验数据。
S24:分别对所述旧目标数据和各个所述旧校验数据进行异或运算得到多个所述第一异或结果并将各个所述第一异或结果分别存储至对应校验盘的所述原子奇偶校验更新区域中,以便在存储异常时,从各个所述原子奇偶校验更新区域中读取各个所述第一异或结果并根据各个所述第一异或结果恢复出相应的所述旧目标数据及所述旧校验数据。
本实施例中,如果所述磁盘阵列卡中包含多个校验盘,则根据所述第一地址参数从所述磁盘阵列卡获取所述旧目标数据及多个所述旧校验数据;其中,一个校验盘上存储一个校验数据。这种情况主要是针对如RAID6等类似的存在多个校验盘的磁盘阵列来说的,RAID6中包含P校验盘和Q校验盘。
此时分别对所述旧目标数据和各个所述旧校验数据进行异或运算得到多个所述第一异或结果并将各个所述第一异或结果分别存储至对应校验盘的所述原子奇偶校验更新区域中,以便在存储异常时,从各个所述原子奇偶校验更新区域中读取各个所述第一异或结果并根据各个所述第一异或结果恢复出相应的所述旧目标数据及所述旧校验数据。针对RAID6,会得到pplP和pplQ两个第一异或结果,需要将pplP和pplQ分别落盘至P校验盘和Q校验盘,在数据恢复时,从P校验盘和Q校验盘读取pplP和pplQ。
这里需要说明的是,第一异或结果主要存储至校验盘的原子奇偶校验更新区域,也称为APU(atomic parity update)区域,RAID阵列对写请求产生的校验数据做的一个保护措施,目的是保证在发生存储系统异常之后,恢复条带的一致性,其内容含RAID条带地址、数据、校验。由此可见,本实施例提出使用PUFP机制,并且将APU机制结合进入PUFP机制当中。
本实施例中,在进行数据恢复时,主要根据pplP数据开始执行数据恢复流程。具体的,先对所述目标日志中的状态参数进行读取;其中,所述状态参数为校验更新的状态定义。然后根据所述状态参数确定出目标恢复算法,以利用所述目标恢复算法执行恢复流程。这里的状态参数为pufpState参数,主要是PUFP的状态定义,是异常恢复时选择恢复算法的主要依据。所述状态参数与恢复算法之间具有对应关系,主要根据所述状态参数与恢复算法之间的所述对应关系确定出所述目标恢复算法。此处的恢复算法包括分块切分恢复算法和伽罗华域算法。接着对所述目标日志中的槽位参数和控制块参数进行读取;其中,所述槽位参数为apuCode参数,表征校验盘的所述原子奇偶校验更新区域的位置,所述控制块参数为pslCbHandle参数,用于确定数据块所在的当前数据页链条及定位当前数据页链条的数据缓存区域。可以理解,使用APU区域进行写洞保护,需要指定一个APU槽位,并将其记录在apuCode参数中,由RAID卡初始化的时候一次写入。PUFP对应CB的CB handle记录在pslCbHandle参数中,并通过这个CB handle可以找到其所在的CP链条,定位当前CP链的数据缓存区域,并用于掉电后写洞保护恢复和问题追踪调试。其中,CP(control page)控制一个完整的IO,CB(control block)以条带为单元进行IO或后台任务,CB即是控制该IO或后台任务的数据结构。在此基础上,利用所述目标恢复算法根据所述槽位参数从所述原子奇偶校验更新区域中读取所述第一异或结果,并通过控制块参数函数指针执行恢复流程。
图4为本申请实施例提供的一种具体的安全存储方法流程图。参见图4所示,该安全存储方法应用于磁盘阵列卡,包括:
S31:获取主机侧下发的阵列创建指令;其中,所述阵列创建指令为用户通过所述主机侧下发的创建阵列的命令行参数。
S32:控制磁盘阵列卡固件层的驱动程序对所述命令行参数进行解析,并将解析后参数透传至所述阵列控制器,以便所述阵列控制器根据解析后参数对所述目标日志中的参数进行初始化及赋值操作。
本实施例中,获取主机侧下发的阵列创建指令;其中,所述阵列创建指令为用户通过所述主机侧下发的创建阵列的命令行参数。然后由控制阵列控制器根据所述阵列创建指令对目标日志中的参数进行初始化及赋值操作。即对图2中定义的pufpState、logicDeviceID、nsID、apuCode、dataLength、startLBA、pslCbHandle、dataStructureEntry等参数进行初始化及赋值。具体的,控制磁盘阵列卡固件层的驱动程序对所述命令行参数进行解析,并将解析后参数透传至所述阵列控制器,以便所述阵列控制器根据解析后参数对所述目标日志中的参数进行初始化及赋值操作。
S33:获取主机侧发送的输入输出写请求。
S34:控制阵列控制器根据所述输入输出请求对目标日志中的第一地址参数进行读取,并根据所述第一地址参数从所述磁盘阵列卡获取旧目标数据及旧校验数据;其中,所述目标日志用于记录所述阵列控制器进行校验更新的情况。
S35:对所述旧目标数据和所述旧校验数据进行异或运算得到第一异或结果并将所述第一异或结果存储至所述磁盘阵列卡的对应硬盘中。
本实施例中,关于上述步骤S33至步骤S35的具体过程,可以参考前述实施例中公开的相应内容,在此不再进行赘述。
S36:通过定时器轮训的方式对所述磁盘阵列卡是否发生异常掉电进行检测,如果检测到所述磁盘阵列卡发生异常掉电,则判定存储异常。
S37:在存储异常时根据所述第一异或结果恢复出完整的所述旧目标数据及所述旧校验数据。
本实施例中,通过定时器轮训的方式对所述磁盘阵列卡是否发生异常掉电进行检测,如果检测到所述磁盘阵列卡发生异常掉电,则判定存储异常,此时根据所述第一异或结果恢复出完整的所述旧目标数据及所述旧校验数据。也即存储异常的情况是掉电,此时的“写洞”可以定义为:非正常关机(意外掉电)+未完成的写操作+存储设备失效。
以图5中的RAID5中的写流程为例,“写洞”问题场景分为以下三种:(1)硬盘失效发生在掉电之后,此时系统处于“写通”WT模式(对于写IO事件,当写IO数据写入RAID卡的存储介质后响应HOST),主机下发了对盘1的4KB写IO,那么按照RAID5“RMW”流程,在系统执行第3步“将新的D1数据落盘”或者第5步 “将新的校验数据P落盘”过程中,如果发生意外掉电,由于不能确定写盘操作是否完成,那么会导致该条带上的数据和校验无法保持一致性,如果系统不能识别/记录那些受“意外掉电”所影响的条带并加以处理,那么就会失去对该条带数据的保护能力,后期如果发生意外掉盘,就会造成错误的数据被恢复,而原始数据永久丢失;(2)硬盘失效发生在掉电及恢复过程中,此时系统处于“写通”WT模式,主机下发了对盘1的4KB写IO,那么按照RAID5“RMW”流程,在系统执行第3步“将新的D1数据落盘”或者第5步“将新的校验数据P落盘”过程中,如果发生意外掉电,并在再次上电后所有受到影响的条带重新同步完成之前,如果发生数据盘2的损坏,那么会导致盘2在该条带上的数据无法被恢复,永久丢失;(3)硬盘失效发生在掉电之前,此时系统处于“写通”WT模式,而盘2已经处于失效状态,整个RAID组处于“暴露”状态,此时后台任务也许正在对盘2进行重构。这个时候,主机下发了对盘1的4KB写IO,从系统开始执行第3步“将新的D1数据落盘”到完成第5步“将新的校验数据P落盘”之间任何时间发生系统的意外掉电,都会导致盘2在该条带的上的数据无法恢复,永久丢失。
本实施例分别针对RAID5 和RAID6详细介绍一下“写洞”保护流程。
图6所示为RAID5的写洞保护详细示例图,图7为图6中对应的“inlineXoR”操作示例图。第一步:RAID卡接收用户通过主机下发的创建RAID5阵列的任务;第二步:RAID卡固件层的驱动程序解析用户下发的创建RAID5阵列命令参数,并将参数透传至RAID卡控制器;第三步:RAID卡控制器根据解析的命令行参数,并初始化、赋值上文中提到的pufpState(PUFP的状态)、logicDeviceID、nsID、apuCode、dataLength、startLBA、pslCbHandle和dataStructureEntry等参数;第四步:RAID卡接收到主机发送IO写请求后,RAID卡控制器根据logicDeviceID、nsID参数检索主机中DDR的具体地址数据,并将检索的主机DDR数据D’搬移到RAID卡的本地DDR,其中搬移多少数据由dataLength决定;第五步:由startLBA参数定位RAID卡中对应硬盘的物理地址,定位完毕后读取老数据D到RAID卡的本地DDR,同理从对应的硬盘上读取老校验数据P到RAID卡的本地DDR;第六步:由老校验数据P和老数据D异或运算得到pplP,由数据D’和老数据D异或运算得到△D,再由△D和P异或运算得到新的校验数据P’;第七步:将新的数据D’落盘到对应硬盘,将新的校验数据P’落盘到对应硬盘,将pplP落盘到RAID5阵列中P盘的APU区域;第八步:在第七步的落盘过程中,定时器定时轮训检查是否有意外掉电情况,如果没有意外掉电则待第七步中数据全部落盘完毕后释放资源后结束;如果有意外掉电,则执行第九步;第九步:如果出现意外掉电,则根据pplP数据开始执行数据恢复流程,根据pufpState参数选择恢复算法,具体有分块切分element恢复算法和伽罗华域算法等。由于该恢复算法不属于本发明的内容,故此处不做赘述。选择好恢复算法后根据apuCode参数,读取APU区域中备份老的数据部分校验和(即pplP),然后通过pslCbHandle函数指针开始执行恢复流程。第十步:数据恢复完毕后,释放资源并结束流程。
图8所示为RAID6的写洞保护详细示例图。第一步:RAID卡接收用户通过主机下发的创建RAID6阵列的任务;第二步:RAID卡固件层的驱动程序解析用户下发的创建RAID6阵列命令参数,并将参数透传至RAID卡控制器;第三步:RAID卡控制器根据解析的命令行参数,并初始化、赋值上文中提到的pufpState(PUFP的状态)、logicDeviceID、nsID、apuCode、dataLength、startLBA、pslCbHandle和dataStructureEntry等参数;第四步:RAID卡接收到主机发送IO写请求后,RAID卡控制器根据logicDeviceID、nsID参数检索主机中DDR的具体地址数据,并将检索的主机DDR数据D’搬移到RAID卡的本地DDR,其中搬移多少数据由dataLength决定;第五步:由startLBA参数定位RAID卡中对应硬盘的物理地址,定位完毕后读取老数据D到RAID卡的本地DDR,同理从对应的硬盘上读取老校验数据P到RAID卡的本地DDR,从对应的硬盘上读取老校验数据Q到RAID卡的本地DDR;第六步:由老校验数据P和老数据D异或运算得到pplP,由老校验数据Q和老数据D异或运算得到pplQ,由数据D’和老数据D异或运算得到△D,再由△D和P异或运算得到新的校验数据P’,再由△D和Q异或运算得到新的校验数据Q’;第七步:将新的数据D’落盘到对应硬盘,将新的校验数据P’落盘到对应硬盘,将pplP落盘到RAID6阵列中P盘的APU区域,将pplQ落盘到RAID6阵列中Q盘的APU区域;第八步:在第七步的落盘过程中,定时器定时轮训检查是否有意外掉电情况,如果没有意外掉电则待第七步中数据全部落盘完毕后释放资源结束;如果有意外掉电,则执行第九步;第九步:出现意外掉电,则根据pplP、pplQ数据开始执行数据恢复流程,根据pufpState参数选择恢复算法,具体有分块切分element恢复算法和伽罗华域算法等,由于该恢复算法不属于本发明的内容故此处不做赘述。选择好恢复算法后根据apuCode参数,读取APU区域中备份老的数据部分校验和(即pplP和pplQ数据),然后通过pslCbHandle函数指针开始执行恢复流程;第十步:数据恢复完毕后,释放资源并结束流程。
参见图9所示,本申请实施例还相应公开了一种安全存储装置,应用于磁盘阵列卡,包括:
请求获取模块11,用于获取主机侧发送的输入输出写请求;
第一读取模块12,用于控制阵列控制器根据所述输入输出请求对目标日志中的第一地址参数进行读取,并根据所述第一地址参数从所述磁盘阵列卡获取旧目标数据及旧校验数据;其中,所述目标日志用于记录所述阵列控制器进行校验更新的情况;
第一运算及恢复模块13,用于对所述旧目标数据和所述旧校验数据进行异或运算得到第一异或结果并将所述第一异或结果存储至所述磁盘阵列卡的对应硬盘中,以便在存储异常时根据所述第一异或结果恢复出完整的所述旧目标数据及所述旧校验数据。
可见,本申请实施例先获取主机侧发送的输入输出写请求;然后控制阵列控制器根据所述输入输出请求对目标日志中的第一地址参数进行读取,并根据所述第一地址参数从所述磁盘阵列卡获取旧目标数据及旧校验数据;其中,所述目标日志用于记录所述阵列控制器进行校验更新的情况;最后对所述旧目标数据和所述旧校验数据进行异或运算得到第一异或结果并将所述第一异或结果存储至所述磁盘阵列卡的对应硬盘中,以便在存储异常时根据所述第一异或结果恢复出完整的所述旧目标数据及所述旧校验数据。本申请实施例引入目标日志的概念,其用于记录所述阵列控制器进行校验更新的情况,在进行存储更新时,根据该目标日志中的参数获取旧目标数据及旧校验数据,以此生成一个异或结果,这个异或结果用于在存储异常时恢复数据,从而解决“写洞”问题的同时继续保持较高的系统IO性能,在不增加硬件成本的基础上,提高磁盘阵列卡的数据安全性以及用户体验。
在一些具体实施例中,所述安全存储装置还包括:
第二读取模块,用于根据所述输入输出写请求从所述主机侧获取与所述旧目标数据对应的新目标数据,并根据所述新目标数据、所述旧目标数据和所述旧校验数据得到新校验数据;
落盘模块,用于将所述新目标数据和所述新校验数据存储至所述磁盘阵列卡的对应硬盘中,以便在存储正常时保证数据及校验一致性;
覆盖写模块,用于获取新的参数值并利用新的参数值对所述目标日志中的参数进行覆盖写操作;
搬移模块,用于将所述新目标数据搬移至所述磁盘阵列卡的内存中;
指令获取模块,用于获取所述主机侧下发的阵列创建指令;
初始化及赋值模块,用于控制所述阵列控制器根据所述阵列创建指令对所述目标日志中的参数进行初始化及赋值操作;
轮训模块,用于通过定时器轮训的方式对所述磁盘阵列卡是否发生异常掉电进行检测,如果检测到所述磁盘阵列卡发生异常掉电,则判定存储异常。
在一些具体实施例中,所述第二读取模块,具体包括:
读取单元,用于控制所述阵列控制器根据所述输入输出请求对所述目标日志中的第二地址参数进行读取,并根据所述第二地址参数从所述主机侧的内存中获取所述新目标数据;
异或单元,用于在所述磁盘阵列卡的内存中对所述旧目标数据和所述新目标数据进行异或运算得到第二异或结果,并对所述第二异或结果和所述旧校验数据进行异或运算得到第三异或结果;将所述第三异或结果作为所述新校验数据。
在一些具体实施例中,所述第一读取模块12,具体用于将所述旧目标数据及所述旧校验数据搬移至所述磁盘阵列卡的内存中。
在一些具体实施例中,所述第一运算及恢复模块13,具体用于在所述磁盘阵列卡的内存中对所述旧目标数据和所述旧校验数据进行异或运算得到所述第一异或结果。
在一些具体实施例中,所述第一运算及恢复模块13,具体还用于将所述第一异或结果存储至所述磁盘阵列卡存储所述旧校验数据的校验盘的原子奇偶校验更新区域中,以便在存储异常时,从所述原子奇偶校验更新区域中读取所述第一异或结果并根据所述第一异或结果恢复出完整的所述旧目标数据及所述旧校验数据。
在一些具体实施例中,所述第一读取模块12,具体还用于如果所述磁盘阵列卡中包含多个校验盘,则根据所述第一地址参数从所述磁盘阵列卡获取所述旧目标数据及多个所述旧校验数据;其中,一个校验盘上存储一个校验数据。
在一些具体实施例中,所述第一运算及恢复模块13,具体还用于分别对所述旧目标数据和各个所述旧校验数据进行异或运算得到多个所述第一异或结果并将各个所述第一异或结果分别存储至对应校验盘的所述原子奇偶校验更新区域中,以便在存储异常时,从各个所述原子奇偶校验更新区域中读取各个所述第一异或结果并根据各个所述第一异或结果恢复出相应的所述旧目标数据及所述旧校验数据。
进一步的,本申请实施例还提供了一种电子设备。图10是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。
图10为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的安全存储方法中的相关步骤。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222及数据223等,存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中海量数据223的运算与处理,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的安全存储方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据223可以包括电子设备20收集到的请求数据。
进一步的,本申请实施例还公开了一种存储介质,所述存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的安全存储方法步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的安全存储方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (20)
1.一种安全存储方法,其特征在于,应用于磁盘阵列卡,包括:
获取主机侧发送的输入输出写请求;
控制阵列控制器根据所述输入输出请求对目标日志中的第一地址参数进行读取,并根据所述第一地址参数从所述磁盘阵列卡获取旧目标数据及旧校验数据;其中,所述目标日志用于记录所述阵列控制器进行校验更新的情况;
对所述旧目标数据和所述旧校验数据进行异或运算得到第一异或结果并将所述第一异或结果存储至所述磁盘阵列卡的对应硬盘中,以便在存储异常时根据所述第一异或结果恢复出完整的所述旧目标数据及所述旧校验数据;所述第一异或结果存储在原子奇偶校验更新区域;
所述目标日志中至少包含所述第一地址参数、状态参数、槽位参数及控制块参数;所述第一地址参数用于定位所述磁盘阵列卡中对应硬盘的物理地址;所述状态参数用于表征校验更新的状态定义以确定执行恢复流程的恢复算法;所述槽位参数用于表征校验盘的所述原子奇偶校验更新区域的位置以读取所述第一异或结果;所述控制块参数用于确定数据块所在的当前数据页链条及定位当前数据页链条的数据缓存区域以执行恢复流程。
2.根据权利要求1所述的安全存储方法,其特征在于,所述将所述第一异或结果存储至所述磁盘阵列卡的对应硬盘中之后,还包括:
根据所述输入输出写请求从所述主机侧获取与所述旧目标数据对应的新目标数据,并根据所述新目标数据、所述旧目标数据和所述旧校验数据得到新校验数据;
将所述新目标数据和所述新校验数据存储至所述磁盘阵列卡的对应硬盘中,以便在存储正常时保证数据及校验一致性。
3.根据权利要求2所述的安全存储方法,其特征在于,所述将所述新目标数据和所述新校验数据存储至所述磁盘阵列卡的对应硬盘中之后,还包括:
获取新的参数值并利用新的参数值对所述目标日志中的参数进行覆盖写操作。
4.根据权利要求2所述的安全存储方法,其特征在于,所述根据所述输入输出写请求从所述主机侧获取与所述旧目标数据对应的新目标数据,包括:
控制所述阵列控制器根据所述输入输出请求对所述目标日志中的第二地址参数进行读取,并根据所述第二地址参数从所述主机侧的内存中获取所述新目标数据。
5.根据权利要求4所述的安全存储方法,其特征在于,所述根据所述第二地址参数从所述主机侧的内存中获取所述新目标数据之后,还包括:
将所述新目标数据搬移至所述磁盘阵列卡的内存中;
相应的,所述根据所述新目标数据、所述旧目标数据和所述旧校验数据得到新校验数据,包括:
在所述磁盘阵列卡的内存中对所述旧目标数据和所述新目标数据进行异或运算得到第二异或结果,并对所述第二异或结果和所述旧校验数据进行异或运算得到第三异或结果;
将所述第三异或结果作为所述新校验数据。
6.根据权利要求5所述的安全存储方法,其特征在于,所述根据所述第一地址参数从所述磁盘阵列卡获取旧目标数据及旧校验数据,包括:
将所述旧目标数据及所述旧校验数据搬移至所述磁盘阵列卡的内存中;
相应的,所述对所述旧目标数据和所述旧校验数据进行异或运算得到第一异或结果,包括:
在所述磁盘阵列卡的内存中对所述旧目标数据和所述旧校验数据进行异或运算得到所述第一异或结果。
7.根据权利要求1所述的安全存储方法,其特征在于,所述将所述第一异或结果存储至所述磁盘阵列卡的对应硬盘中,包括:
将所述第一异或结果存储至所述磁盘阵列卡存储所述旧校验数据的校验盘的原子奇偶校验更新区域中,以便在存储异常时,从所述原子奇偶校验更新区域中读取所述第一异或结果并根据所述第一异或结果恢复出完整的所述旧目标数据及所述旧校验数据。
8.根据权利要求7所述的安全存储方法,其特征在于,所述根据所述第一地址参数从所述磁盘阵列卡获取旧目标数据及旧校验数据,包括:
如果所述磁盘阵列卡中包含多个校验盘,则根据所述第一地址参数从所述磁盘阵列卡获取所述旧目标数据及多个所述旧校验数据;其中,一个校验盘上存储一个校验数据;
相应的,所述对所述旧目标数据和所述旧校验数据进行异或运算得到第一异或结果并将所述第一异或结果存储至所述磁盘阵列卡的对应硬盘中,包括:
分别对所述旧目标数据和各个所述旧校验数据进行异或运算得到多个所述第一异或结果并将各个所述第一异或结果分别存储至对应校验盘的所述原子奇偶校验更新区域中,以便在存储异常时,从各个所述原子奇偶校验更新区域中读取各个所述第一异或结果并根据各个所述第一异或结果恢复出相应的所述旧目标数据及所述旧校验数据。
9.根据权利要求7所述的安全存储方法,其特征在于,所述根据所述第一异或结果恢复出完整的所述旧目标数据及所述旧校验数据,包括:
对所述目标日志中的状态参数进行读取;其中,所述状态参数为校验更新的状态定义;
根据所述状态参数确定出目标恢复算法,以利用所述目标恢复算法执行恢复流程。
10.根据权利要求9所述的安全存储方法,其特征在于,所述状态参数与恢复算法之间具有对应关系;
相应的,所述根据所述状态参数确定出目标恢复算法,包括:
根据所述状态参数与恢复算法之间的所述对应关系确定出所述目标恢复算法。
11.根据权利要求9所述的安全存储方法,其特征在于,恢复算法包括分块切分恢复算法和伽罗华域算法。
12.根据权利要求9所述的安全存储方法,其特征在于,所述利用所述目标恢复算法执行恢复流程,包括:
对所述目标日志中的槽位参数和控制块参数进行读取;其中,所述槽位参数表征校验盘的所述原子奇偶校验更新区域的位置,所述控制块参数用于确定数据块所在的当前数据页链条及定位当前数据页链条的数据缓存区域;
利用所述目标恢复算法根据所述槽位参数从所述原子奇偶校验更新区域中读取所述第一异或结果,并通过控制块参数函数指针执行恢复流程。
13.根据权利要求1所述的安全存储方法,其特征在于,所述获取主机侧发送的输入输出写请求之前,还包括:
获取所述主机侧下发的阵列创建指令;
控制所述阵列控制器根据所述阵列创建指令对所述目标日志中的参数进行初始化及赋值操作。
14.根据权利要求13所述的安全存储方法,其特征在于,所述阵列创建指令为用户通过所述主机侧下发的创建阵列的命令行参数。
15.根据权利要求14所述的安全存储方法,其特征在于,所述获取所述主机侧下发的阵列创建指令之后,还包括:
控制磁盘阵列卡固件层的驱动程序对所述命令行参数进行解析,并将解析后参数透传至所述阵列控制器,以便所述阵列控制器根据解析后参数对所述目标日志中的参数进行初始化及赋值操作。
16.根据权利要求1至15任一项所述的安全存储方法,其特征在于,所述根据所述第一异或结果恢复出完整的所述旧目标数据及所述旧校验数据之前,还包括:
通过定时器轮训的方式对所述磁盘阵列卡是否发生异常掉电进行检测,如果检测到所述磁盘阵列卡发生异常掉电,则判定存储异常。
17.根据权利要求16所述的安全存储方法,其特征在于,所述目标日志存储于非易失性随机访问存储器或受掉电保护的内存中。
18.一种安全存储装置,其特征在于,应用于磁盘阵列卡,包括:
请求获取模块,用于获取主机侧发送的输入输出写请求;
第一读取模块,用于控制阵列控制器根据所述输入输出请求对目标日志中的第一地址参数进行读取,并根据所述第一地址参数从所述磁盘阵列卡获取旧目标数据及旧校验数据;其中,所述目标日志用于记录所述阵列控制器进行校验更新的情况;
第一运算及恢复模块,用于对所述旧目标数据和所述旧校验数据进行异或运算得到第一异或结果并将所述第一异或结果存储至所述磁盘阵列卡的对应硬盘中,以便在存储异常时根据所述第一异或结果恢复出完整的所述旧目标数据及所述旧校验数据;所述第一异或结果存储在原子奇偶校验更新区域;
所述目标日志中至少包含所述第一地址参数、状态参数、槽位参数及控制块参数;所述第一地址参数用于定位所述磁盘阵列卡中对应硬盘的物理地址;所述状态参数用于表征校验更新的状态定义以确定执行恢复流程的恢复算法;所述槽位参数用于表征校验盘的所述原子奇偶校验更新区域的位置以读取所述第一异或结果;所述控制块参数用于确定数据块所在的当前数据页链条及定位当前数据页链条的数据缓存区域以执行恢复流程。
19.一种电子设备,其特征在于,所述电子设备包括处理器和存储器;其中所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至17任一项所述的安全存储方法。
20.一种计算机可读存储介质,其特征在于,用于存储计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如权利要求1至17任一项所述的安全存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310025601.7A CN115793985B (zh) | 2023-01-09 | 2023-01-09 | 一种安全存储方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310025601.7A CN115793985B (zh) | 2023-01-09 | 2023-01-09 | 一种安全存储方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115793985A CN115793985A (zh) | 2023-03-14 |
CN115793985B true CN115793985B (zh) | 2023-04-21 |
Family
ID=85428791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310025601.7A Active CN115793985B (zh) | 2023-01-09 | 2023-01-09 | 一种安全存储方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115793985B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115993882A (zh) * | 2023-03-21 | 2023-04-21 | 苏州浪潮智能科技有限公司 | 磁盘阵列卡备电控制方法、装置、电子设备和存储介质 |
CN117112310B (zh) * | 2023-10-18 | 2024-02-20 | 苏州元脑智能科技有限公司 | 后台任务进度保存和恢复方法、装置、设备及存储介质 |
CN117574446B (zh) * | 2024-01-16 | 2024-04-05 | 苏州元脑智能科技有限公司 | 一种数据保护方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102270102A (zh) * | 2011-04-29 | 2011-12-07 | 华中科技大学 | 一种raid6磁盘阵列写性能的优化方法 |
CN110413205A (zh) * | 2018-04-28 | 2019-11-05 | 伊姆西Ip控股有限责任公司 | 用于向磁盘阵列进行写入的方法、设备和计算机可读存储介质 |
CN114610525A (zh) * | 2022-03-18 | 2022-06-10 | 山东云海国创云计算装备产业创新中心有限公司 | 一种用于磁盘阵列的数据更新方法、系统及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6523087B2 (en) * | 2001-03-06 | 2003-02-18 | Chaparral Network Storage, Inc. | Utilizing parity caching and parity logging while closing the RAID5 write hole |
JP5404804B2 (ja) * | 2009-05-25 | 2014-02-05 | 株式会社日立製作所 | ストレージサブシステム |
CN103049222B (zh) * | 2012-12-28 | 2016-05-25 | 中国船舶重工集团公司第七0九研究所 | 一种raid5的写io优化处理方法 |
US9946607B2 (en) * | 2015-03-04 | 2018-04-17 | Sandisk Technologies Llc | Systems and methods for storage error management |
KR101986579B1 (ko) * | 2016-12-14 | 2019-10-01 | 한국과학기술원 | Ssd 배열의 로그 기반 패리티 갱신 시스템 및 방법 그리고 이를 이용한 블록 및 노드 결함 복구 방법 |
CN111078472B (zh) * | 2019-12-23 | 2023-06-02 | 四川效率源信息安全技术股份有限公司 | 一种raid6缺失磁盘后的数据恢复方法 |
-
2023
- 2023-01-09 CN CN202310025601.7A patent/CN115793985B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102270102A (zh) * | 2011-04-29 | 2011-12-07 | 华中科技大学 | 一种raid6磁盘阵列写性能的优化方法 |
CN110413205A (zh) * | 2018-04-28 | 2019-11-05 | 伊姆西Ip控股有限责任公司 | 用于向磁盘阵列进行写入的方法、设备和计算机可读存储介质 |
CN114610525A (zh) * | 2022-03-18 | 2022-06-10 | 山东云海国创云计算装备产业创新中心有限公司 | 一种用于磁盘阵列的数据更新方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115793985A (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115793985B (zh) | 一种安全存储方法、装置、设备及存储介质 | |
US6523087B2 (en) | Utilizing parity caching and parity logging while closing the RAID5 write hole | |
EP3125120B1 (en) | System and method for consistency verification of replicated data in a recovery system | |
US7908512B2 (en) | Method and system for cache-based dropped write protection in data storage systems | |
JP4988214B2 (ja) | 記憶装置における喪失した書き込みの検出および回復 | |
US8484522B2 (en) | Apparatus, system, and method for bad block remapping | |
US6467023B1 (en) | Method for logical unit creation with immediate availability in a raid storage environment | |
US7587630B1 (en) | Method and system for rapidly recovering data from a “dead” disk in a RAID disk group | |
US6950836B2 (en) | Method, system, and program for a transparent file restore | |
US7689869B2 (en) | Unit, method and program for detecting imprecise data | |
JP3682256B2 (ja) | ディスクアレイ装置及び同装置におけるパリティ処理方法 | |
US7590875B2 (en) | Storage system with disk drive power-on-reset detection | |
US20050251628A1 (en) | Method, system, and program for demoting tracks from cache | |
US20150378642A1 (en) | File system back-up for multiple storage medium device | |
US8074113B2 (en) | System and method for data protection against power failure during sector remapping | |
US5421003A (en) | Disk storage system with fault tolerant media maintenance | |
US20140089728A1 (en) | Method and apparatus for synchronizing storage volumes | |
KR20130050588A (ko) | 나스 서버의 임베디드 시스템 펌웨어 복원 장치 및 방법 | |
US7398448B2 (en) | Storage system has the function of preventing drive write error | |
US8418029B2 (en) | Storage control device and storage control method | |
US20060015769A1 (en) | Program, method and apparatus for disk array control | |
US7577804B2 (en) | Detecting data integrity | |
JP2012509533A5 (zh) | ||
US10747610B2 (en) | Leveraging distributed metadata to achieve file specific data scrubbing | |
US7340576B1 (en) | Storage system with disk drive power-on-reset detection and recovery |
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 |