1.本技术涉及固态存储设备领域,尤其涉及一种读数据的方法、写数据的方法、恢复数据的方法及分区命名空间固态硬盘。
背景技术:2.zns(zoned namespace,分区命名空间)是从开放通道(open channel) ssd(solid state drives,固态硬盘)基础上发展而来的,是nvme(nvme, non-volatile memory express,非易失性高速传输总线协议)中新扩展的命令集。zns ssd(zoned namespace ssd,即分区命名空间固态硬盘)把存储空间划分成不同的区域(zone),采用区域(zone)作为设备访问接口,完成读、写以及创建(open)、关闭(close)、重置(reset)等系列指令。一个区域(zone) 在打开-重置(open-reset)之间的生命周期里,固定映射到1个或几个闪存块 (flashblock)上,这近乎于直接访问nand(闪存)进行读写操作,而不再依赖nvme io命令访问闪存。
3.在传统nvme访问模式下,写数据由ssd固件决定数据在闪存上的分布位置,而在区域写入(zone write)模型下,数据分布由host命令决定。
4.在当前企业级需求中,掉电保护是非常重要的要求,在收到用户的数据时,有部分数据需要缓存在内存中,直到内存中逻辑单元的块中的数据量凑满后才将逻辑单元的块中的数据写入闪存中。
5.如图1所示,逻辑单元1的块1(lun1 block1)、逻辑单元2的块1(lun2block1)和逻辑单元3的块1(lun 3 block1)均具有3个存储数据的页,也就是tlc(triple-levelcell,三层单元)介质,每一个页中可以存储16kb的数据。这3个页具有不同的存储优先级(例如:lowpage具有最高的存储优先级,midpage具有次之的存储优先级,upper page具有最低的存储优先级)。存储优先级最高的页先存储数据,待存储优先级最高的页存满数据后,存储优先级次之的页再存储数据,待存储优先级次之的页存满数据后,存储优先级最低的页再存储数据,待存储优先级最低的页的存满数据后,将逻辑单元的块中的数据写入闪存中。例如:逻辑单元1的块1(lun1 block1)中存储优先级最高和次之的页已经存满数据,存储优先级最低的页正在存储数据;逻辑单元2的块1(lun2 bl ock1)中存储优先级最高和次之的页已经存满数据,存储优先级最低的页即将存满数据;逻辑单元3的块1(lun3 block1)中存储优先级最高、次之和最低的页均已经存满数据,已经可以向闪存中写入逻辑单元3的块1中的数据。在传统的标准硬盘的情况下,硬盘内的固件会掌握数据在逻辑单元的块中的位置排布,会尽量紧凑地排布数据,例如:在每个逻辑单元中只打开一个块进行数据的存储。
6.当异常掉电时,逻辑单元的块中的每个页存储的数据均需要进行掉电保存。例如:一个ssd(solid state drives,固态硬盘)中有4个逻辑单元(lun),即使是如上述尽量紧凑地排布数据,掉电时最多也需要保存16kb*3page*4lun 的数据量。通常需要在掉电后的10ms内完成逻辑单元的块中的数据的保存,那么ssd需要具有在10ms内保存16kb*3page*4lun数据量的掉电电容。
7.然而,在zns的场景下,由于区域(zone)=块(block),同样的掉电电容仅能保存4个区域(zone)的数据,也就是仅有4个逻辑单元(lun),在此基础上,若用户需要1000个区域(zone),那么每个逻辑单元(lun)中就具有250 个块(block),数据保存量就会翻了250倍,掉电电容无法在有效的使用时间内完成对数据的保存。如图2所示,逻辑单元1(lun1)、逻辑单元2(lun2)、逻辑单元3(lun3)、逻辑单元4(lun4);其中,逻辑单元1(lun1)中具有块 1(block1)=区域1(zone1)、块2(block2)=区域5(zone5)
……
逻辑单元2 (lun2)中具有块1(block1)=区域2(zone2)、块2(block2)=区域6(zone6)
……
逻辑单元3(lun3)中具有块1(block1)=区域3(zone3)
……
逻辑单元4(lun4) 中具有块1(block1)=区域4(zone4)
……
8.在真实配置中,一般的zns ssd拥有64个逻辑单元(lun),每个逻辑单元 (lun)上需要16个块(block)/区域(zone),因此掉电电容无法在有效的使用时间内完成对数据的保存,无法完成掉电保存的能力。
9.因此,如何在掉电电容的有效使用时间内对zns ssd中的数据进行掉电保存,是目前本领域技术人员需要解决的技术问题。有效的
技术实现要素:10.本技术提供了一种读数据的方法、写数据的方法、恢复数据的方法及分区命名空间固态硬盘,以在掉电电容的有效使用时间内对zns ssd中的数据进行掉电保存。
11.为解决上述技术问题,本技术提供如下技术方案:
12.一种分区命名空间固态硬盘,其闪存包括:slc区域和tlc区域,slc区域的总写入量等于tlc区域总写入量;其中,slc区域的slc闪存块用于存储内存块中写满的页中的数据,以及存储异常掉电后内存块中未写满的页中的数据;并且,tlc区域的tlc闪存块用于存储slc闪存块中存储的可写满tlc闪存块的页的数据。
13.如上所述的分区命名空间固态硬盘,其中,优选的是,slc区域占闪存总空间的5.6%,tlc区域占闪存总空间的94.4%。
14.如上所述的分区命名空间固态硬盘,其中,优选的是,每个slc闪存块提供相对tlc闪存块1/3的可写入容量。
15.如上所述的分区命名空间固态硬盘,其中,优选的是,tlc闪存块中不同页中的数据不能写入slc闪存块的相同的页中,不同tlc闪存块中的数据可以写入相同slc闪存块。
16.如上所述的分区命名空间固态硬盘,其中,优选的是,其内存的内存块中的页具有指示写入数据顺序的优先级。
17.如上所述的分区命名空间固态硬盘,其中,优选的是,每个内存块具有3 个存储数据的页,每个slc闪存块中具有3个存储数据的页。
18.一种写数据的方法,包括如下步骤:响应于分区命名空间固态硬盘的内存块中页写满数据,将该页中的数据写入分区命名空间固态硬盘的slc闪存块的页中;响应于slc闪存块中缓存的数据可写满分区命名空间固态硬盘的tlc闪存块的页,将slc闪存块中缓存的数据刷写到tlc闪存块的页中;响应于slc 闪存块的页中的数据写至tlc闪存块的页中,释放slc闪存块的页;响应于slc 闪存块的所有页均被释放,擦除内存块。
19.如上所述的写数据的方法,其中,优选的是,还包括如下步骤:响应于接收到写命令,将写命令指示的数据写入内存块中;响应于将写命令指示的数据写入内存块中,向主机
返回写命令完成的指示。
20.一种读数据的方法,包括如下步骤:响应于接收到读命令,在分区命名空间固态硬盘的tlc闪存块中查找读命令指示的数据;若tlc闪存块中未写入读命令指数的数据,则不在分区命名空间固态硬盘的slc闪存块中查找数据,而在分区命名空间固态硬盘的内存块中查找读命令指示的数据;其中,slc闪存块是用于存储内存块中写满的页中的数据,以及存储异常掉电后内存块中未写满的页中的数据,并且tlc闪存块用于存储slc闪存块中存储的可写满tlc闪存块的页的数据。
21.一种恢复数据的方法,包括如下步骤:响应于异常掉电,将分区命名空间固态硬盘的内存块中未写满的页中的数据写入分区命名空间固态硬盘的slc 闪存块中;上电后,识别出有异常掉电,从分区命名空间固态硬盘的slc闪存块中将未写满的页中的数据加载至内存块的页中;其中,slc闪存块是用于存储内存块中写满的页中的数据,以及存储异常掉电后内存块中未写满的页中的数据,并且slc闪存块用于向分区命名空间固态硬盘tlc闪存块存储可写满tlc 闪存块的页的数据。
22.相对上述背景技术,本发明所提供读数据的方法、写数据的方法、恢复数据的方法及分区命名空间固态硬盘,由于在内存中缓存的数据,只要写满内存块中一页,均先将该页中的数据写入slc闪存块中,所以在内存中的数据写入tlc闪存块之前,已经在slc闪存块中进行了一次备份,那么在掉电的时候需要保存的数据量仅为内存块中未写满的页中的数据,因此本技术可以在掉电电容的有效使用时间内对zns ssd中的数据进行掉电保存。
附图说明
23.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
24.图1是现有技术中在逻辑单元的块中进行数据存储的示意图;
25.图2是现有技术中在zns场景下逻辑单元的块中进行数据存储的示意图;
26.图3是本技术实施例提供的写数据的方法的流程图;
27.图4是本技术实施例提供的zns ssd的示意图;
28.图5是本技术实施例提供的读数据的方法的流程图;
29.图6是本技术实施例提供的恢复数据的方法的流程图。
具体实施方式
30.下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本技术,而不能解释为对本技术的限制。
31.如图3所示,本技术提供了一种写数据的方法,包括如下步骤:
32.步骤s310、响应于接收到写命令,将写命令指示的数据写入zns ssd的内存块中;
33.在zns ssd(zoned namespace ssd,即分区命名空间固态硬盘)的闪存中配置有slc(single level cell,单层单元)区域和tlc(triple-levelcell, 闪存颗粒的三层存储
单元)区域。
34.由于slc区域具备很高的寿命,使用较少的闪存块,配置成为固定的slc 访问模式,可以等同于主存储空间的同等写入寿命。作为一个例子,假设zns ssd 的闪存中主力存储模型为3000次循环的寿命的tlc闪存块(tlc闪存块是tlc 区域的块(block)),若配置成slc模式,其可以有高达150000次循环寿命。设zns ssd的闪存需要的slc闪存块(slc闪存块是slc区域的块(block))的占比大小为x%,每个slc闪存块提供相对tlc闪存块1/3的可写入容量,并且由所有slc闪存块构成的slc区域的总写入量等于由所有tlc闪存块构成的tlc 区域总写入量,得出以下公式:(1-x)*3000=x*1/3*150000,并且求解得 x=5.6%,即zns ssd的闪存的总空间的5.6%被配置成slc区域,zns ssd的闪存的总空间的94.4%被配置成tlc区域,这样不仅可以满足全生命周期的数据既保存在slc区域,又保存在tlc区域。
35.另外,slc闪存块同tlc闪存块的数据映射方式为一一映射,tlc闪存块中不同页中的数据不能写入slc闪存块的相同的页中,不同tlc闪存块中的数据可以写入相同slc闪存块,在此基础上,还可以对slc区域和tlc闪存区域进行映射逻辑管理,等同于传统ftl(flash translation layer,即闪存转换层) 管理方式。
36.此外,每个slc闪存块中具有多个存储数据的页,并且slc闪存块的页的数量与zns ssd的内存中的内存块(内存块是内存中的块)的页的数量相同,例如:内存中的每个内存块具有3个存储数据的页,每个slc闪存块中也具有3 个存储数据的页。
37.如图4所示,逻辑单元1(lun1)、逻辑单元2(lun2)、逻辑单元3(lun3)、逻辑单元4(lun4)为zns ssd的内存中的逻辑单元,每个逻辑单元中具有多个内存块,例如:逻辑单元1(lun1)中具有内存块1(block1)=区域1(zone1)、内存块2(block2)=区域5(zone5)
……
逻辑单元2(lun2)中具有内存块1(block1) =区域2(zone2)、内存块2(block2)=区域6(zone6)
……
逻辑单元3(lun3) 中具有内存块1(block1)=区域3(zone3)
……
逻辑单元4(lun4)中具有内存块1(block1)=区域4(zone4)
……
38.响应于接收写命令,按照zns ssd的内存的逻辑单元的内存块中页的优先级向优先级较高的页中写入写命令指示的数据。作为一个例子,先向逻辑单元1 (lun1)的内存块1(block1)中具有最高的存储优先级的页(low page)中写入数据,待具有最高的存储优先级的页(low page)中写满数据后,然后向逻辑单元1(lun1)的内存块1(block1)中具有次之的存储优先级的页(mid page) 中写入数据,待具有次之的存储优先级的页(mid page)中写满数据后,再向逻辑单元1(lun1)的内存块1(block1)中具有最低的存储优先级的页(upperpage)中写入数据。
39.步骤s320、响应于将写命令指示的数据写入zns ssd的内存块中,向主机返回写命令完成的指示;
40.在zns ssd的内存中的内存块的相应页中写入写命令指令的数据后,向主机返回写命令完成的指示(completion without data),以表明向内存写入完成。
41.步骤s330、响应于zns ssd的内存块中页写满数据,将该页中的数据写入 zns ssd的slc闪存块的页中;
42.逻辑单元1(lun1)的内存块1(block1)中具有最高的存储优先级的页(lowpage)中写满了数据,那么将逻辑单元1(lun1)的内存块1(block1)中具有最高的存储优先级的页(low page)中的数据写入闪存的slc闪存块的页1(slcpage1)中,并且标记该数据已写入
slc闪存块的页中;逻辑单元1(lun1)的内存块1(block1)中具有次之的存储优先级的页(midpage)中写满了数据,那么将逻辑单元1(lun1)的内存块1(block1)中具有次之的存储优先级的页(midpage)中的数据写入闪存的slc闪存块的页2(slcpage2)中,并且标记该数据已写入slc闪存块的页中;而逻辑单元1(lun1)的内存块1(block1)中具有最低的存储优先级的页(upperpage)中未写满数据,那么逻辑单元1(lun1)的内存块1(block1)中具有最低的存储优先级的页(upperpage)中的数据就暂时不写入闪存的slc闪存块中,待逻辑单元1(lun1)的内存块1(block1)中具有最低的存储优先级的页(upperpage)中写满了数据,再向闪存的slc闪存块中写入数据。
43.步骤s340、响应于znsssd的slc闪存块中缓存的数据可以写满znsssd的tlc闪存块的页,将slc闪存块中缓存的数据刷写到tlc闪存块的页中;
44.闪存的slc闪存块的页1(slcpage1)中写满数据后,slc闪存块的页1(slcpage1)中的数据可以写满tlc闪存块的页,因此响应于slc闪存块的页1(slcpage1)中写满数据,将slc闪存块的页1(slcpage1)中的数据写入至tlc闪存块的页中;闪存的slc闪存块的页2(slcpage2)中写满数据后,slc闪存块的页2(slcpage2)中的数据可以写满tlc闪存块的页,因此响应于slc闪存块的页2(slcpage2)中写满数据,将slc闪存块的页2(slcpage2)中的数据写入至tlc闪存块的页中。
45.步骤s350、响应于znsssd的slc闪存块的页中的数据写至znsssd的tlc闪存块的页中,释放slc闪存块的页;
46.待闪存的slc闪存块的页1(slcpage1)中的数据写入tlc闪存块的页中后,释放slc闪存块的页1(slcpage1);待闪存的slc闪存块的页2(slcpage2)中的数据写入tlc闪存块的页中后,释放slc闪存块的页2(slcpage2);待闪存的slc闪存块的页3(slcpage3)中的数据写入tlc闪存块的页中后,释放slc闪存块的页3(slcpage3)。
47.步骤s360、响应于znsssd的slc闪存块的所有页均被释放,擦除znsssd的内存块;
48.当闪存的slc闪存块的页1(slcpage1)、页2(slcpage2)和页3(slcpage3)均被释放后,那么意味着写入内存的逻辑单元1(lun1)的内存块1(block1)中的数据均被写入至闪存,因此擦除内存的逻辑单元1(lun1)的内存块1(block1)中的数据。
49.如图5所示,本技术提供了一种读数据的方法,包括如下步骤:
50.步骤s510、响应于接收到读命令,在znsssd的tlc闪存块中查找读命令指示的数据;
51.接收到主机的读命令后,在znsssd的闪存的tlc闪存块中查找读命令指示的数据,若查找到读命令指示的数据,那么将该数据读出提供给主机,以响应读命令。
52.步骤s520、若znsssd的tlc闪存块中未写入读命令指数的数据,则在znsssd的内存块中查找读命令指示的数据;
53.若在znsssd的闪存的tlc闪存块中未查找到读命令指示的数据,则在znsssd的内存的内存块中查找读命令指示的数据,不需要在znsssd的闪存的slc闪存块中查找数据,也就是不需要去znsssd的闪存的slc闪存块中读数据。
54.如图6所示,本技术提供了一种恢复数据的方法,包括如下步骤:
55.步骤s610、响应于异常掉电,将znsssd的内存块中未写满的页中的数据写入zns
ssd的slc闪存块中;
56.发生异常掉电后,如图4所示,zns ssd的内存的逻辑单元1(lun1)的内存块1(block1)中具有最低的存储优先级的页(upper page)未写满数据,那么将逻辑单元1(lun1)的内存块1(block1)中具有最低的存储优先级的页 (upper page)中的数据写入闪存的slc闪存块的页3(slc page3)中。
57.步骤s620、上电后,识别出有异常掉电,从zns ssd的slc闪存块中将未写满的页中的数据加载至内存块的页中;
58.如图4所示,上电后,识别出有异常掉电,意味着在掉电时,内存的逻辑单元1(lun1)的内存块1(block1)中具有最低的存储优先级的页(upper page) 中未写满数据,那么在掉电后,会将内存块1(block1)中具有最低的存储优先级的页(upper page)中的数据写入闪存的slc闪存块中。
59.那么,在上电后,要将由内存块1(block1)中具有最低的存储优先级的页 (upper page)写入闪存的slc闪存块中的数据重新加载至内存块1(block1) 的页中以供访问。
60.由于在内存中缓存的数据,只要写满内存块中一页,均先将该页中的数据写入slc闪存块中,所以在内存中的数据写入tlc闪存块之前,已经在slc 闪存块中进行了一次备份,那么在掉电的时候需要保存的数据量仅为内存块中未写满的页中的数据,例如:在掉电的时候需要保存的数据量仅为原有的1/3 不到,因此本技术可以在掉电电容的有效使用时间内对zns ssd中的数据进行掉电保存。
61.对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
62.此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
技术特征:1.一种分区命名空间固态硬盘,其特征在于,其闪存包括:slc区域和tlc区域,slc区域的总写入量等于tlc区域总写入量;其中,slc区域的slc闪存块用于存储内存块中写满的页中的数据,以及存储异常掉电后内存块中未写满的页中的数据;并且,tlc区域的tlc闪存块用于存储slc闪存块中存储的可写满tlc闪存块的页的数据。2.根据权利要求1所述的分区命名空间固态硬盘,其特征在于,slc区域占闪存总空间的5.6%,tlc区域占闪存总空间的94.4%。3.根据权利要求2所述的分区命名空间固态硬盘,其特征在于,每个slc闪存块提供相对tlc闪存块1/3的可写入容量。4.根据权利要求1-3任一项所述的分区命名空间固态硬盘,其特征在于,tlc闪存块中不同页中的数据不能写入slc闪存块的相同的页中,不同tlc闪存块中的数据可以写入相同slc闪存块。5.根据权利要求1-3任一项所述的分区命名空间固态硬盘,其特征在于,其内存的内存块中的页具有指示写入数据顺序的优先级。6.根据权利要求1-3任一项所述的分区命名空间固态硬盘,其特征在于,每个内存块具有3个存储数据的页,每个slc闪存块中具有3个存储数据的页。7.一种写数据的方法,其特征在于,包括如下步骤:响应于分区命名空间固态硬盘的内存块中页写满数据,将该页中的数据写入分区命名空间固态硬盘的slc闪存块的页中;响应于slc闪存块中缓存的数据可写满分区命名空间固态硬盘的tlc闪存块的页,将slc闪存块中缓存的数据刷写到tlc闪存块的页中;响应于slc闪存块的页中的数据写至tlc闪存块的页中,释放slc闪存块的页;响应于slc闪存块的所有页均被释放,擦除内存块。8.根据权利要求7所述的写数据的方法,其特征在于,还包括如下步骤:响应于接收到写命令,将写命令指示的数据写入内存块中;响应于将写命令指示的数据写入内存块中,向主机返回写命令完成的指示。9.一种读数据的方法,其特征在于,包括如下步骤:响应于接收到读命令,在分区命名空间固态硬盘的tlc闪存块中查找读命令指示的数据;若tlc闪存块中未写入读命令指数的数据,则不在分区命名空间固态硬盘的slc闪存块中查找数据,而在分区命名空间固态硬盘的内存块中查找读命令指示的数据;其中,slc闪存块是用于存储内存块中写满的页中的数据,以及存储异常掉电后内存块中未写满的页中的数据,并且tlc闪存块用于存储slc闪存块中存储的可写满tlc闪存块的页的数据。10.一种恢复数据的方法,其特征在于,包括如下步骤:响应于异常掉电,将分区命名空间固态硬盘的内存块中未写满的页中的数据写入分区命名空间固态硬盘的slc闪存块中;上电后,识别出有异常掉电,从分区命名空间固态硬盘的slc闪存块中将未写满的页中
的数据加载至内存块的页中;其中,slc闪存块是用于存储内存块中写满的页中的数据,以及存储异常掉电后内存块中未写满的页中的数据,并且slc闪存块用于向分区命名空间固态硬盘tlc闪存块存储可写满tlc闪存块的页的数据。
技术总结本申请涉及固态存储设备领域,尤其涉及一种读数据的方法、写数据的方法、恢复数据的方法及分区命名空间固态硬盘,其闪存包括:SLC区域和TLC区域,SLC区域的总写入量等于TLC区域总写入量;其中,SLC区域的SLC闪存块用于存储内存块中写满的页中的数据,以及存储异常掉电后内存块中未写满的页中的数据;并且TLC区域的TLC闪存块用于存储SLC闪存块中存储的可写满TLC闪存块的页的数据。本申请可以在掉电电容的有效使用时间内对ZNSSSD中的数据进行掉电保存。电保存。电保存。
技术研发人员:张泰乐 袁戎 朱磊
受保护的技术使用者:北京忆恒创源科技股份有限公司
技术研发日:2022.07.26
技术公布日:2022/11/1