一种全闪存阵列垃圾回收减少写放大的方法与流程

文档序号:21079678发布日期:2020-06-12 16:24阅读:196来源:国知局
一种全闪存阵列垃圾回收减少写放大的方法与流程

本发明涉及闪存存储系统技术领域,更具体地说,涉及一种全闪存阵列垃圾回收减少写放大的方法。



背景技术:

随着成本降低和技术进步,闪存越来越多的被企业级数据中心作为存储介质使用,相比传统的磁盘介质,闪存的优势显而易见:速度快,耗电低,省空间。特别在速度方面,闪存具有压倒性的优势。

闪存是电子类介质,其处理数据的写入方式和传统的磁类介质(磁盘或者磁带)的覆盖写不同:新数据写入的区块,必须是空白区块,如果该区块存有旧数据,那么必须先对旧数据进行“擦除”(erase)。尤其是当写入的数据总量达到闪存提供的所有容量之后,再次写入更新时,就必然会产生“擦除”。

相比于常规的读取和写入操作,擦除有2个特点:

第一,擦除的速度比读写要慢,擦除时间可能是写入时间的10倍以上,基本达到ms级别;

第二,擦除的处理单位要比读写大,读写的处理单元是page,一般4kb大小;擦除的单元是block,多个page组成,一般不少于512kb。如果要写入4kb的数据到某个已存有4kb旧数据的区块,那首先需要擦除其周边512kb的区块空间。

这就是闪存垃圾回收的写放大

闪存写放大是闪存介质与生俱来的特性,无法避免,只能通过介质材料、算法、架构的有优化手段来控制闪存写放大到一定的范围内。

比如:over-provisioning方式,通过提供更多的颗粒数量,用于减缓整体闪存寿命的磨损,并实现更为灵活的预防性垃圾回收,缺点就是购买容量40tb的闪存,而实际的物理容量超过67tb,成本高,浪费多。

为此,提出一种全闪存阵列垃圾回收减少写放大的方法。



技术实现要素:

1.要解决的技术问题

针对现有技术中存在的问题,本发明的目的在于提供一种全闪存阵列垃圾回收减少写放大的方法,使用nvdimm来做写缓存,可以保证数据在写的过程中,服务器断电数据不会丢失,在服务上电之后,nvdimm的逻辑卷会将内存数据继续刷写到后端闪存中,保证了数据的安全完整。

2.技术方案

为解决上述问题,本发明采用如下的技术方案。

一种全闪存阵列垃圾回收减少写放大的方法,包括逻辑卷的写操作与逻辑卷的读操作;

所述逻辑卷的写操作包括以下步骤:

s1:当有写操作的时候,会先计算出数据object的哈希值和逻辑卷的vbn,即逻辑块号并记录;

s2:之后数据object会写入nvdimm的extent中,object会依次从extent的前段往后写,mpu指向下一个要写的object的位置;

s3:object的元数据objectrecord会依次从extent的后端往前写,mdown指向下一个要写的objectrecord的位置;

s4:当mdown减mup小于4kb+32b的时候,extent就因为已经写满,会启动一个后台线程;

s5:将extent16mb的数据直接刷写到对应位置的后端闪存上;

所述逻辑卷的读操作包括以下步骤:

s1:当有读操作的时候,会通过逻辑卷vbn,即逻辑块号,查询到vbn所在数据object上的哈希值;

s2:在通过哈希值,检索到元数据objectrecord;

s3:通过objectrecord中的pbn定位到nvdimm的object,读出数据。

进一步的,全闪存阵列的使用nvdimm内存,即non-volatiledualin-linememorymodule非易失性存储器,具备断电数据保存功能,作为闪存整列的写操作辅助模块,数据会以4kb为单位,每个4kb的数据被称作object,每个object都有一个32个字节的元数据objectrecord,记录了object的hash值,以及计算出的object在闪存中的存储的物理位置pbn,即物理块号,nvdimm会被划分成16mb大小的分块,每个分块被称作extent,每个extent都有自己的数据结构,有分为extentheader和extentpayload,extentheader记录extent的头信息4kb大小,extentpayload存储的就是object、objectrecord。

进一步的,mbackendindex表示object属于哪个后端闪存设备,mextentindex表示extent在后端闪存上的位置,mup表示object在extent中从前往后存储的下标位置,向上递增,mdown表示objectrecord在extent中从后往前存储的下标位置,向下递减,mdata中存储的object数据和objectrecord记录。

进一步的,后端闪存设备也被划分和extent相同大小的分块。

3.有益效果

相比于现有技术,本发明的优点在于:

本发明的目的在于提供一种全闪存阵列垃圾回收减少写放大的方法,1.使用nvdimm来做写缓存,可以保证数据在写的过程中,服务器断电数据不会丢失,在服务上电之后,nvdimm的逻辑卷会将内存数据继续刷写到后端闪存中,保证了数据的安全完整。

2.使用nvdimm作为闪存阵列的写操作辅助模块,可以提高写操作的性能,起到了缓存作用。

3.将nvdimm划分为大小相等的extent和闪存物理介质想对应,等nvdimm的extent写满之后,再将extent的数据刷写到闪存中,这样就将闪存的多个写小块聚合成一个写大块的操作,解决了闪存写放大问题。

附图说明

图1为本发明的逻辑卷写操作流程示意图;

图2为本发明的逻辑卷读操作流程示意图;

图3为本发明的extentpayload存储结构示意图;

图4为本发明的extent的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述;显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1:

请参阅图1与图2,一种全闪存阵列垃圾回收减少写放大的方法,包括逻辑卷的写操作与逻辑卷的读操作;

所述逻辑卷的写操作包括以下步骤:

s1:当有写操作的时候,会先计算出数据object的哈希值和逻辑卷的vbn,即逻辑块号并记录;

s2:之后数据object会写入nvdimm的extent中,object会依次从extent的前段往后写,mpu指向下一个要写的object的位置;

s3:object元数据objectrecord会依次从extent的后端往前写,mdown指向下一个要写的objectrecord的位置;

s4:当mdown减mup小于4kb+32b的时候,extent就因为已经写满,会启动一个后台线程;

s5:将extent16mb的数据直接刷写到对应位置的后端闪存上;

所述逻辑卷的读操作包括以下步骤:

s1:当有读操作的时候,会通过逻辑卷vbn,即逻辑块号,查询到vbn所在数据object上的哈希值;

s2:在通过哈希值,检索到元数据objectrecord;

s3:通过objectrecord中的pbn定位到nvdimm的object,读出数据。

请参阅图3,全闪存阵列的使用nvdimm内存,即non-volatiledualin-linememorymodule非易失性存储器,具备断电数据保存功能,作为闪存整列的写操作辅助模块,数据会以4kb为单位,每个4kb的数据被称作object,每个object都有一个32个字节的元数据objectrecord,记录了object的hash值,以及计算出的object在闪存中的存储的物理位置pbn,即物理块号,nvdimm会被划分成16mb大小的分块,每个分块被称作extent,每个extent都有自己的数据结构,有分为extentheader和extentpayload,extentheader记录extent的头信息4kb大小,extentpayload存储的就是object、objectrecord,

请参阅图3,mbackendindex表示object属于哪个后端闪存设备,mextentindex表示extent在后端闪存上的位置,mup表示object在extent中从前往后存储的下标位置,向上递增,mdown表示objectrecord在extent中从后往前存储的下标位置,向下递减,mdata中存储的object数据和objectrecord记录,后端闪存设备也被划分和extent相同大小的分块,具体结构请参阅图4。

本发明的目的在于提供一种全闪存阵列垃圾回收减少写放大的方法,1.使用nvdimm来做写缓存,可以保证数据在写的过程中,服务器断电数据不会丢失,在服务上电之后,nvdimm的逻辑卷会将内存数据继续刷写到后端闪存中,保证了数据的安全完整。

2.使用nvdimm作为闪存阵列的写操作辅助模块,可以提高写操作的性能,起到了缓存作用。

3.将nvdimm划分为大小相等的extent和闪存物理介质想对应,等nvdimm的extent写满之后,再将extent的数据刷写到闪存中,这样就将闪存的多个写小块聚合成一个写大块的操作,解决了闪存写放大问题。

尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1