CN114610542B - 数据恢复方法、装置、可读存储介质及电子设备 - Google Patents
数据恢复方法、装置、可读存储介质及电子设备 Download PDFInfo
- Publication number
- CN114610542B CN114610542B CN202210502764.5A CN202210502764A CN114610542B CN 114610542 B CN114610542 B CN 114610542B CN 202210502764 A CN202210502764 A CN 202210502764A CN 114610542 B CN114610542 B CN 114610542B
- Authority
- CN
- China
- Prior art keywords
- data
- written
- page
- result
- xor
- 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
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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
本发明公开一种数据恢复方法、装置、可读存储介质及电子设备,在获取到cache program失败的命令执行结果后,通过分别从磁盘阵列缓存中获取以写入数据的异或结果,从闪存空间读取当前所有已写入数据的page的数据,再根据得到的异或结果和当前所有已写入数据的page的数据对写入失败的page的数据进行恢复,实现对cache program失败的page的数据进行恢复,同时将异或结果存储在磁盘阵列缓存中而不是闪存空间中,使得闪存空间不需对异或结果进行存储,能够将所有的存储空间用于数据的存储,提高闪存空间利用率,并且不需要占用额外的带宽用于将异或结果写入闪存空间,从而在既能够实现cache program失败之后数据的恢复数据,又可以保证主机写性能不受影响,而且不浪费闪存空间。
Description
技术领域
本发明涉及计算机存储器领域,特别是涉及一种数据恢复方法、装置、可读存储介质及电子设备。
背景技术
在闪存内部每一个plane上有两个缓存:cache register和page register。为了优化闪存的访问速度可以将两级缓存都利用起来,这就是缓存写(cache program)。虽然闪存采用cache program的方式可以优化前端的写性能,但是采用这种方式有一个弊端:cache program命令结束之后返回的写成功或失败的状态是当前写入数据所在LUN上的前一笔数据的写完成状态。如LUN0上顺序发送cache program命令为:command1、comand2、command3和command4,那么command2结束时获得command1的执行结果,command 3结束时获得command2的执行结果,command4结束时获得command3的执行结果。因此当主控端得知有写失败发生的时,写失败的命令已经完成,存储数据的内存已经释放,无法再次写入对数据进行恢复。而普通的program命令结束之后返回的状态(写成功或者写失败)是当前写入数据的状态,因此即使写入失败也能够及时的对数据进行恢复。
如果闪存空间内有足够大的内存空间,那么可以将命令的数据内存保留直到收到该命令的执行结果之后再做处理。即program成功就释放内存,program失败就重新分配页(page)将数据重写一遍。但是在SSD主控中,特别是在没有动态随机存取存储器(DynamicRandom Access Memory,DRAM)的主控中,内存的大小非常有限,为了高效利用内存,在收到cache program结束的报告时,将立马释放当前命令的数据内存,则使得Program失败就没办法立马重写数据,即出现上述cache program写入方式问题。
针对上述问题,通常的做法为一、对于cache program失败不做任何处理,即导致数据会丢失。二、采用普通的磁盘阵列(Redundant Arraysof Independent Disks,RAID)模式。一般是RAID5:如图1和图2所示,即将RAID的parity(奇偶校验位)写到一个超级块的一个LUN上。当出现cache program写失败之后使用parity恢复出错的数据。但这种方式会浪费一定的闪存空间用于写parity。同时在写入Parity的时候会也占用带宽,导致主机写性能下降。
发明内容
本发明所要解决的技术问题是:提供一种数据恢复方法、装置、可读存储介质及电子设备,针对以cache program方式写入的出错数据恢复,同时不影响数据写入性能并且不浪费存储空间。
为了解决上述技术问题,本发明采用的技术方案为:
获取命令执行结果,判断所述执行结果是否为写入失败;
若是,则获取所述写入失败的page的标号以及储存在磁盘阵列的缓存中的与所述写入失败的page对应的异或结果,并从闪存空间读取当前所有已写入数据的page的数据;
根据所述异或结果和所有所述已写入数据的page的数据得到所述写入失败的page对应的恢复数据;
根据所述写入失败的page的标号将所述恢复数据所在超级块所有数据重新写入下一个超级块。
为了解决上述技术问题,本发明采用的另一技术方案为:
一种数据恢复装置,包括:
获取模块,用于获取命令执行结果,判断所述执行结果是否为写入失败;
执行模块,用于获取所述写入失败的page的标号以及储存在磁盘阵列的缓存中的与所述写入失败的page对应的异或结果,并从闪存空间读取当前所有已写入数据的page的数据;
恢复模块,用于根据所述异或结果和所有所述已写入数据的page的数据得到所述写入失败的page对应的恢复数据;
更新模块,用于根据所述写入失败的page的标号将所述恢复数据所在超级块所有数据重新写入下一个超级块。
为了解决上述技术问题,本发明采用的另一技术方案为:
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的一种数据恢复方法中的各个步骤。
为了解决上述技术问题,本发明采用的另一技术方案为:
一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述的一种数据恢复方法中的各个步骤。
本发明的有益效果在于:在获取到cache program失败的命令执行结果后,通过分别从磁盘阵列缓存中获取以写入数据的异或结果,从闪存空间读取当前所有已写入数据的page的数据,再根据得到的异或结果和当前所有已写入数据的page的数据对写入失败的page的数据进行恢复,实现对cache program失败的page的数据进行恢复,同时将异或结果存储在磁盘阵列缓存中而不是闪存空间中,使得闪存空间不需要提供额外的空间用于存储异或结果,能够将所有的存储空间用于数据的存储,提高闪存空间利用率,并且不需要占用额外的带宽用于将异或结果写入闪存空间,从而在既能够实现cache program失败之后数据的恢复数据,又可以保证主机写性能不受影响,而且不浪费闪存空间。
附图说明
图1为现有技术中的RAID模式结构示意图;
图2为现有技术中的RAID模式中超级块的结构示意图;
图3为本发明实施例中的一种数据恢复方法的步骤流程图;
图4为本发明实施例中的一种数据恢复方法的超级块的结构示意图;
图5为本发明实施例中的一种数据恢复方法的数据写入结构示意图;
图6为本发明实施例中的一种数据恢复方法的数据恢复结构示意图;
图7为本发明实施例的一种数据恢复装置的结构示意图;
图8为本发明实施例的一种电子设备的结构示意图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
请参照图3,一种数据恢复方法,包括步骤:
获取命令执行结果,判断所述执行结果是否为写入失败;
若是,则获取所述写入失败的page的标号以及储存在磁盘阵列的缓存中的与所述写入失败的page对应的异或结果,并从闪存空间读取当前所有已写入数据的page的数据;
根据所述异或结果和所有所述已写入数据的page的数据得到所述写入失败的page对应的恢复数据;
根据所述写入失败的page的标号将所述恢复数据所在超级块所有数据重新写入下一个超级块。
由上述描述可知,本发明的有益效果在于:在获取到cache program失败的命令执行结果后,通过分别从磁盘阵列缓存中获取以写入数据的异或结果,从闪存空间读取当前所有已写入数据的page的数据,再根据得到的异或结果和当前所有已写入数据的page的数据对写入失败的page的数据进行恢复,实现对cache program失败的page的数据进行恢复,同时将异或结果存储在磁盘阵列缓存中而不是闪存空间中,使得闪存空间不需要提供额外的空间用于存储异或结果,能够将所有的存储空间用于数据的存储,提高闪存空间利用率,并且不需要占用额外的带宽用于将异或结果写入闪存空间,从而在既能够实现cacheprogram失败之后数据的恢复数据,又可以保证主机写性能不受影响,而且不浪费闪存空间。
进一步地,所述根据所述异或结果和所有所述已写入数据的page的数据得到所述写入失败的page对应的恢复数据包括:
遍历所述已写入数据的page的数据;
将所述已写入数据的page内的数据与所述异或结果进行异或操作,得到更新的所述异或结果;
将更新的所述异或结果更新至所述磁盘阵列的缓存中,直至每一所述已写入数据的page内的数据均完成所述异或操作,得到所述恢复数据。
由上述描述可知,通过从闪存空间内将每一page内的数据读出后依次与异或结果进行异或操作,并将每一次得到的异或结果更新至磁盘阵列的缓存中,并最终计算得到恢复数据,从而保证异或结果以及恢复数据的可靠性
进一步地,还包括:
接收数据写入命令,根据所述数据写入命令将数据写入所述当前待写入的page内,并获取所述当前待写入的page的前一page所对应的异或结果;
将当前待写入的page对应的数据与前一page所对应的所述异或结果进行异或操作,得到更新的所述异或结果;
将更新的所述异或结果存储至所述磁盘阵列的缓存中。
由上述描述可知,当每一数据写入时,将待写入的数据与储存在磁盘阵列的缓存中的异或结果进行异或操作,并将得到的异或结果更新至磁盘阵列的缓存中,从而为每一次写入的数据生成对应的异或结果,当cache program失败后能够通过生成的异或结果对该数据进行恢复,保证写入数据的可恢复性。
进一步地,还包括:
获取所述当前待写入的page所在的逻辑块内储存平面的数量;
根据所述储存平面的数量在所述磁盘阵列设置对应数量的缓存大小用于存储所述异或结果。
由上述描述可知,通过根据当前待写入的page所在的逻辑块内储存平面的数量在磁盘阵列内设置对应数量的缓存大小用于存储异或结果,使得每一储存平面都有分别对应的一个异或结果,当cache program失败后每一储存平面能够根据对应的异或结果进行数据恢复,保证写入数据的可恢复性。
进一步地,所述当前待写入的page所在超级块上的所有page均写入数据成功后,清理所述磁盘阵列的缓存。
由上述描述可知,通过在每一超级块上的所有page均写入数据成功后将磁盘阵列的缓存清除,从而当对下一超级块进行数据写入时能够再次利用磁盘阵列的缓存对新超级块的异或结果进行缓存。
请参照图7,本发明另一实施例提供了一种数据恢复装置,包括:
获取模块,用于获取命令执行结果,判断所述执行结果是否为写入失败;
执行模块,用于获取所述写入失败的页的标号以及储存在磁盘阵列的缓存中的与所述写入失败的页对应的异或结果,并从闪存空间读取当前已写入的所有页的数据;
恢复模块,用于根据所述异或结果和所有所述页的数据得到所述写入失败的页对应的恢复数据;
更新模块,根据所述写入失败的page的标号将所述恢复数据所在超级块所有数据重新写入下一个超级块。
本发明另一实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的一种数据恢复方法中的各个步骤。
请参照图8,本发明另一实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述的一种数据恢复方法中的各个步骤。
本发明上述数据恢复方法、装置、计算机可读存储介质及电子设备能够适用于各种类型的SSD储存产品,解决cache program失败后数据恢复的问题,以下通过具体实施方式进行说明:
名词解释:Lun:逻辑单元;page:页;plane:储存平面;
实施例一
请参照图3和图4,一种数据恢复方法,包括步骤:
S1、获取命令执行结果,判断所述执行结果是否为写入失败;如当前接收到超级块中Lun0上的page2写入操作的执行结果;
若是,S2、获取所述写入失败的page的标号以及储存在磁盘阵列的缓存中的与所述写入失败的page对应的异或结果,并从闪存空间读取当前所有已写入数据的page的数据;如判断得到执行结果为page2写入失败,则获取到page2对应的标号为Lun0_plane0_page2以及page2对应的异或结果parity0,并读取page2之前已写入的Lun0上的page0和page1、Lun1上的page0、page1和page2、Lun2上的page0、page1和page2以及Lun3上的page0、page1和page2上的数据;
具体的,当发生写失败时根据cache program的原则找到写失败的page;即每次获得的写状态反应的是相同Lun上的相同plane的上一个page的program命令的结果;如Lun0上的plane0的page3收到写失败的结果,但实际写失败的page是Lun0上的plane0的page2;同理可以推导到其他page上得到真实写失败的page;同时,获取命令执行结果可以在当前数据写入之前或写入之后,若为写入后则当前已写入数据的page为:Lun0_plane0_page0至Lun0_plane0_page3;若为写入前,则当前已写入数据的page1为Lun0_plane0_page0至Lun3_plane0_page2;
S3、根据所述异或结果和所有所述已写入数据的page的数据得到所述写入失败的page对应的恢复数据;所述异或结果parity0为Lun0_plane0上的page0、page1和page2、Lun1_plane0上的page0和page1、Lun2_plane0上的page0和page1以及Lun3_plane0上的page0和page1的总异或结果;即P0=[Lun0_plane0_page0] xor [Lun1_plane0_page0] xor[Lun2_plane0_page0] xor [Lun3_plane0_page0] xor [Lun0_plane0_page1] xor[Lun1_plane0_page1] xor [Lun2_plane0_page1] xor [Lun3_plane0_page1] xor[Lun0_plane0_page2] xor...xor [Lun3_plane0_page2];
S31、遍历所述已写入数据的page的数据;即依次读取Lun0_plane0_page0至Lun3_plane0_page2的有效数据(不包括Lun0_plane0_page2),可案标号顺序进行读取或随机读取等方式进行读取;
S32、将所述已写入数据的page内的数据与所述异或结果进行异或操作,得到更新的所述异或结果;如当前读取的page为Lun0_plane0_page0,即P0new=P0 xor [Lun0_plane0_page0];
S33、将更新的所述异或结果更新至所述磁盘阵列的缓存中,直至每一所述已写入数据的page内的数据均完成所述异或操作,得到所述恢复数据;即将用于下一次的异或计算,得到P0new=Lun0_plane0_page2=[Lun0_plane0_page0] xor [Lun1_plane0_page0] xor[Lun2_plane0_page0] xor[Lun3_plane0_page0] xor [Lun0_plane0_page1] xor [Lun1_plane0_page1] xor [Lun2_plane0_page1] xor [ Lun3_plane0_page1] xor ...xor[Lun3_plane0_page2] xor P0;
S4、根据所述写入失败的page的标号将所述恢复数据所在超级块所有数据重新写入下一个超级块;根据标号Lun0_plane0_page2将最终的所述异或结果P0new数据以及所在超级块所有数据重新写入下一个超级块内;由于SSD只能顺序写,因此需要将所述恢复数据所在超级块所有数据重新写入下一个超级块内;
虽然恢复数据需要的时间相对常规的做法要长很多,但是在nand的整个生命周期program fail的次数很少,这个时候因为数据恢复而影响了性能是可以接受的情况。
实施例二
本实施例与实施例一的不同在于,限定了数据写入的过程;
请参照图5,包括如下步骤:
W1、接收数据写入命令,根据所述数据写入命令将数据写入所述当前待写入的page内,并获取所述当前待写入的page的前一page所对应的异或结果;一plane0为例,若当前待写入的page为Lun0上的page0,而Lun0为超级块上的第一个page不存在前一个异或结果,即异或结果初始值为空值;若当前待写入的page为Lun0上的page1,则获取得到异或结果为Lun3上的page0对应的异或结果;
W2、将当前待写入的page对应的数据与前一page所对应的所述异或结果进行异或操作,得到更新的所述异或结果;如当前待写入的page为Lun0上的page0,将Lun0_plane0_page0与空值进行异或操作,即得到P= Lun0_plane0_page0;如当前待写入的page为Lun0上的page1,将Lun0_plane0_page1与Lun3_plane0_page0对应的异或结果进行异或操作,即得到P=[ Lun0_plane0_page0] xor [Lun1_plane0_page0] xor [Lun2_plane0_page0] xor[Lun3_plane0_page0] xor [Lun0_plane0_page1];其中[ Lun0_plane0_page0] xor[Lun1_plane0_page0] xor [Lun2_plane0_page0] xor [Lun3_plane0_page0]为Lun0_plane0_page1之前所有以写入数据的page的总异或结果,即每一page对应的异或结果为已写入数据的page的总异或结果;
W3、将更新的所述异或结果存储至所述磁盘阵列的缓存中;如将对应的parity0结果存入磁盘阵列的缓存中如RAID buffer0;从而在数据写入的过程中不需要将对应的异或结果parity0写nand中,不仅能够用于后续数据的恢复,而且不占用nand的存储空间;
W4、所述当前待写入的page所在超级块上的所有page均写入数据成功后,清理所述磁盘阵列的缓存;即等待系统重新分配另一超级块进行数据的写入操作;
同时,通常写操作是以一个Lun为单位,即当数据写入Lun0上的page2时同时将数据写入Lun0上的plane0的page2以及Lun0上的plane1的page2;因此当Lun0上的page2写入时,Lun0上的plane0的page2以及plane1的page2同时写入数据;因此,在一个可选的实施方式中,W1之前还包括步骤:
W01、获取所述当前待写入的page所在的逻辑块内储存平面的数量;如Lun0内包括plane0和plane1两个储存平面,即数量为2;
W02、根据所述储存平面的数量在所述磁盘阵列设置对应数量的缓存大小用于存储所述异或结果;分别在RAID模块内分别设置RAID buffer0用于储存plane0的异或结果parity0,设置RAID buffer1用于储存plane1的异或结果parity1;
并且,当写操作失败时,即当数据写入Lun0上的page2写入失败时,Lun0上的plane0的page2以及Lun0上的plane1的page2上的数据都写入失败,因此,需要分别对Lun0上的plane0的page2以及Lun0上的plane1的page2上的数据进行恢复;请参照图6,当恢复数据时,依次从nand中将对应的数据出,并获取RAID buffer0/1中储存的parity0/1对Lun0上的plane0的page2以及Lun0上的plane1的page2上的数据进行恢复,具体步骤请参照实施例一。
实施例三
请参照图7,一种数据恢复装置,包括:
获取模块,用于获取命令执行结果,判断所述执行结果是否为写入失败;
执行模块,用于获取所述写入失败的页的标号以及储存在磁盘阵列的缓存中的与所述写入失败的页对应的异或结果,并从闪存空间读取当前已写入的所有页的数据;
恢复模块,用于根据所述异或结果和所有所述页的数据得到所述写入失败的页对应的恢复数据;
更新模块,用于根据所述写入失败的page的标号将所述恢复数据所在超级块所有数据重新写入下一个超级块内。
实施例四
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如实施例一或二任意一项所述的一种数据恢复方法中的各个步骤。
实施例五
请参照图8,一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如实施例一或二任意一项所述的一种数据恢复方法中的各个步骤。
综上所述,本发明提供的一种数据恢复方法、装置、可读存储介质及电子设备,在向超级块内的page写入数据时,将待写入的数据与当前磁盘阵列的缓存中异或结果进行异或操作,使得每一待写入的数据均通过异或操作的方式将无误的数据保存,并且由磁盘阵列的缓存存储对应的异或结果,使得闪存空间不需对异或结果进行存储,能够将所有的存储空间用于数据的存储,提高闪存空间利用率,并且不需要占用额外的带宽用于将异或结果写入闪存空间;而在获取到cache program失败的命令执行结果后,先通过预设的判断条件是否需要对数据进行判断,当需要进行数据恢复时再通过分别从磁盘阵列缓存中获取以写入数据的异或结果,从闪存空间读取当前所有已写入数据的page的数据,再根据得到的异或结果和当前所有已写入数据的page的数据对写入失败的page的数据进行恢复,实现对cache program失败的page的数据进行恢复,从而在既能够实现cache program失败之后数据的恢复数据,又可以保证主机写性能不受影响,而且不浪费闪存空间。
在本申请所提供的上述实施例中,应该理解到,所揭露的方法、装置、计算机可读存储介质以及电子设备,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个组件或模块可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或组件或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的组件可以是或者也可以不是物理上分开的,作为组件显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部组件来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个组件单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (7)
1.一种数据恢复方法,其特征在于,包括步骤:
获取命令执行结果,判断所述执行结果是否为写入失败;
若是,则获取所述写入失败的page的标号以及储存在磁盘阵列的缓存中的与所述写入失败的page对应的异或结果,并从闪存空间读取当前所有已写入数据的page的数据;
根据所述异或结果和所有所述已写入数据的page的数据得到所述写入失败的page对应的恢复数据;
根据所述写入失败的page的标号将所述恢复数据所在超级块所有数据重新写入下一个超级块内;
所述执行结果为当前写入数据的前一笔数据的写完成状态;
接收数据写入命令,根据所述数据写入命令将数据写入所述当前待写入的page内,并获取所述当前待写入的page的前一page所对应的异或结果;
将当前待写入的page对应的数据与前一page所对应的所述异或结果进行异或操作,得到更新的所述异或结果;
将更新的所述异或结果存储至所述磁盘阵列的缓存中;
所述异或结果为已写入数据的page的总异或结果;
所述已写入数据以cache program的方式写入。
2.根据权利要求1所述的一种数据恢复方法,其特征在于,所述根据所述异或结果和所有所述已写入数据的page的数据得到所述写入失败的page对应的恢复数据包括:
遍历所述已写入数据的page的数据;
将所述已写入数据的page内的数据与所述异或结果进行异或操作,得到更新的所述异或结果;
将更新的所述异或结果更新至所述磁盘阵列的缓存中,直至每一所述已写入数据的page内的数据均完成所述异或操作,得到所述恢复数据。
3.根据权利要求1所述的一种数据恢复方法,其特征在于,还包括:
获取所述当前待写入的page所在的逻辑块内储存平面的数量;
根据所述储存平面的数量在所述磁盘阵列设置对应数量的缓存大小用于存储所述异或结果。
4.根据权利要求1所述的一种数据恢复方法,其特征在于,所述当前待写入的page所在超级块上的所有page均写入数据成功后,清理所述磁盘阵列的缓存。
5.一种数据恢复装置,其特征在于,包括:
获取模块,用于获取命令执行结果,判断所述执行结果是否为写入失败;
执行模块,用于获取所述写入失败的页的标号以及储存在磁盘阵列的缓存中的与所述写入失败的页对应的异或结果,并从闪存空间读取当前已写入的所有页的数据;
恢复模块,用于根据所述异或结果和所有所述页的数据得到所述写入失败的页对应的恢复数据;
更新模块,用于根据所述写入失败的页的标号将所述恢复数据更新至所述写入失败的页内;
所述执行结果为当前写入数据的前一笔数据的写完成状态;
接收数据写入命令,根据所述数据写入命令将数据写入所述当前待写入的page内,并获取所述当前待写入的page的前一page所对应的异或结果;
将当前待写入的page对应的数据与前一page所对应的所述异或结果进行异或操作,得到更新的所述异或结果;
将更新的所述异或结果存储至所述磁盘阵列的缓存中;
所述异或结果为已写入数据的page的总异或结果;
所述已写入数据以cache program的方式写入。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-4任意一项所述的一种数据恢复方法中的各个步骤。
7.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-4任意一项所述的一种数据恢复方法中的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210502764.5A CN114610542B (zh) | 2022-05-10 | 2022-05-10 | 数据恢复方法、装置、可读存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210502764.5A CN114610542B (zh) | 2022-05-10 | 2022-05-10 | 数据恢复方法、装置、可读存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114610542A CN114610542A (zh) | 2022-06-10 |
CN114610542B true CN114610542B (zh) | 2023-03-14 |
Family
ID=81868448
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210502764.5A Active CN114610542B (zh) | 2022-05-10 | 2022-05-10 | 数据恢复方法、装置、可读存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114610542B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107403646A (zh) * | 2016-04-27 | 2017-11-28 | 慧荣科技股份有限公司 | 闪存装置及闪存存储管理方法 |
CN109947374A (zh) * | 2019-04-01 | 2019-06-28 | 江苏华存电子科技有限公司 | 一种闪存主控模块中写入错误的冗余备援保护方法 |
CN111897495A (zh) * | 2020-07-28 | 2020-11-06 | 深圳忆联信息系统有限公司 | 提高ssd写性能的实现方法、装置、计算机设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719105B (zh) * | 2009-12-31 | 2012-01-04 | 中国科学院计算技术研究所 | 一种多核系统中对内存访问的优化方法和系统 |
US20220137835A1 (en) * | 2020-10-30 | 2022-05-05 | Kioxia Corporation | Systems and methods for parity-based failure protection for storage devices |
-
2022
- 2022-05-10 CN CN202210502764.5A patent/CN114610542B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107403646A (zh) * | 2016-04-27 | 2017-11-28 | 慧荣科技股份有限公司 | 闪存装置及闪存存储管理方法 |
CN109947374A (zh) * | 2019-04-01 | 2019-06-28 | 江苏华存电子科技有限公司 | 一种闪存主控模块中写入错误的冗余备援保护方法 |
CN111897495A (zh) * | 2020-07-28 | 2020-11-06 | 深圳忆联信息系统有限公司 | 提高ssd写性能的实现方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114610542A (zh) | 2022-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111104244B (zh) | 用于在存储阵列组中重建数据的方法和设备 | |
US7206991B2 (en) | Method, apparatus and program for migrating between striped storage and parity striped storage | |
US9189311B2 (en) | Rebuilding a storage array | |
US5208813A (en) | On-line reconstruction of a failed redundant array system | |
US9442805B2 (en) | Recovering a volume table and data sets | |
US7293146B1 (en) | Method and apparatus for restoring a corrupted data volume | |
US20110029728A1 (en) | Methods and apparatus for reducing input/output operations in a raid storage system | |
CN107526535B (zh) | 用于管理存储系统的方法和系统 | |
US20050169064A1 (en) | Instant refresh of a data volume copy | |
US5859965A (en) | Method and apparatus for maintaining data consistency in raid | |
US20170091052A1 (en) | Method and apparatus for redundant array of independent disks | |
KR20060100905A (ko) | 기억 장치, 그 제어 방법 및 프로그램 | |
CN111813609B (zh) | 一种存储介质中数据恢复方法、数据恢复系统及相关设备 | |
CN112379830B (zh) | 有效数据位图的创建方法、装置、存储介质及电子设备 | |
US5396620A (en) | Method for writing specific values last into data storage groups containing redundancy | |
US6910111B1 (en) | Volume restoration using an accumulator map | |
CN111930552A (zh) | 坏块数据的恢复方法、装置、存储介质及电子设备 | |
US8418029B2 (en) | Storage control device and storage control method | |
CN114610542B (zh) | 数据恢复方法、装置、可读存储介质及电子设备 | |
GB2343265A (en) | Data storage array rebuild | |
US6854038B2 (en) | Global status journaling in NVS | |
CN105573862B (zh) | 一种恢复文件系统的方法和设备 | |
CN107402838A (zh) | 一种基于写缓存的备份方法及存储系统 | |
CN114625563B (zh) | Ssd的数据保护方法、装置、可读存储介质及电子设备 | |
CN111292796B (zh) | 一种raid损坏详细信息获取方法、系统、终端及存储介质 |
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 |