一种数据存储的方法和设备与流程

文档序号:24638836发布日期:2021-04-09 20:50阅读:61来源:国知局
一种数据存储的方法和设备与流程

本领域涉及计算机领域,并且更具体地涉及一种数据存储的方法和设备。



背景技术:

闪存存储系统使用闪存盘作为后端存储设备,闪存盘的特点是写入前要进行擦除,同一块物理介质擦除次数有限,为了提高可写数据量,闪存盘按照内部介质擦除写入单元的粒度重新映射数据和全盘介质写次数均衡,其特点是从外部写入数据大块一次性写入可以降低或避免内部垃圾回收产生的数据迁移,从而降低写放大和提高闪存寿命。在使用闪存盘的闪存存储系统中,将闪存盘创建raid、存储池和逻辑卷供上层或san客户端使用,为了降低数据写入时对介质的写放大,通过逻辑地址lba到物理地址pba的二次映射,实现数据大块顺序写入。存在的问题是,同一个存储池不管应用层是大块顺序写入还是随机小块写入,都对数据重新进行lba到pba的二次映射,写入到新的地址上,对数据进行lba到pba的映射会带来额外的开销,影响性能和写放大。



技术实现要素:

有鉴于此,本发明实施例的目的在于提出一种数据存储的方法和设备,通过使用本发明的技术方案,能够避免lba到pba的重新映射,降低了元数据处理开销,降低元数据映射更新带来的写放大以及提高性能。

基于上述目的,本发明的实施例的一个方面提供了一种数据存储的方法,包括以下步骤:

响应于接收到写入数据的指令,记录每个逻辑卷写入数据的信息并更新设定区块(同一个逻辑卷内固定大小的lba范围)的脏数据量;

响应于将脏数据刷写到存储池中,基于设定区块的脏数据量计算本次刷写的总的脏数据量;

响应于总的脏数据量大于预设阈值,判断预设区块对应的lba映射到pba中的比例是否大于阈值比例并判断是否映射到连续的pba地址范围;

响应于预设区块对应的lba映射到pba中的比例大于阈值比例且映射到连续的pba地址范围,将写入数据写入到已映射的pba中。

根据本发明的一个实施例,还包括:

响应于预设区块对应的lba映射到pba中的比例不大于阈值比例或未映射到连续的pba地址范围,将写入数据写入到新分配的pba中并记录lba到pba的映射信息。

根据本发明的一个实施例,判断是否映射到连续的pba地址范围包括:

按照设定区块大小统计所有已映射pba的最小值和最大值;

将最大值与最小值的差与设定的阈值进行比较;

响应于最大值与最小值的差小于设定的阈值,判断映射到连续的pba地址范围。

根据本发明的一个实施例,写入数据的信息包括卷id和lba范围。

根据本发明的一个实施例,响应于接收到写入数据的指令,记录每个逻辑卷写入数据的信息并更新设定区块的脏数据量包括:

将写入数据中没有缓存的数据的数据块或者写入数据已缓存但已刷写的数据块的数量作为新增缓存的数量值加到设定区块的脏数据量中。

本发明的实施例的另一个方面,还提供了一种数据存储的设备,设备包括:

记录模块,记录模块配置为响应于接收到写入数据的指令,记录每个逻辑卷写入数据的信息并更新设定区块的脏数据量;

计算模块,计算模块配置为响应于将脏数据刷写到存储池中,基于设定区块的脏数据量计算本次刷写的总的脏数据量;

判断模块,判断模块配置为响应于总的脏数据量大于预设阈值,判断预设区块对应的lba映射到pba中的比例是否大于阈值比例并判断是否映射到连续的pba地址范围;

写入模块,写入模块配置为响应于预设区块对应的lba映射到pba中的比例大于阈值比例且映射到连续的pba地址范围,将写入数据写入到已映射的pba中。

根据本发明的一个实施例,还包括分配模块,分配模块配置为:

响应于预设区块对应的lba映射到pba中的比例不大于阈值比例或未映射到连续的pba地址范围,将写入数据写入到新分配的pba中并记录lba到pba的映射信息。

根据本发明的一个实施例,判断模块还配置为:

按照设定区块大小统计所有已映射pba的最小值和最大值;

将最大值与最小值的差与设定的阈值进行比较;

响应于最大值与最小值的差小于设定的阈值,判断映射到连续的pba地址范围。

根据本发明的一个实施例,写入数据的信息包括卷id和lba范围。

根据本发明的一个实施例,记录模块还配置为:

将写入数据中没有缓存的数据的数据块或者写入数据已缓存但已刷写的数据块的数量作为新增缓存的数量值加到设定区块的脏数据量中。

本发明具有以下有益技术效果:本发明实施例提供的数据存储的方法,通过响应于接收到写入数据的指令,记录每个逻辑卷写入数据的信息并更新设定区块的脏数据量;响应于将脏数据刷写到存储池中,基于设定区块的脏数据量计算本次刷写的总的脏数据量;响应于总的脏数据量大于预设阈值,判断预设区块对应的lba映射到pba中的比例是否大于阈值比例并判断是否映射到连续的pba地址范围;响应于预设区块对应的lba映射到pba中的比例大于阈值比例且映射到连续的pba地址范围,将写入数据写入到已映射的pba中的技术方案,能够避免lba到pba的重新映射,降低了元数据处理开销,降低元数据映射更新带来的写放大以及提高性能。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。

图1为根据本发明一个实施例的数据存储的方法的示意性流程图;

图2为根据本发明一个实施例的数据存储的设备的示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。

基于上述目的,本发明的实施例的第一个方面,提出了一种数据存储的方法的一个实施例。图1示出的是该方法的示意性流程图。

如图1中所示,该方法可以包括以下步骤:

s1响应于接收到写入数据的指令,记录每个逻辑卷写入数据的信息并更新设定区块的脏数据量,接收到写入数据,记录数据对应的卷id、lba范围,并更新对应的设定区块的脏数据量,方法为对于新写入的数据,判断其lba范围内在缓存中哪些lba已缓存且未刷写的数据块(一般扇区为单位),将没有缓存数据的数据块或者写入数据已缓存但已刷写的数据块的数量作为新增缓存的数量值加到该设定区块的脏数据量中,当数据刷写到存储池上完成后从脏数据量中减去相应数据块数量;

s2响应于将脏数据刷写到存储池中,基于设定区块的脏数据量计算本次刷写的总的脏数据量,然后按照设定区块的粒度范围将脏数据写入存储池,并提供本次刷写设定区块的总的脏数据量,刷写脏数据时对每个要刷写的逻辑卷按照设定区块的范围写入到存储池,每次写入大小小于等于设定区块的大小,每次写入时除了提供数据、卷id、lba范围外,还包含一个总脏数据量flushdirtycount,flushdirtycount是该设定区块本次刷写前的总的脏数据量,表明本轮至少要刷写的数据量;

s3响应于总的脏数据量大于预设阈值,判断预设区块对应的lba映射到pba中的比例是否大于阈值比例并判断是否映射到连续的pba地址范围,存储池在处理每次写入时,需要判断总的脏数据量是否大于预设阈值,若大于设定阈值,则需要判断该设定区块对应的lba存在映射到pba中的比例是否大于阈值比例以及判断是否映射到连续的pba地址范围;

s4响应于预设区块对应的lba映射到pba中的比例大于阈值比例且映射到连续的pba地址范围,将写入数据写入到已映射的pba中,如果同时满足上述两个条件,则直接将写入数据写入到已映射的pba中,如果未满足上述条件中的一个或两个,则需要将写入数据写入到新分配的pba中并记录lba到pba的映射信息。

通过本发明的技术方案,能够避免lba到pba的重新映射,降低了元数据处理开销,降低元数据映射更新带来的写放大以及提高性能。

在本发明的一个优选实施例中,还包括:

响应于预设区块对应的lba映射到pba中的比例不大于阈值比例或未映射到连续的pba地址范围,将写入数据写入到新分配的pba中并记录lba到pba的映射信息。如果未满足上述条件中的一个或两个,则需要将写入数据写入到新分配的pba中并记录lba到pba的映射信息。

在本发明的一个优选实施例中,判断是否映射到连续的pba地址范围包括:

按照设定区块大小统计所有已映射pba的最小值和最大值;

将最大值与最小值的差与设定的阈值进行比较;

响应于最大值与最小值的差小于设定的阈值,判断映射到连续的pba地址范围。按照设定区块的大小进行对齐,然后统计已映射pba的最小值和最大值,若最大值减去最小值小于设定的阈值则判断为连续。

在本发明的一个优选实施例中,写入数据的信息包括卷id和lba范围。

在本发明的一个优选实施例中,响应于接收到写入数据的指令,记录每个逻辑卷写入数据的信息并更新设定区块的脏数据量包括:

将写入数据中没有缓存的数据的数据块或者写入数据已缓存但已刷写的数据块的数量作为新增缓存的数量值加到设定区块的脏数据量中。对于新写入的数据,判断其lba范围内在缓存中哪些lba已缓存且未刷写的数据块(一般扇区为单位),将没有缓存数据或者已缓存但已刷写的数据块的数量作为新增缓存的数量值加到该设定区块的脏数据量中,当数据刷写到存储池上完成后从脏数据量中减去相应数据块数量。

通过本发明的技术方案,能够避免lba到pba的重新映射,降低了元数据处理开销,降低元数据映射更新带来的写放大以及提高性能。

需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,上述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中存储介质可为磁碟、光盘、只读存储器(read-onlymemory,rom)或随机存取存储器(randomaccessmemory,ram)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。

此外,根据本发明实施例公开的方法还可以被实现为由cpu执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被cpu执行时,执行本发明实施例公开的方法中限定的上述功能。

基于上述目的,本发明的实施例的第二个方面,提出了一种数据存储的设备,如图2所示,设备200包括:

记录模块,记录模块配置为响应于接收到写入数据的指令,记录每个逻辑卷写入数据的信息并更新设定区块的脏数据量;

计算模块,计算模块配置为响应于将脏数据刷写到存储池中,基于设定区块的脏数据量计算本次刷写的总的脏数据量;

判断模块,判断模块配置为响应于总的脏数据量大于预设阈值,判断预设区块对应的lba映射到pba中的比例是否大于阈值比例并判断是否映射到连续的pba地址范围;

写入模块,写入模块配置为响应于预设区块对应的lba映射到pba中的比例大于阈值比例且映射到连续的pba地址范围,将写入数据写入到已映射的pba中。

在本发明的一个优选实施例中,还包括分配模块,分配模块配置为:

响应于预设区块对应的lba映射到pba中的比例不大于阈值比例或未映射到连续的pba地址范围,将写入数据写入到新分配的pba中并记录lba到pba的映射信息。

在本发明的一个优选实施例中,判断模块还配置为:

按照设定区块大小统计所有已映射pba的最小值和最大值;

将最大值与最小值的差与设定的阈值进行比较;

响应于最大值与最小值的差小于设定的阈值,判断映射到连续的pba地址范围。

在本发明的一个优选实施例中,写入数据的信息包括卷id和lba范围。

在本发明的一个优选实施例中,记录模块还配置为:

将写入数据中没有缓存的数据的数据块或者写入数据已缓存但已刷写的数据块的数量作为新增缓存的数量值加到设定区块的脏数据量中。

上述实施例,特别是任何“优选”实施例是实现的可能示例,并且仅为了清楚地理解本发明的原理而提出。可以在不脱离本文所描述的技术的精神和原理的情况下对上述实施例进行许多变化和修改。所有修改旨在被包括在本公开的范围内并且由所附权利要求保护。

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