掌桥专利:专业的专利平台
掌桥专利
首页

一种双存储池数据淘汰方法、装置、设备

文献发布时间:2023-06-19 13:46:35


一种双存储池数据淘汰方法、装置、设备

技术领域

本发明涉及分布式存储系统技术领域,具体涉及一种双存储池数据淘汰方法、装置、设备。

背景技术

布式存储系统中,数据保存有副本和纠删两种策略,对于小块数据,副本模式下数据存储速度块,读操作只需要选取一个副本同步读取,但是由于数据是复制保存的,造成了空间浪费;纠删模式由于将写入数据按纠删条带切分并计算校验数据块,写入速度慢,在读取时要读取多个分片并合并计算,使用异步读,读取速度也要慢于副本模式,但是纠删模式只需要多保存校验数据块,因此使用的空间更少。

为了提升小块数据的读写性能并兼顾大块数据的存储空间使用率,分别建立一个副本池和一个纠删池用于数据的保存,并把副本池作为纠删池的缓存池,所有数据的操作全部先经过副本池,根据数据大小选择存储池;同时为了提升副本池的性能,使用SSD作为副本池的存储介质。

但是SSD相比于机械硬盘,价格比较昂贵,考虑成本因素,缓存池一般较小,为了避免缓存池被写满导致整个存储系统不可用,写入缓存池的数据需要下刷到数据池,下刷完成后,将缓存池中clean的数据淘汰。

发明内容

为了避免缓存池被写满导致整个存储系统不可用,写入缓存池的数据需要下刷到数据池,下刷完成后,将缓存池中clean的数据淘汰,本发明提供一种双存储池数据淘汰方法、装置、设备。

本发明技术方案是:

第一方面,本发明技术方案提供一种双存储池数据淘汰方法,双存储池包括缓存池和数据池,该方法包括如下步骤:

将缓存池数据下刷到数据池后,获取缓存池水位;

判断缓存池水位是否大于预设的警戒水位;

若是,将缓存池中clean对象直接淘汰;其中,clean对象为缓存池中已下刷到数据池的数据;

若否,将缓存池中的clean对象按设定策略放入对应的LRU算法队列;

周期从LRU算法队列中获取设定数据范围clean对象进行淘汰处理。

进一步的,所述的将缓存池中的clean对象按设定策略放入对应的LRU算法队列的步骤还包括:

获取缓存池中clean对象标记信息;

将缓存池中标记信息为false的clean对象直接淘汰;其中,将下刷完成后直接淘汰的数据设置标记信息为false。

将缓存池中的剩余的clean对象按设定策略放入对应的LRU算法队列。

进一步的,所述的周期从LRU算法队列中获取设定数据淘汰范围的clean对象进行淘汰处理的步骤中,数据淘汰范围的确定步骤包括:

获取clean对象在缓存池中的范围;

获取clean对象的属性信息;

计算属性信息是脏数据的clean对象的范围;

将clean对象在缓存池中的范围与属性信息是脏数据的clean对象的范围做差,确定为数据淘汰范围。

由于数据下刷完成后存在数据再次使用的情况,数据再次使用后不能归为可信任行列,也就是,数据再次使用后不能淘汰。

进一步的,当节点重启或OSD进程重启后,OSD内存中的队列存在丢失的情况,所述的周期从LRU算法队列中获取设定数据范围clean对象进行淘汰处理的步骤之前包括:

检测LRU算法队列是否存在,

若是,周期从LRU算法队列中获取设定数据范围clean对象进行淘汰处理;

若否,扫描缓存池内所有clean对象,重新确定缓存池中clean对象;

将重新确定的clean对象按设定策略放入对应的LRU算法队列;

进一步的,扫描缓存池内所有clean对象,重新确定缓存池中clean对象的步骤包括:

扫描缓存池内所有clean对象;

获取缓存池内clean对象的范围;

将获取的clean对象的范围与属性信息是脏数据的clean对象的范围做差,重新确定的缓存池中clean对象。

进一步的,所述的将缓存池中的clean对象按设定策略放入对应的LRU算法队列的步骤具体包括:

获取下刷到数据池的数据长度;

将获取的下刷到数据池的数据长度与数据池纠删长度进行比较;

若下刷到数据池的数据长度大于或等于数据池纠删长度的四分之一时,将缓存池中的clean对象放入第一LRU算法队列;

若下刷到数据池的数据长度大于或等于数据池纠删长度的八分之一,且小于数据池纠删长度的四分之一时,将缓存池中的clean对象放入第二LRU算法队列;

若下刷到数据池的数据长度大于0且小于数据池纠删长度的八分之一时,将缓存池中的clean对象放入第三LRU算法队列;其中,第二LRU算法队列的数据长度小于第一LRU算法队列的数据长度且大于第三LRU算法队列的数据长度。

进一步的,所述的周期从LRU算法队列中获取设定数据范围clean对象进行淘汰处理的步骤中,优先获取clean数据量大的对象;当第一LRU算法队列和第二LRU算法队列中无对象时,从第三LRU算法队列获取clean对象。

第二方面,本发明技术方案提供一种双存储池数据淘汰装置,双存储池包括缓存池和数据池,该装置包括缓存池容量获取模块、缓存池容量判断模块、淘汰模块、预处理模块、处理淘汰模块;

缓存池容量获取模块,用于数据下刷完成后获取缓存池水位;

缓存池容量判断模块,用于判断缓存池水位是否大于预设的警戒水位;

淘汰模块,用于若缓存池水位大于预设的警戒水位时,将缓存池中clean对象直接淘汰;其中,clean对象为缓存池中已下刷到数据池的数据;

预处理模块,用于若缓存池水位不大于预设的警戒水位时,将缓存池中的clean对象按设定策略放入对应的LRU算法队列;

处理淘汰模块,用于周期从LRU算法队列中获取设定数据范围clean对象进行淘汰处理。

进一步的,所述的预处理模块包括标记信息获取单元、插入队列单元;

标记信息获取单元,用于获取缓存池中clean对象标记信息;

淘汰模块,还用于将缓存池中标记信息为false的clean对象直接淘汰;

插入队列单元,用于将缓存池中的剩余的clean对象按设定策略放入对应的LRU算法队列。

进一步的,所述的处理淘汰模块包括对象范围获取单元、属性信息获取单元、计算单元、数据淘汰范围确定单元;

对象范围获取单元,用于获取clean对象在缓存池中的范围;

属性信息获取单元,用于获取clean对象的属性信息;

计算单元,用于计算属性信息是脏数据的clean对象的范围;

数据淘汰范围确定单元,用于将clean对象在缓存池中的范围与属性信息是脏数据的clean对象的范围做差,确定为数据淘汰范围。

进一步的,该装置还包括队列状态检测模块和扫描模块;

队列状态检测模块,用于检测LRU算法队列是否存在;

扫描模块,用于队列状态检测模块检测LRU算法队列不存在时,扫描缓存池内所有clean对象,重新确定缓存池中clean对象;

预处理模块,还用于将重新确定的clean对象按设定策略放入对应的LRU算法队列;

进一步的,扫描模块包括扫描单元、对象范围获取单元、对象确定单元;

扫描单元,用于扫描缓存池内所有clean对象;

对象范围获取单元,用于获取缓存池内clean对象的范围;

对象确定单元,用于将获取的clean对象的范围与属性信息是脏数据的clean对象的范围做差,重新确定的缓存池中clean对象。

进一步的,所述的插入队列单元包括数据长度获取子模块、数据长度比较子模块、选择插入子模块;

数据长度获取子模块,用于获取下刷到数据池的数据长度;

数据长度比较子模块,用于将获取的下刷到数据池的数据长度与数据池纠删长度进行比较;

选择插入子模块,用于若下刷到数据池的数据长度大于或等于数据池纠删长度的四分之一时,将缓存池中的clean对象放入第一LRU算法队列;若下刷到数据池的数据长度大于或等于数据池纠删长度的八分之一,且小于数据池纠删长度的四分之一时,将缓存池中的clean对象放入第二LRU算法队列;若下刷到数据池的数据长度大于0且小于数据池纠删长度的八分之一时,将缓存池中的clean对象放入第三LRU算法队列;其中,第二LRU算法队列的数据长度小于第一LRU算法队列的数据长度且大于第三LRU算法队列的数据长度。

进一步的,所述的处理淘汰模块优先获取clean数据量大的对象进行淘汰;当第一LRU算法队列和第二LRU算法队列中无对象时,从第三LRU算法队列获取clean对象进行淘汰。

第三方面,本发明技术方案还提供了一种电子设备,包括处理器和存储器,所述处理器和所述存储器通过通信总线完成相互间的通信;

存储器,用于存储数据淘汰程序;

处理器,用于执行所述数据淘汰程序时实现如第一方面所述的双存储池数据淘汰方法的步骤。

从以上技术方案可以看出,本发明具有以下优点:使用副本池作为纠删池的缓存池,设计一套clean数据淘汰方法,保证缓存池不被写满。数据下刷完成后,在保证数据读取效率的前提下将缓存池内的数据淘汰,避免缓存池写满造成存储系统不可用。

此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。

由此可见,本发明与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。

附图说明

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

图1是本发明一个实施例的方法的示意性流程图。

图2是本发明一个实施例的装置的示意性框图。

图中,22-缓存池容量获取模块,33-缓存池容量判断模块,44-淘汰模块,55-预处理模块,66-处理淘汰模块,77-队列状态检测模块,88-扫描模块。

具体实施方式

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

LRU,Last Recent Used,最近被使用的对象最后被丢弃。

如图1所示,本发明技术方案提供一种双存储池数据淘汰方法,双存储池包括缓存池和数据池,该方法包括如下步骤:

步骤11:将缓存池数据下刷到数据池后,获取缓存池水位;

步骤12:判断缓存池水位是否大于预设的警戒水位;若是,执行步骤13,否则,执行步骤14;

步骤13:将缓存池中clean对象直接淘汰;其中,clean对象为缓存池中已下刷到数据池的数据;

步骤14:将缓存池中的clean对象按设定策略放入对应的LRU算法队列;

步骤15:周期从LRU算法队列中获取设定数据范围clean对象进行淘汰处理。

LRU算法队列,用于保存clean数据量不同的对象。

在有些实施例中,所述的将缓存池中的clean对象按设定策略放入对应的LRU算法队列的步骤还包括:

获取缓存池中clean对象标记信息;

将缓存池中标记信息为false的clean对象直接淘汰;其中,将下刷完成后直接淘汰的数据设置标记信息为false。

将缓存池中的剩余的clean对象按设定策略放入对应的LRU算法队列。

在有些实施例中,所述的周期从LRU算法队列中获取设定数据淘汰范围的clean对象进行淘汰处理的步骤中,数据淘汰范围的确定步骤包括:

获取clean对象在缓存池中的范围;

获取clean对象的属性信息;

计算属性信息是脏数据的clean对象的范围;

将clean对象在缓存池中的范围与属性信息是脏数据的clean对象的范围做差,确定为数据淘汰范围。

由于数据下刷完成后存在数据再次使用的情况,数据再次使用后不能归为可信任行列,也就是,数据再次使用后不能淘汰。

在有些实施例中,当节点重启或OSD进程重启后,OSD内存中的队列存在丢失的情况,所述的周期从LRU算法队列中获取设定数据范围clean对象进行淘汰处理的步骤之前包括:

检测LRU算法队列是否存在;

若是,周期从LRU算法队列中获取设定数据范围clean对象进行淘汰处理;

若否,扫描缓存池内所有clean对象,重新确定缓存池中clean对象;

将重新确定的clean对象按设定策略放入对应的LRU算法队列;

在有些实施例中,扫描缓存池内所有clean对象,重新确定缓存池中clean对象的步骤包括:

扫描缓存池内所有clean对象;

获取缓存池内clean对象的范围;

将获取的clean对象的范围与属性信息是脏数据的clean对象的范围做差,重新确定的缓存池中clean对象。

在有些实施例中,所述的将缓存池中的clean对象按设定策略放入对应的LRU算法队列的步骤具体包括:

获取下刷到数据池的数据长度;

将获取的下刷到数据池的数据长度与数据池纠删长度进行比较;

若下刷到数据池的数据长度大于或等于数据池纠删长度的四分之一时,将缓存池中的clean对象放入第一LRU算法队列;

若下刷到数据池的数据长度大于或等于数据池纠删长度的八分之一,且小于数据池纠删长度的四分之一时,将缓存池中的clean对象放入第二LRU算法队列;

若下刷到数据池的数据长度大于0且小于数据池纠删长度的八分之一时,将缓存池中的clean对象放入第三LRU算法队列;其中,第二LRU算法队列的数据长度小于第一LRU算法队列的数据长度且大于第三LRU算法队列的数据长度。

在有些实施例中,所述的周期从LRU算法队列中获取设定数据范围clean对象进行淘汰处理的步骤中,优先获取clean数据量大的对象;当第一LRU算法队列和第二LRU算法队列中无对象时,从第三LRU算法队列获取clean对象。

举例说明本方法的具体的实施过程:

设计一个淘汰线程CacheEvictThread和一个pg扫描线程PGScanThread,同时增加三个用于淘汰clean对象的LRU算法队列,具体包括第一LRU算法队列m_clean_big_lru、第二LRU算法队列m_clean_mid_lru和第三LRU算法队列m_clean_small_lru,分别用于插入下刷范围不同的clean对象,同时增加一个bool型的配置项cache_tier_evict_data_when_flush用于标记是否在下刷完成后直接淘汰clean范围的数据,该配置项默认为false;

为缓存池设计一个警戒水位,数据下刷完成后,获取缓存池水位,如果水位大于警戒水位,那么下刷后的数据直接淘汰;

如果缓存池水位未超过警戒水位,将下刷后的对象插入LRU算法队列,LRU算法队列选择策略为:下刷数据长度是数据池纠删长度stripe_width的[1/4,1]选择第一LRU算法队列m_clean_big_lru,下刷数据长度是数据池纠删长度stripe_width的[1/8,1/4)选择第二LRU算法队列,m_clean_mid_lru,下刷数据长度是数据池纠删长度stripe_width的(0,1/8)选择第三LRU算法队列m_clean_small_lru;

数据淘汰实现,淘汰线程周期从LRU算法队列中获取对象进行淘汰处理,每次获取指定个数的clean对象,优先获取clean数据量大的对象,只有当m_clean_big_lru和m_clean_mid_lru中无对象时才从m_clean_small_lru获取对象;

数据淘汰范围,使用fiemap获取对象在cache pool内范围,减去属性中记录的dirty_range范围,便是本次操作需要淘汰的数据范围。

异常处理,当节点重启或OSD进程重启后,OSD内存中的LRU算法队列丢失,淘汰线程无法将缓存池中clean数据淘汰,有可能造成缓存池水位过高。使用pg扫描线程,扫描pg内所有对象,比较该对象fiemap获取的范围和dirty_range范围,根据差值大小,重新插入LRU算法队列中。

如图2所示,本发明实施例HIA提供一种双存储池数据淘汰装置,双存储池包括缓存池和数据池,该装置包括缓存池容量获取模块22、缓存池容量判断模块33、淘汰模块44、预处理模块55、处理淘汰模块66;

缓存池容量获取模块22,用于数据下刷完成后获取缓存池水位;

缓存池容量判断模块33,用于判断缓存池水位是否大于预设的警戒水位;

淘汰模块44,用于若缓存池水位大于预设的警戒水位时,将缓存池中clean对象直接淘汰;其中,clean对象为缓存池中已下刷到数据池的数据;

预处理模块55,用于若缓存池水位不大于预设的警戒水位时,将缓存池中的clean对象按设定策略放入对应的LRU算法队列;

处理淘汰模块66,用于周期从LRU算法队列中获取设定数据范围clean对象进行淘汰处理。

在有些实施例中,所述的预处理模块55包括标记信息获取单元、插入队列单元;

标记信息获取单元,用于获取缓存池中clean对象标记信息;

淘汰模块,还用于将缓存池中标记信息为false的clean对象直接淘汰;

插入队列单元,用于将缓存池中的剩余的clean对象按设定策略放入对应的LRU算法队列。

在有些实施例中,所述的处理淘汰模块66包括对象范围获取单元、属性信息获取单元、计算单元、数据淘汰范围确定单元;

对象范围获取单元,用于获取clean对象在缓存池中的范围;

属性信息获取单元,用于获取clean对象的属性信息;

计算单元,用于计算属性信息是脏数据的clean对象的范围;

数据淘汰范围确定单元,用于将clean对象在缓存池中的范围与属性信息是脏数据的clean对象的范围做差,确定为数据淘汰范围。

在有些实施例中,该装置还包括队列状态检测模块77和扫描模块88;

队列状态检测模块77,用于检测LRU算法队列是否存在;

扫描模块88,用于队列状态检测模块检测LRU算法队列不存在时,扫描缓存池内所有clean对象,重新确定缓存池中clean对象;

预处理模块55,还用于将重新确定的clean对象按设定策略放入对应的LRU算法队列;

在有些实施例中,扫描模块88包括扫描单元、对象范围获取单元、对象确定单元;

扫描单元,用于扫描缓存池内所有clean对象;

对象范围获取单元,用于获取缓存池内clean对象的范围;

对象确定单元,用于将获取的clean对象的范围与属性信息是脏数据的clean对象的范围做差,重新确定的缓存池中clean对象。

在有些实施例中,所述的插入队列单元包括数据长度获取子模块、数据长度比较子模块、选择插入子模块;

数据长度获取子模块,用于获取下刷到数据池的数据长度;

数据长度比较子模块,用于将获取的下刷到数据池的数据长度与数据池纠删长度进行比较;

选择插入子模块,用于若下刷到数据池的数据长度大于或等于数据池纠删长度的四分之一时,将缓存池中的clean对象放入第一LRU算法队列;若下刷到数据池的数据长度大于或等于数据池纠删长度的八分之一,且小于数据池纠删长度的四分之一时,将缓存池中的clean对象放入第二LRU算法队列;若下刷到数据池的数据长度大于0且小于数据池纠删长度的八分之一时,将缓存池中的clean对象放入第三LRU算法队列;其中,第二LRU算法队列的数据长度小于第一LRU算法队列的数据长度且大于第三LRU算法队列的数据长度。

在有些实施例中,所述的处理淘汰模块66优先获取clean数据量大的对象进行淘汰;当第一LRU算法队列和第二LRU算法队列中无对象时,从第三LRU算法队列获取clean对象进行淘汰。

值和/或本次存储时间达到预设时间长度和/或收到运行状态查询请求。

相应的,本发明实施例还公开一种电子设备,包括处理器和存储器;其中,所述处理器执行所述存储器中保存的数据淘汰程序时实现以下步骤:

将缓存池数据下刷到数据池后,获取缓存池水位;

判断缓存池水位是否大于预设的警戒水位;

若是,将缓存池中clean对象直接淘汰;其中,clean对象为缓存池中已下刷到数据池的数据;

若否,将缓存池中的clean对象按设定策略放入对应的LRU算法队列;

周期从LRU算法队列中获取设定数据范围clean对象进行淘汰处理。

在一些具体的实施例中,所述处理器执行所述存储器中保存的数据淘汰子程序时,具体可以实现以下步骤:获取缓存池中clean对象标记信息;将缓存池中标记信息为false的clean对象直接淘汰;将缓存池中的剩余的clean对象按设定策略放入对应的LRU算法队列。

在一些具体的实施例中,所述处理器执行所述存储器中保存的数据淘汰子程序时,具体可以实现以下步骤:获取clean对象在缓存池中的范围;

获取clean对象的属性信息;

计算属性信息是脏数据的clean对象的范围;

将clean对象在缓存池中的范围与属性信息是脏数据的clean对象的范围做差,确定为数据淘汰范围。

在一些具体的实施例中,所述处理器执行所述存储器中保存的数据淘汰子程序时,具体可以实现以下步骤:检测LRU算法队列是否存在;

若是,周期从LRU算法队列中获取设定数据范围clean对象进行淘汰处理;

若否,扫描缓存池内所有clean对象,重新确定缓存池中clean对象;

将重新确定的clean对象按设定策略放入对应的LRU算法队列。

在一些具体的实施例中,所述处理器执行所述存储器中保存的数据淘汰子程序时,具体可以实现以下步骤:

获取下刷到数据池的数据长度;

将获取的下刷到数据池的数据长度与数据池纠删长度进行比较;

若下刷到数据池的数据长度大于或等于数据池纠删长度的四分之一时,将缓存池中的clean对象放入第一LRU算法队列;

若下刷到数据池的数据长度大于或等于数据池纠删长度的八分之一,且小于数据池纠删长度的四分之一时,将缓存池中的clean对象放入第二LRU算法队列;

若下刷到数据池的数据长度大于0且小于数据池纠删长度的八分之一时,将缓存池中的clean对象放入第三LRU算法队列;其中,第二LRU算法队列的数据长度小于第一LRU算法队列的数据长度且大于第三LRU算法队列的数据长度。

进一步的,本实施例中的电子设备,还可以包括:

输入接口,用于获取外界导入的数据淘汰程序,并将获取到的数据淘汰程序保存至所述存储器中,还可以用于获取外界终端设备传输的各种指令和参数,并传输至处理器中,以便处理器利用上述各种指令和参数展开相应的处理。本实施例中,所述输入接口具体可以包括但不限于USB接口、串行接口、语音输入接口、指纹输入接口、硬盘读取接口等。

输出接口,用于将处理器产生的各种数据输出至与其相连的终端设备,以便于与输出接口相连的其他终端设备能够获取到处理器产生的各种数据。本实施例中,所述输出接口具体可以包括但不限于USB接口、串行接口等。

通讯单元,用于在运行状态管理装置和外部服务器之间建立远程通讯连接,以便于运行状态管理装置能够将镜像文件挂载到外部服务器中。本实施例中,通讯单元具体可以包括但不限于基于无线通讯技术或有线通讯技术的远程通讯单元。

键盘,用于获取用户通过实时敲击键盘而输入的各种参数数据或指令。

显示器,用于运行数据淘汰过程的相关信息进行实时显示。

鼠标,可以用于协助用户输入数据并简化用户的操作。

此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

相关技术
  • 一种双存储池数据淘汰方法、装置、设备
  • 一种双存储池数据存储方法、装置、设备及存储介质
技术分类

06120113807940