基于BlockRAID的Parity生成方法、装置和计算机设备与流程

未命名 07-12 阅读:115 评论:0

基于block raid的parity生成方法、装置和计算机设备
技术领域
1.本发明涉及固态硬盘技术领域,特别是涉及一种基于block raid的parity生成方法、装置、计算机设备和存储介质。


背景技术:

2.ssd(solid state drive,固态硬盘)作为一种新型存储介质,其采用nand颗粒作为数据存储,已经广泛应用于pc,笔记本,服务器等各个领域并逐渐取代hdd(hard disk drive,机械硬盘)成为存储领域的主流应用产品。
3.ssd为加强对用户数据的保护,通常会在内部组织raid(redundant array of independent disk,独立磁盘冗余阵列)。常用的两种组织raid的方式是block raid和word line raid。前者在一个block完全失效的情形下,可以通过其它block的数据恢复丢失的信息,但这种方式在写入数据时通常需要同时分配多组block,因此,为了使ssd能正常运行,需要预留的block也会较多,使得允许的出厂坏块会更少,影响产品良率;后者一次只需分配一组block,但因一个block中会包含一个条带的多个page,当出现block级的失效时,数据就无法通过raid恢复。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种基于blockraid的parity生成方法、装置、计算机设备和存储介质。
5.一种基于block raid的parity生成方法,所述方法包括:
6.在写入过程中分配一个tlc super block用于用户数据的写入,并分配一个slc parity block用于存储临时parity;
7.逐个条带写入用户数据和临时parity;
8.对于新分配的tlc super block,在每个条带写入数据之前先从slc parity block中读取对应的临时parity;
9.重新依次逐个条带写入数据,在写入最后一组block的同时将最终parity写入最后一组tlcsuperblock。
10.在其中一个实施例中,在所述重新依次逐个条带写入数据,并将最终parity写入到最后一组tlcsuperblock的最后一个平面的步骤之后还包括:
11.回收slcparityblock。
12.在其中一个实施例中,所述逐个条带写入用户数据和临时parity的步骤之后还包括:
13.待当前slcparityblock写满后,再分配下一个slcparityblock;
14.待当前tlcsuperblock写满后,再分配下一个tlcsuperblock。
15.在其中一个实施例中,所述方法还包括:
16.若发现用户数据读取失败时,检查条带的最终parity是否生成,若没有则检查临
时parity是否生成;
17.若存在临时parity,则通过读取条带对应的临时parity和其他页的数据恢复读取失败页的数据。
18.一种基于blockraid的parity生成装置,所述装置包括:
19.第一分配模块,所述第一分配模块用于在写入过程中分配一个tlcsuper block用于用户数据的写入,并分配一个slcparityblock用于存储临时parity;
20.第一写入模块,所述第一写入模块用于逐个条带写入用户数据和临时parity;
21.数据读取模块,所述数据读取模块用于对于新分配的tlcsuperblock,在每个条带写入数据之前先从slcparityblock中读取对应的临时parity;
22.第二写入模块,所述第二写入模块用于重新依次逐个条带写入数据,在写入最后一组block的同时将最终parity写入最后一组tlcsuperblock。
23.在其中一个实施例中,所述装置还包括回收模块,所述回收模块用于:
24.回收slcparityblock。
25.在其中一个实施例中,所述装置还包括第二分配模块,所述第二分配模块用于:
26.待当前slcparityblock写满后,再分配下一个slcparityblock;
27.待当前tlcsuperblock写满后,再分配下一个tlcsuperblock。
28.在其中一个实施例中,所述装置还包括数据恢复模块,所述数据恢复模块用于:
29.若发现用户数据读取失败时,检查条带的最终parity是否生成,若没有则检查临时parity是否生成;
30.若存在临时parity,则通过读取条带对应的临时parity和其他页的数据恢复读取失败页的数据。
31.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。
32.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。
33.上述基于blockraid的parity生成方法、装置、计算机设备和存储介质,在写入数据时,一次只需分配一组block,并将当前组block生成的parity暂存到slcblock。在写入下一组block前,读取slc暂存的parity,继续生成parity;在写入最后一组block时,同时将最终生成的parity写入。如此,既可保持block raid较强的数据保护能力,同时又能减少预留的block数,以实现提升产品良率。
附图说明
34.图1为传统blockraidparity生成方式的示意图;
35.图2为一个实施例中基于blockraid的parity生成方法的流程示意图;
36.图3为另一个实施例中基于blockraid的parity生成方法的流程示意图;
37.图4为一个实施例中基于blockraid的parity数据写入的示意图;
38.图5为一个实施例中基于blockraid的parity数据恢复的示意图;
39.图6为一个实施例中基于blockraid的parity生成装置的结构框图;
40.图7为另一个实施例中基于blockraid的parity生成装置的结构框图;
41.图8为再一个实施例中基于blockraid的parity生成装置的结构框图;
42.图9为又一个实施例中基于blockraid的parity生成装置的结构框图;
43.图10为一个实施例中计算机设备的内部结构图。
具体实施方式
44.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
45.如图1所示的传统blockraidparity生成方式的示意图,对于一个有8个平面,raid配置为15+1的ssd,在写入数据时,一次需要分配2个超级块,2个超级块中编号相同的页构成一个raid条带,parity位于最后一个超级块的最后一个平面上。写入过程如图中标号所示依次完成两个超级块的条带0、1、

的写入。
46.显然,上述这种生成parity的方式,要求当前条带写完后才能写下一个条带,导致分配block时,一次需要分配多组block,故ssd需要预留的block也会较多,使得允许的出厂坏块会更少,对量产良率不利。
47.基于此,本发明提出了一种基于blockraid的parity生成方法,旨在维持blockraid数据保护能力的同时,降低ssd需要保留块的数量,以便能容忍更多的出厂坏块,提升量产良率。
48.为了更清楚地说明本方案的内容,本文中出现的英文或缩写的中文名称和解释如下:
[0049][0050][0051]
在一个实施例中,如图2所示,提供了一种基于block raid的parity生成方法,该方法包括:
[0052]
步骤202,在写入过程中分配一个tlc super block用于用户数据的写入,并分配一个slc parity block用于存储临时parity;
[0053]
步骤204,逐个条带写入用户数据和临时parity;
[0054]
步骤206,对于新分配的tlc super block,在每个条带写入数据之前先从slc parity block中读取对应的临时parity;
[0055]
步骤208,重新依次逐个条带写入数据,在写入最后一组block的同时将最终parity写入最后一组tlc super block。
[0056]
在本实施例中,提供了一种基于block raid的parity生成方法,该方法在写入数据时,一次只需分配一组block,并将当前组block生成的parity暂存到slc block。
[0057]
具体地,可参考图4所示的基于block raid的parity数据写入的示意图,首先,在写入过程先分配一个tlc super block用于用户数据的写入,以及一个slc block用于临时parity存储。
[0058]
然后,再逐个条带写入用户数据和临时parity。
[0059]
在一个实施例中,逐个条带写入用户数据和临时parity的步骤之后还包括:待当前slc parity block写满后,再分配下一个slc parity block;待当前tlc super block写满后,再分配下一个tlc super block。
[0060]
在一个实施例中,在重新依次逐个条带写入数据,并将最终parity写入到最后一组tlc super block的最后一个平面的步骤之后还包括:回收slc parity block。
[0061]
对新分配的tlc super block,在每个条带写入前,先从slc parity block中读取对应临时parity,重新依次逐条带(条带0~98)写入数据,并将最终的parity写入到最后一组tlcsuperblock的最后一个平面。最后,回收slcparity block。
[0062]
在上述实施例中,在写入数据时,一次只需分配一组block,并将当前组block生成的parity暂存到slcblock。在写入下一组block前,读取slc暂存的parity,继续生成parity;在写入最后一组block时,同时将最终生成的parity写入。如此,既可保持blockraid较强的数据保护能力,同时又能减少预留的block数,以实现提升产品良率。
[0063]
在一个实施例中,方法还包括:若发现用户数据读取失败时,检查条带的最终parity是否生成,若没有则检查临时parity是否生成;若存在临时parity,则通过读取条带对应的临时parity和其他页的数据恢复读取失败页的数据。
[0064]
在一个实施例中,如图3所示,提供了一种基于blockraid的parity生成方法,该方法包括:
[0065]
步骤302,在写入过程中分配一个tlcsuperblock用于用户数据的写入,并分配一个slcparityblock用于存储临时parity;
[0066]
步骤304,逐个条带写入用户数据和临时parity;
[0067]
步骤306,待当前slcparityblock写满后,再分配下一个slcparityblock,待当前tlcsuperblock写满后,再分配下一个tlcsuperblock;
[0068]
步骤308,对于新分配的tlcsuperblock,在每个条带写入数据之前先从slcparityblock中读取对应的临时parity;
[0069]
步骤310,重新依次逐个条带写入数据,在写入最后一组block的同时将最终parity写入最后一组tlcsuperblock的最后一个平面;
[0070]
步骤312,回收slcparityblock;
[0071]
步骤314,若发现用户数据读取失败时,检查条带的最终parity是否生成,若没有
则检查临时parity是否生成,若存在临时parity,则通过读取条带对应的临时parity和其他页的数据恢复读取失败页的数据。
[0072]
具体地,可参考图4所示的基于blockraid的parity数据写入的示意图和图5所示的基于blockraid的parity数据恢复的示意图,其中,在raidparity的生成的过程中:
[0073]
图4以一个有8个平面,raid配置为15+1的tlcssd(假定每个tlcblock有99个页)进行说明,页中的数字表示数据写入的逻辑顺序。
[0074]
4.1)写入过程先分配一个tlcsuperblock用于用户数据的写入,以及一个slcblock用于临时parity存储。
[0075]
4.2)逐个条带写入用户数据和临时parity。
[0076]
4.3)待当前slcparityblock写满后,再分配下一个slcparityblock。
[0077]
4.4)待当前tlcsuperblock写满后,再分配下一个tlcsuperblock。
[0078]
4.5)对新分配的tlcsuperblock,在每个条带写入前,先从slcparityblock中读取对应临时parity,重新依次逐条带(条带0~98)写入数据,并将最终的parity写入到最后一组tlcsuperblock的最后一个平面。
[0079]
4.6)回收slcparityblock。
[0080]
在最终parity未生成场景的数据恢复过程中:
[0081]
由于条带最终parity的生成被延迟,本实施例中利用slcblock来保存临时parity,保证即便在条带最终parity没有生成的场景,也能基于临时parity来恢复用户丢失的数据。过程如图5所示:发现用户数据读取失败时,检查条带的最终parity是否生成,若没有则检查临时parity是否生成,若存在,则通过读取条带对应的临时parity和其他页的数据恢复读取失败页的数据。
[0082]
在本实施例中,在ssd数据出错时,若最终parity还未生成,但临时parity存在的情形,可以根据临时parity来恢复数据,降低了ssd需要保留块的数量,提升了量产良率。
[0083]
应该理解的是,虽然图1-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0084]
在一个实施例中,如图6所示,提供了一种基于blockraid的parity生成装置600,该装置包括:
[0085]
第一分配模块601,所述第一分配模块用于在写入过程中分配一个tlc superblock用于用户数据的写入,并分配一个slcparityblock用于存储临时parity;
[0086]
第一写入模块602,所述第一写入模块用于逐个条带写入用户数据和临时parity;
[0087]
数据读取模块603,所述数据读取模块用于对于新分配的tlcsuperblock,在每个条带写入数据之前先从slcparityblock中读取对应的临时parity;
[0088]
第二写入模块604,所述第二写入模块用于重新依次逐个条带写入数据,在写入最后一组block的同时将最终parity写入最后一组tlcsuperblock。
[0089]
在一个实施例中,如图7所示,提供了一种基于blockraid的parity生成装置600,该装置还包括回收模块605,所述回收模块用于:
[0090]
回收slcparityblock。
[0091]
在一个实施例中,如图8所示,提供了一种基于blockraid的parity生成装置600,该装置还包括第二分配模块606,所述第二分配模块用于:
[0092]
待当前slcparityblock写满后,再分配下一个slcparityblock;
[0093]
待当前tlcsuperblock写满后,再分配下一个tlcsuperblock。
[0094]
在一个实施例中,如图9所示,提供了一种基于blockraid的parity生成装置600,该装置还包括数据恢复模块607,所述数据恢复模块用于:
[0095]
若发现用户数据读取失败时,检查条带的最终parity是否生成,若没有则检查临时parity是否生成;
[0096]
若存在临时parity,则通过读取条带对应的临时parity和其他页的数据恢复读取失败页的数据。
[0097]
关于基于blockraid的parity生成装置的具体限定可以参见上文中对于基于blockraid的parity生成方法的限定,在此不再赘述。
[0098]
在一个实施例中,提供了一种计算机设备,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于blockraid的parity生成方法。
[0099]
本领域技术人员可以理解,图10中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0100]
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。
[0101]
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。
[0102]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一种非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram
(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
[0103]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0104]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。

技术特征:
1.一种基于blockraid的parity生成方法,所述方法包括:在写入过程中分配一个tlcsuperblock用于用户数据的写入,并分配一个slcparityblock用于存储临时parity;逐个条带写入用户数据和临时parity;对于新分配的tlcsuperblock,在每个条带写入数据之前先从slcparity block中读取对应的临时parity;重新依次逐个条带写入数据,在写入最后一组block的同时将最终parity写入最后一组tlcsuperblock。2.根据权利要求1所述的基于blockraid的parity生成方法,其特征在于,在所述重新依次逐个条带写入数据,在写入最后一组block的同时将最终parity写入最后一组tlcsuperblock的步骤之后还包括:回收slcparityblock。3.根据权利要求2所述的基于blockraid的parity生成方法,其特征在于,所述逐个条带写入用户数据和临时parity的步骤之后还包括:待当前slcparityblock写满后,再分配下一个slcparityblock;待当前tlcsuperblock写满后,再分配下一个tlcsuperblock。4.根据权利要求1-3任一项所述的基于blockraid的parity生成方法,其特征在于,所述方法还包括:若发现用户数据读取失败时,检查条带的最终parity是否生成,若没有则检查临时parity是否生成;若存在临时parity,则通过读取条带对应的临时parity和其他页的数据恢复读取失败页的数据。5.一种基于blockraid的parity生成装置,其特征在于,所述装置包括:第一分配模块,所述第一分配模块用于在写入过程中分配一个tlcsuper block用于用户数据的写入,并分配一个slcparityblock用于存储临时parity;第一写入模块,所述第一写入模块用于逐个条带写入用户数据和临时parity;数据读取模块,所述数据读取模块用于对于新分配的tlcsuperblock,在每个条带写入数据之前先从slcparityblock中读取对应的临时parity;第二写入模块,所述第二写入模块用于重新依次逐个条带写入数据,在写入最后一组block的同时将最终parity写入最后一组tlcsuperblock。6.根据权利要求5所述的基于blockraid的parity生成装置,其特征在于,所述装置还包括回收模块,所述回收模块用于:回收slcparityblock。7.根据权利要求6所述的基于blockraid的parity生成装置,其特征在于,所述装置还包括第二分配模块,所述第二分配模块用于:待当前slcparityblock写满后,再分配下一个slcparityblock;待当前tlcsuperblock写满后,再分配下一个tlcsuperblock。8.根据权利要求5-7任一项所述的基于blockraid的parity生成装置,其特征在于,所述装置还包括数据恢复模块,所述数据恢复模块用于:
若发现用户数据读取失败时,检查条带的最终parity是否生成,若没有则检查临时parity是否生成;若存在临时parity,则通过读取条带对应的临时parity和其他页的数据恢复读取失败页的数据。9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4中任一项所述方法的步骤。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的方法的步骤。

技术总结
本申请涉及一种基于BlockRAID的Parity生成方法、装置、计算机设备和存储介质,其中该方法包括:在写入过程中分配一个TLCSuperBlock用于用户数据的写入,并分配一个SLCParityBlock用于存储临时Parity;逐个条带写入用户数据和临时Parity;对于新分配的TLCSuperBlock,在每个条带写入数据之前先从SLCParityBlock中读取对应的临时Parity;重新依次逐个条带写入数据,在写入最后一组Block的同时将最终Parity写入最后一组TLCSuperBlock。本发明既可保持BlockRAID较强的数据保护能力,同时又能减少预留的Block数,以实现提升产品良率。以实现提升产品良率。以实现提升产品良率。


技术研发人员:李建 王猛 王孜顺 邱一霄
受保护的技术使用者:苏州忆联信息系统有限公司
技术研发日:2023.04.27
技术公布日:2023/7/7
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐