固态硬盘BlockRAID写入模型优化方法、装置和计算机设备与流程
未命名
08-14
阅读:137
评论:0
固态硬盘block raid写入模型优化方法、装置和计算机设备
技术领域
1.本发明涉及固态硬盘技术领域,特别是涉及一种固态硬盘block raid写入模型优化方法、装置、计算机设备和存储介质。
背景技术:
2.ssd(固态硬盘)已经被广泛应用于各种场合,目前在pc市场,已经逐步替代传统的hdd,从可靠性和性能方面为用户提供较好的体验。
3.由于nand介质的特性,其内数据存在损坏的风险,为了保障数据的可靠性,在ssd内部一般会组建raid来进行数据保护。根据ssd内部的物理组成,raid可以组建page raid/block raid/die raid
…
不同类型的raid保护强度不一样,分别用来对抗不同的nand失效场景。其中,block raid是较为广泛使用的模型之一,其可以容忍单个物理块的损坏,具备较强的数据保护能力,同时op(overprovision)需求/成本适中。
4.然而,目前典型的n+1block raid中,n一般取值较大,如31。而一般ssd内部die的数量有限(如4/8个),则一个raid分组在单die下需要包含多个物理块。在ssd内部,当写入数据时,需要分配空白的物理块进行写入,为保障其可获得性,系统运行时就需要预留对应的空白物理块。由于raid的写入策略,单次分配需要多组物理块,故而导致预留的保留空白物理块数量变大,进而导致能够容忍的保留区-坏块数量下降,影响ssd良率。
技术实现要素:
5.基于此,有必要针对上述技术问题,提供一种固态硬盘block raid写入模型优化方法、装置、计算机设备和存储介质。
6.一种固态硬盘block raid写入模型优化方法,所述方法包括:
7.对于多组物理块组成raid group的场景中,每次只分配一组物理块进行数据写入;
8.在数据写入过程中判断当前写入的是否为raid group内最后一组物理块;
9.若不是raid group内最后一组物理块,则在数据写入过程中不生成parity;
10.若是raid group内最后一组物理块,则在对应的raid条带写入前,读取条带内其他分组上相应的数据初始化parity;
11.对于所述raid group内最后一组物理块,在对应的raid条带写入时,实时计算parity并在条带写入结束后写入到nand。
12.在其中一个实施例中,所述在数据写入过程中判断当前写入的是否为raid group内最后一组物理块的步骤还包括:
13.如果为raid group内最后一组物理块则标记对应标识为1,否则标记对应标识为0。
14.在其中一个实施例中,在所述如果为raid group内最后一组物理块则标记对应标识为1,否则标记对应标识为0的步骤之后还包括:
15.判断物理块对应标识是否为1,如果是则继续判断是否为当前物理块内对应条带第一次写入;
16.如果是第一次写入,则读取条带中其他物理块内的数据并再进行异或后写入raid parity buffer中。
17.在其中一个实施例中,在所述继续判断是否为当前物理块内对应条带第一次写入的步骤之后还包括:
18.如果不是第一次写入,则将当前待写入的数据与raid paritybuffer中的数据进行异或并回写到raid parity buffer中。
19.一种固态硬盘block raid写入模型优化装置,所述装置包括:
20.分配模块,所述分配模块用于对于多组物理块组成raid group的场景中,每次只分配一组物理块进行数据写入;
21.第一判断模块,所述第一判断模块用于在数据写入过程中判断当前写入的是否为raid group内最后一组物理块;
22.写入模块,所述写入模块用于若不是raid group内最后一组物理块,则在数据写入过程中不生成parity;
23.初始化模块,所述初始化模块用于若是raid group内最后一组物理块,则在对应的raid条带写入前,读取条带内其他分组上相应的数据初始化parity;
24.计算模块,所述计算模块用于对于所述raid group内最后一组物理块,在对应的raid条带写入时,实时计算parity并在条带写入结束后写入到nand。
25.在其中一个实施例中,所述第一判断模块还用于:
26.如果为raid group内最后一组物理块则标记对应标识为1,否则标记对应标识为0。
27.在其中一个实施例中,所述装置还包括第二判断模块,所述第二判断模块用于:
28.判断物理块对应标识是否为1,如果是则继续判断是否为当前物理块内对应条带第一次写入;
29.如果是第一次写入,则读取条带中其他物理块内的数据并再进行异或后写入raid parity buffer中。
30.在其中一个实施例中,所述第二判断模块还用于:
31.如果不是第一次写入,则将当前待写入的数据与raid paritybuffer中的数据进行异或并回写到raid parity buffer中。
32.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。
33.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。
34.上述固态硬盘block raid写入模型优化方法、装置、计算机设备和存储介质,对于多组物理块组成raid group的场景,每次只分配一组物理块进行数据写入;对于该raid group内非最后一组物理块,写入过程中不生成parity;对于该raid group内最后一组物理块,在对应的raid条带写入前,读取条带内其他分组上相应的数据初始化parity;对于该raid group内最后一组物理块,在对应的raid条带写入时,实时计算parity并在条带结束
后写入到nand。本发明在保障block rad保护能力的基础上,减少了数据写入时系统保留物理块的需求,提升了坏块容忍度以及产品良率。
附图说明
35.图1为现有ssd block raid写入模型的示意图;
36.图2为现有ssd内部物理块的分区示意图;
37.图3为一个实施例中固态硬盘block raid写入模型优化方法的流程示意图;
38.图4为一个实施例中优化的ssd block raid写入模型的示意图;
39.图5为另一个实施例中固态硬盘block raid写入模型优化方法的流程示意图;
40.图6为一个实施例中固态硬盘block raid写入模型优化装置的结构框图;
41.图7为另一个实施例中固态硬盘block raid写入模型优化装置的结构框图;
42.图8为一个实施例中计算机设备的内部结构图。
具体实施方式
43.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
44.如图1所示的现有ssd block raid写入模型的示意图,为便于说明,以4个die,block raid为7+1(一个raid stripe内有7笔用户数据以及1笔parity数据)进行说明如下:
45.一个raid group(具有相关性的物理块)内包含2组物理块,每个die各两个物理块,为便于说明,记为block x/y。raid group内各个物理块相同的page组成一个raid stripe(条带)。写入时,依次为写入raid stripe 0各个page,然后是raid stripe 1各个page,以此类推。以写入stripe 0为例,数据依次写入data_0_0/data_0_1
…
data_0_6,且在写入过程中实时生成parity数据(典型地以xor算法生成);用户数据写入完成后,则将parity_0写入到die 3blocky page 0位置。
46.在此过程中,需要优先完成raid stripe 0的生成与parity写入,故而需要完成raid group的交错写入(blockx/y)。为保障系统中总是有可用的空白物理块,则在运行时刻需要保留1到多份raid group物理块,用于数据写入。而ssd中可用的物理块是有限的,需要保留的空白物理块越多,则占用的op越大,进而能够承受的坏块越少,从而使得在ssd生产时,需要加严坏块阈值的管控,降低了良率;而对于运行时刻坏块容忍度降低,也会使得ssd过早地因为坏块增加而不能正常使用,影响力ssd寿命。
47.基于此,本方案提出一种固态硬盘block raid写入模型优化方法,旨在可以保持物理块分配时仅需要单组,从而有效降低运行时刻保留区-空白块的阈值。
48.如图2所示的ssd内部物理块的分区示意图,包括:系统数据区,存放ssd系统管理数据,如固件/映射表/元数据/坏块表等;用户数据区,存放用户数据;保留区-空白物理块,用来分配写入用户数据或者垃圾回收释放可用物理块;保留区-坏块,出厂或者运行时刻产生的坏物理块,需要隔离出来,不能用作数据写入。
49.在运行时刻,系统数据区会被系统数据占用,坏块区无法使用。而当满盘写入时用户数据区也会处于满载状态,此时如果主机新写入数据,则必须从保留区-空白物理块中分
配空白物理块进行新数据写入。而当用户数据区部分数据无效后,则可以使用保留区-空白物理块进行垃圾回收,释放用户数据区的无效数据占用的物理空间。
50.在一个实施例中,如图3所示,提供了一种固态硬盘block raid写入模型优化方法,该方法包括:
51.步骤302,对于多组物理块组成raid group的场景中,每次只分配一组物理块进行数据写入;
52.步骤304,在数据写入过程中判断当前写入的是否为raid group内最后一组物理块;
53.步骤306,若不是raid group内最后一组物理块,则在数据写入过程中不生成parity;
54.步骤308,若是raid group内最后一组物理块,则在对应的raid条带写入前,读取条带内其他分组上相应的数据初始化parity;
55.步骤310,对于所述raid group内最后一组物理块,在对应的raid条带写入时,实时计算parity并在条带写入结束后写入到nand。
56.在本实施例中,提供了一种固态硬盘block raid写入模型优化方法,具体地,可参考图4所示的优化的ssd block raid写入模型,为便于说明,仍然以4个die组成7+1block raid为例:
57.当写入数据需要分配空白物理块时,则首次只分配一组空白物理块(block x)。用户数据依次写入各个die的blockx的各个物理页。在此过程中,不需要生成parity数据,上述过程则为stage 1所示。
58.接着,当block x写满后,再次只分配一组空白物理块(blocky)。识别到blocky为当前raid group的最后一组空白物理块,则在每个条带写入前,读取该条带之前物理块中数据,进行xor生成parity数据。
59.然后,如stage 2所示,依次读取blockx中die 0-3的page 0用户数据,并进行xor,将结果存入stripe 0paritybuffer。
60.再然后,如stage 3所示,依次将待写入的用户数据写入data_0_4/data_0_5/data_0_6位置,且在写入过程中,将对应数据与stripe 0parity buffer中数据进行xor,并将结果存入paritybuffer。
61.最后,完成stripe 0所有用户数据写入后,将stripe 0parity buffer数据写入die 3blockypage 0位置:parity_0,循环上述步骤完成其他条带数据的写入。
62.在本实施例中,对于多组物理块组成raid group的场景,每次只分配一组物理块进行数据写入;对于该raid group内非最后一组物理块,写入过程中不生成parity;对于该raid group内最后一组物理块,在对应的raid条带写入前,读取条带内其他分组上相应的数据初始化parity;对于该raid group内最后一组物理块,在对应的raid条带写入时,实时计算parity并在条带结束后写入到nand。本方案在保障block rad保护能力的基础上,减少了数据写入时系统保留物理块的需求,提升了坏块容忍度以及产品良率。
63.在一个实施例中,提供了一种固态硬盘block raid写入模型优化方法,该方法中在数据写入过程中判断当前写入的是否为raid group内最后一组物理块的步骤还包括:
64.如果为raid group内最后一组物理块则标记对应标识为1,否则标记对应标识为
0;
65.判断物理块对应标识是否为1,如果是则继续判断是否为当前物理块内对应条带第一次写入;
66.如果是第一次写入,则读取条带中其他物理块内的数据并再进行异或后写入raid parity buffer中;
67.如果不是第一次写入,则将当前待写入的数据与raid paritybuffer中的数据进行异或并回写到raid parity buffer中。
68.在本实施例中,提供了一种固态硬盘block raid写入模型优化方法,参考图5所示,其具体的执行步骤如下:
69.步骤5.1、ssd写入数据。
70.步骤5.2、判断是否需要分配物理块?
71.如是,继续步骤5.3;
72.如否,跳转步骤5.7。
73.步骤5.3、分配一组空白物理块。
74.步骤5.4、判断是否为当前raid group最后一组物理块?
75.如是,继续步骤5.5;
76.如否,跳转步骤5.6。
77.步骤5.5、标记raid_group_last_block为1,跳转步骤5.7。
78.步骤5.6、标记raid_group_last_block为0。
79.步骤5.7、判断raid_group_last_block是否为1?
80.如是,继续步骤5.8;
81.如否,跳转步骤5.11。
82.步骤5.8、是否为当前物理块内对应条带第一次写入(stripe x)?
83.如是,继续步骤5.9;
84.如否,跳转步骤5.10。
85.步骤5.9、读取stripe x其他物理块内的数据,并xor后写入raid parity buffer。
86.步骤5.10、将当前待写入的数据与paritybuffer中的数据进行xor,并回写到parity buffer。
87.步骤5.11、将用户数据写入到nand。
88.步骤5.12、判断是否为该条带内最后一笔用户数据?
89.如是,继续步骤5.13;
90.如否,跳转步骤5.1。
91.步骤5.13、将parity数据写入到nand,跳转步骤5.1。
92.在本实施例中,通过优化block raid的写入模型,可以保持物理块分配时仅需要单组,从而有效降低运行时刻保留区-空白块的阈值,进而改善了对保留区-坏块数量的容忍度,提升了ssd良率。
93.应该理解的是,虽然图1-图5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-图5中的至
少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
94.在一个实施例中,如图6所示,提供了一种固态硬盘block raid写入模型优化装置600,该装置包括:
95.分配模块601,所述分配模块用于对于多组物理块组成raid group的场景中,每次只分配一组物理块进行数据写入;
96.第一判断模块602,所述第一判断模块用于在数据写入过程中判断当前写入的是否为raid group内最后一组物理块;
97.写入模块603,所述写入模块用于若不是raid group内最后一组物理块,则在数据写入过程中不生成parity;
98.初始化模块604,所述初始化模块用于若是raid group内最后一组物理块,则在对应的raid条带写入前,读取条带内其他分组上相应的数据初始化parity;
99.计算模块605,所述计算模块用于对于所述raid group内最后一组物理块,在对应的raid条带写入时,实时计算parity并在条带写入结束后写入到nand。
100.在一个实施例中,第一判断模块602还用于:
101.如果为raid group内最后一组物理块则标记对应标识为1,否则标记对应标识为0。
102.在一个实施例中,如图7所示,提供了一种固态硬盘block raid写入模型优化装置600,该装置还包括第二判断模块606,所述第二判断模块用于:
103.判断物理块对应标识是否为1,如果是则继续判断是否为当前物理块内对应条带第一次写入;
104.如果是第一次写入,则读取条带中其他物理块内的数据并再进行异或后写入raid parity buffer中。
105.在一个实施例中,第二判断模块606还用于:
106.如果不是第一次写入,则将当前待写入的数据与raid paritybuffer中的数据进行异或并回写到raid parity buffer中。
107.关于固态硬盘block raid写入模型优化装置的具体限定可以参见上文中对于固态硬盘block raid写入模型优化方法的限定,在此不再赘述。
108.在一个实施例中,提供了一种计算机设备,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种固态硬盘block raid写入模型优化方法。
109.本领域技术人员可以理解,图8中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备
可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
110.在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。
111.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。
112.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一种非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
113.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
114.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
技术特征:
1.一种固态硬盘blockraid写入模型优化方法,所述方法包括:对于多组物理块组成raidgroup的场景中,每次只分配一组物理块进行数据写入;在数据写入过程中判断当前写入的是否为raidgroup内最后一组物理块;若不是raidgroup内最后一组物理块,则在数据写入过程中不生成parity;若是raidgroup内最后一组物理块,则在对应的raid条带写入前,读取条带内其他分组上相应的数据初始化parity;对于所述raidgroup内最后一组物理块,在对应的raid条带写入时,实时计算parity并在条带写入结束后写入到nand。2.根据权利要求1所述的固态硬盘blockraid写入模型优化方法,其特征在于,所述在数据写入过程中判断当前写入的是否为raidgroup内最后一组物理块的步骤还包括:如果为raidgroup内最后一组物理块则标记对应标识为1,否则标记对应标识为0。3.根据权利要求2所述的固态硬盘blockraid写入模型优化方法,其特征在于,在所述如果为raidgroup内最后一组物理块则标记对应标识为1,否则标记对应标识为0的步骤之后还包括:判断物理块对应标识是否为1,如果是则继续判断是否为当前物理块内对应条带第一次写入;如果是第一次写入,则读取条带中其他物理块内的数据并再进行异或后写入raidparitybuffer中。4.根据权利要求3所述的固态硬盘blockraid写入模型优化方法,其特征在于,在所述继续判断是否为当前物理块内对应条带第一次写入的步骤之后还包括:如果不是第一次写入,则将当前待写入的数据与raidparitybuffer中的数据进行异或并回写到raidparitybuffer中。5.一种固态硬盘blockraid写入模型优化装置,其特征在于,所述装置包括:分配模块,所述分配模块用于对于多组物理块组成raidgroup的场景中,每次只分配一组物理块进行数据写入;第一判断模块,所述第一判断模块用于在数据写入过程中判断当前写入的是否为raidgroup内最后一组物理块;写入模块,所述写入模块用于若不是raidgroup内最后一组物理块,则在数据写入过程中不生成parity;初始化模块,所述初始化模块用于若是raidgroup内最后一组物理块,则在对应的raid条带写入前,读取条带内其他分组上相应的数据初始化parity;计算模块,所述计算模块用于对于所述raidgroup内最后一组物理块,在对应的raid条带写入时,实时计算parity并在条带写入结束后写入到nand。6.根据权利要求5所述的固态硬盘blockraid写入模型优化装置,其特征在于,所述第一判断模块还用于:如果为raidgroup内最后一组物理块则标记对应标识为1,否则标记对应标识为0。7.根据权利要求6所述的固态硬盘blockraid写入模型优化装置,其特征在于,所述装置还包括第二判断模块,所述第二判断模块用于:判断物理块对应标识是否为1,如果是则继续判断是否为当前物理块内对应条带第一
次写入;如果是第一次写入,则读取条带中其他物理块内的数据并再进行异或后写入raidparitybuffer中。8.根据权利要求7所述的固态硬盘blockraid写入模型优化装置,其特征在于,所述第二判断模块还用于:如果不是第一次写入,则将当前待写入的数据与raidparitybuffer中的数据进行异或并回写到raidparitybuffer中。9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4中任一项所述方法的步骤。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的方法的步骤。
技术总结
本申请涉及一种固态硬盘BlockRAID写入模型优化方法、装置、计算机设备和存储介质,其中该方法包括:对于多组物理块组成RAIDGroup的场景中,每次只分配一组物理块进行数据写入;在数据写入过程中判断当前写入的是否为RAIDGroup内最后一组物理块;若不是RAIDGroup内最后一组物理块,则在数据写入过程中不生成Parity;若是RAIDGroup内最后一组物理块,则在对应的RAID条带写入前,读取条带内其他分组上相应的数据初始化Parity;对于所述RAIDGroup内最后一组物理块,在对应的RAID条带写入时,实时计算Parity并在条带写入结束后写入到NAND。本发明减少了数据写入时系统保留物理块的需求,提升了坏块容忍度以及产品良率。提升了坏块容忍度以及产品良率。提升了坏块容忍度以及产品良率。
技术研发人员:王猛 徐伟华 李建 罗宗扬
受保护的技术使用者:苏州忆联信息系统有限公司
技术研发日:2023.05.31
技术公布日:2023/8/13
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
