CN114356247A - 一种分层存储调度方法、装置、设备及存储介质 - Google Patents

一种分层存储调度方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN114356247A
CN114356247A CN202210266645.4A CN202210266645A CN114356247A CN 114356247 A CN114356247 A CN 114356247A CN 202210266645 A CN202210266645 A CN 202210266645A CN 114356247 A CN114356247 A CN 114356247A
Authority
CN
China
Prior art keywords
data object
storage
storage layer
ant
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210266645.4A
Other languages
English (en)
Inventor
张黎
邓晨炯
陈广辉
刘维炜
杨大志
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Flash It Co ltd
Original Assignee
Flash It Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Flash It Co ltd filed Critical Flash It Co ltd
Priority to CN202210266645.4A priority Critical patent/CN114356247A/zh
Publication of CN114356247A publication Critical patent/CN114356247A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明的实施例提供了一种分层存储调度方法、装置、设备及存储介质,涉及数据存储领域,该方法包括:接收客户端发送的数据访问请求;若第一存储层中不具有数据访问请求命中的第一目标数据对象,但第二存储层中具有第一目标数据对象,则判断第一存储层的空闲存储空间是否达到预设的存储空间阈值;其中,第一存储层的数据读写速率大于第二存储层的数据读写速率;若空闲存储空间未达到存储空间阈值,则采用预设的蚁群算法,从第一存储层中确定待迁移的第二目标数据对象;将第二目标数据对象迁出第一存储层,并将第一目标数据对象插入第一存储层中。采用该方法,可以提升数据的缓存命中率,增强数据读取时效性。

Description

一种分层存储调度方法、装置、设备及存储介质
技术领域
本发明涉及数据存储领域,具体而言,涉及一种分层存储调度方法、装置、设备及存储介质。
背景技术
现代计算机处理速度和处理的数据类型都发生了巨大的变化,数据访问模式和工作负载类型也逐年增加,对数据存储调用的效率要求越来越高。
在这种情况下经典的传统替换算法已经无法满足现代多媒体计算机的要求。常见的缓存替换算法LRU算法、LFU算法、2Q算法都是在进行缓存替换时将缓存价值最小的缓存数据替换出缓存,不同之处只是对缓存价值的判定上,但是都具有片面性。
面对常用的存储系统规模大、数据量大、复杂度高的问题,亟需一种价值更为全面的缓存替换算法来配合存储系统高效访问存储数据。
发明内容
本发明实施例提供一种分层存储调度方法、装置、设备及存储介质,可以提升数据的缓存命中率,增强数据读取时效性。
第一方面,本发明实施例提供一种分层存储调度方法,包括:
接收客户端发送的数据访问请求;
若第一存储层中不具有所述数据访问请求命中的第一目标数据对象,但第二存储层中具有所述第一目标数据对象,则判断所述第一存储层的空闲存储空间是否达到预设的存储空间阈值;其中,所述第一存储层的数据读写速率大于所述第二存储层的数据读写速率;
若所述空闲存储空间未达到所述存储空间阈值,则采用预设的蚁群算法,从所述第一存储层中确定待迁移的第二目标数据对象;
将所述第二目标数据对象迁出所述第一存储层,并将所述第一目标数据对象插入所述第一存储层中。
可选地,所述采用预设的蚁群算法,从所述第一存储层中确定待迁移的第二目标数据对象,包括:
根据预设的M个蚂蚁的解集中各个选中数据对象的价值,分别计算所述M个蚂蚁的总价值;其中,M为大于或等于2的整数,所述选中数据对象的价值用于表征:所述选中数据对象被外部的数据访问请求所命中的价值;
从所述M个蚂蚁中确定总价值最大的目标蚂蚁;
从所述第一存储层中确定未被所述目标蚂蚁选中的数据对象为所述第二目标数据对象。
可选地,所述根据预设的M个蚂蚁的解集中各个选中数据对象的价值,分别计算所述M个蚂蚁的总价值之前,所述方法还包括:
根据每个蚂蚁的禁忌表、所述每个蚂蚁的接受表以及所述第一存储层中各个数据对象的信息素浓度,计算所述第一存储层中各个数据对象被所述每个蚂蚁选中的概率;其中,所述每个蚂蚁的禁忌表中的数据对象为已被所述每个蚂蚁选中的数据对象,所述每个蚂蚁的接受表中的数据对象为所述第一存储层中已存储数据对象中除去加入禁忌表的数据对象之外的其它数据对象;
根据所述各个数据对象被所述每个蚂蚁选中的概率,将所述各个数据对象中所述每个蚂蚁选中的数据对象加入所述每个蚂蚁的禁忌表中;
根据所述禁忌表中的数据对象的大小、所述第一存储层中各数据对象的大小,以及所述第一存储层的存储空间大小,从所述第一存储层中已存储的数据对象确定所述每个蚂蚁解集中数据对象;
将所述每个蚂蚁确定的数据对象加入所述每个蚂蚁的解集中。
可选地,所述方法还包括:
每间隔预设时长,根据预设的信息素挥发系数以及所述第一存储层中各个数据对象被命中的次数,更新所述第一存储层中各个数据对象的信息素浓度。
可选地,所述将所述第二目标数据对象迁出所述第一存储层之后,所述方法还包括:
清空所述M个蚂蚁的解集、禁忌表以及接受表。
可选地,所述将所述第一目标数据对象插入所述第一存储层中之后,所述方法还包括:
初始化所述第一存储层中所述第一目标数据对象的信息素浓度。
可选地,所述将所述第一目标数据对象插入所述第一存储层中之后,所述方法还包括:
更新所述第一目标数据对象加入所述第一存储层的时间信息。
第二方面,本发明实施例还提供一种分层存储调度装置,所述装置包括:
接收模块,用于接收客户端发送的数据访问请求;
判断模块,用于若第一存储层中不具有所述数据访问请求命中的第一目标数据对象,但第二存储层中具有所述第一目标数据对象,则判断所述第一存储层的空闲存储空间是否达到预设的存储空间阈值;其中,所述第一存储层的数据读写速率大于所述第二存储层的数据读写速率;
处理模块,用于若所述空闲存储空间未达到所述存储空间阈值,则采用预设的蚁群算法,从所述第一存储层中确定待迁移的第二目标数据对象;
插入模块,用于将所述第二目标数据对象迁出所述第一存储层,并将所述第一目标数据对象插入所述第一存储层中。
第三方面, 本发明实施例还提供一种分层存储调度设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的程序指令,当分层存储调度设备运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述程序指令,以执行如第一方面任一所述的分层存储调度方法的步骤。
第四方面,本发明实施例还提供一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如第一方面任一所述的分层存储调度方法的步骤。
本发明提供一种分层存储调度方法、装置、设备及存储介质,通过让存储系统分为两层,第一存储层的数据读写速率大于第二存储层的数据读写速率,当存储系统接收到客户端发送的数据访问请求时,先判断该数据访问请求需要访问的第一目标数据对象是否位于第一存储层,若该第一目标数据对象不位于第一存储层,且当前第一存储层内的空闲存储空间小于预设的存储空间阈值,则使用蚁群算法确定第一存储空间内需要迁出的第二目标数据对象,并在把第二目标数据对象迁出第一存储层时,将第一目标数据对象插入到第一存储层中,让需要访问的第一目标数据对象位于高数据读写速率的第一存储层,提高数据的访问速率,增强了存储系统的性能的同时降低了成本,使得存储空间运用更为灵活。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明提供的一种分层存储调度方法的流程示意图;
图2为本发明提供的一种蚁群算法的流程示意图;
图3为本发明提供的另一种蚁群算法的流程示意图;
图4为本发明提供的基于替换算法的分层存储调度流程示意图;
图5为本发明提供的另一种蚁群算法的流程示意图;
图6为本发明提供的一种基于蚁群算法的分层存储调度方法相对于传统算法的性能提升结果示意图;
图7为本发明提供的一种分层存储调度装置的示意图;
图8为本发明提供的一种分层存储调度设备的示意图。
图标:1000,接收模块;2000,判断模块;3000,处理模块;4000,插入模块;10,分层存储调度设备;11,处理器;12,存储器;13,总线。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在对本发明进行详细地解释之前,先对本发明的应用场景予以介绍。
当前互联网已经进入一个信息高速膨胀的大数据时代,海量数据的有效存储和利用问题日益突出。面对庞大的数据规模和急剧增长形势,我们需要根据不同的数据存储需求,设计不同的存储方案。对于用户来说,经常使用的数据在用户所有的存储数据中占比并不高,需要访问的次数有明显差异,不常访问的数据并不需要一直存储在高速的存储空间中。如果将所有的数据全部布局于高速设备中,则会增加经济成本;如果将所有的数据全部布局于低速设备中,则会使得响应速度很慢用户体验很差。因此,引入分层存储的概念可以使得不同需求的数据有的放矢。
分层存储管理(Hierarchical Storage Management,HSM)是一种让数据存储至不同层级的介质中,并可以在不同介质之间进行数据迁移。分层存储管理的出现可以提供所需性能的同时,节约更多的成本。在所有的数据中,将访问频率较高的数据存放在高性能的存储层,而其他大部分数据存放至性能较低但是容量大且价格低廉的存储层。
为了使得需要用到的数据最好都是在高性能的存储层,可以使用缓存替换算法。缓存替换问题是一种典型的0/1背包问题,想要通过算法找到需要保留的缓存价值最大的数据。传统的缓存替换算法如LRU(Least Recently Used,最近最少使用)算法,LFU(LeastFrequently Used,近期最少使用)算法,2Q算法已经无法满足现代计算机的需求。而这些传统缓存算法的主要区别在于各自对数据价值的定义上,LRU 认为在最近最不常用的缓存对象的价值最小,LFU 认为一定时期内被访问次数最少的缓存数据的价值最小,而 2Q 是LRU的扩展,本质上它与 LRU 的价值定义是相同的。对于LRU来说,仅从最近使用时间上考虑淘汰,没有考虑缓存单元的使用频率;对于LFU来说,主要考虑在短期的时间内,对某些缓存的访问频次很高的数据对象会立刻晋升为热点数据,而保证不会淘汰,这样会驻留在系统内存里面。而实际上,这部分数据可能只是短暂的高频率访问,之后将会长期不访问,瞬时的高频访问将会造成这部分数据的引用频率加快,而一些新加入的缓存很容易被快速删除。这样的传统缓存算法都具有片面性,无法提高计算机的性能。
基于此,本发明提供一种分层存储调度方法、装置、设备及存储介质,在存储系统中的缓存替换中使用蚁群算法,让高性能存储层中访问价值低的数据对象迁出该层,使得需要访问的数据对象存储至高性能的存储层中,使得访问请求被及时响应,提高缓存命中率。本发明下述各实施例提供的分层存储调度方法可由分层存储调度设备执行,该分层存储调度设备可以为电子计算机或移动电子设备,本发明对此不做限制。
如下结合附图通过多个实施例进行解释说明。图1为本发明提供的一种分层存储调度方法的流程示意图。如图1所示,一种分层存储调度方法,包括:
S110,接收客户端发送的数据访问请求。
在本发明中,该分层存储调度方法可以运用至各类存储系统,如不仅可以用于分布式存储系统存储池级别的分层存储调度优化,还可以用于单机存储系统引擎级别的分层存储调度优化,本发明对此不做限制,以下实施例以分布式存储系统为例进行具体说明,运用至其他存储系统的实施方式与分布式存储系统实施方式相同,不再赘述。
为了实现数据的可靠传输,客户端通过和分布式存储系统之间发送三次握手(Three-Way Handshake)建立TCP(Transmission Control Protocol,传输控制协议)连接,使得客户端可以向分布式存储系统之间通过HTTP(Hyper Text Transfer Protocol,超文本传输协议)进行请求和响应。
当客户端向分布式存储系统发送一个HTTP数据访问请求,一个HTTP请求报文由请求行、请求头部、请求体组成,请求行中包括请求地址URL(Uniform Resource Locator,统一资源定位器)。分布式存储系统接收客户端发送的数据访问请求,该客户端是相对于分布式存储系统来说的。想要访问分布式存储系统的数据,当具体应用发出请求后,客户端的应用层接收了请求后处理HTTP请求,将HTTP请求给分发至后端的分布式存储系统,分布式存储系统接收HTTP请求后返回数据对象至客户端的应用层,客户端再根据相应的端口把数据对象给到对应应用。
S120,若第一存储层中不具有数据访问请求命中的第一目标数据对象,但第二存储层中具有第一目标数据对象,则判断第一存储层的空闲存储空间是否达到预设的存储空间阈值。
在本实施例中,分布式存储系统分为两层,第一存储层采用高性能且价格比较昂贵的存储设备,第二存储层采用容量大但价格低廉的存储设备,其中,第一存储层的数据对象读写速率大于第二存储层的数据对象读写速率。在不同的层级之间使用有差别的存储介质,既能满足性能的需求又能满足容量的需求,同时保持一定的成本。在分布式存储系统中,对象是系统中数据存储的基本单位,一个对象实际上就是数据和一组属性信息的组合。当分布式存储系统接收到该数据访问请求后,若分布式存储系统的第一存储层中不具有数据访问请求命中的第一目标数据对象,但第二存储层中具有第一目标数据对象,则判断第一存储层的空闲存储空间是否达到预设的存储空间阈值,即当数据访问请求需要访问的数据对象不在第一存储层中而在第二存储层中时,则此时将数据请求访问指向第二存储层,再判断此时第一存储层中的剩余的空闲存储空间的大小是否达到预设的存储空间阈值,该预设的存储空间阈值为预设的需要访问的数据对象的空间大小阈值。
可选地,当分布式存储系统中的第一存储层中不具有数据访问请求命中的第一目标数据对象,但第二存储层中具有第一目标数据对象,此时为了便于后续对于分布式存储系统的操作可以统一处理,降低控制复杂度,防止操作中的意外改变或错误的使用数据对象的私有部分,可以将数据访问请求先抽象成事务指向第二存储层,再判断第一存储层的空闲存储空间是否达到预设的存储空间阈值。
可选地,若当前数据访问请求需要的数据对象就位于第一存储层中,则直接由第一存储层返回该数据对象至客户端。并且,可以统计该数据对象被命中的次数以及命中率等信息,便于后续请求访问中对第一存储层中数据进行替换。
S130,若空闲存储空间未达到存储空间阈值,则采用预设的蚁群算法,从第一存储层中确定待迁移的第二目标数据对象。
若判断后,第一存储层中空闲存储空间没有达到可以存储的存储空间阈值,即当前第一存储层中的剩余空闲存储空间的大小已经不满足再插入新的数据对象,则此时采用预设的蚁群算法,利用蚁群算法计算第一存储层中各数据对象的缓存价值,根据蚁群算法的结果从第一存储层中确定待迁移的第二目标数据对象,即确定第一存储层中哪些数据对象会被迁出,第二目标数据对象就是当前第一存储层中存储价值相对低的数据对象。
S140,将第二目标数据对象迁出第一存储层,并将第一目标数据对象插入第一存储层中。
根据蚁群算法的计算结果,将第二目标数据对象迁出第一存储层,第二目标数据对象为当前第一存储层中存储价值相对低的数据对象,以便于把第一存储层的空间留给需要访问的数据对象,并将第一目标数据对象从第二存储层迁出再插入至第一存储层中,则第一目标数据对象就可以在高性能的存储介质中被访问,响应速度就会加快。可选地,在将第一目标数据对象插入至第一存储层以后,分布式存储系统会将第一目标数据对象返回至客户端,客户端再组织数据对象返回至具体应用。可选地,当第二目标数据对象迁出第一存储层时,会更新记录第二目标数据对象被迁出的时间。
本实施例通过让存储系统分为两层,第一存储层的数据读写速率大于第二存储层的数据读写速率,当存储系统接收到客户端发送的数据访问请求时,先判断该数据访问请求需要访问的第一目标数据对象是否位于第一存储层,若该第一目标数据对象不位于第一存储层,且当前第一存储层内的空闲存储空间小于预设的存储空间阈值,则使用蚁群算法确定第一存储空间内需要迁出的第二目标数据对象,并在把第二目标数据对象迁出第一存储层时,将第一目标数据对象插入到第一存储层中,让需要访问的第一目标数据对象位于高数据读写速率的第一存储层,提高数据的访问速率,增强了存储系统的性能的同时降低了成本,使得存储空间运用更为灵活。
在上述图1提供的一种分层存储调度方法的基础上,为了解释说明如何通过蚁群算法找到第二目标数据对象,本发明还通过了一种蚁群算法的流程示意图。图2为本发明提供的一种蚁群算法的流程示意图。如图2所示,上述方法中S130中采用预设的蚁群算法,从第一存储层中确定待迁移的第二目标数据对象,包括:
S210,根据预设的M个蚂蚁的解集中各个选中数据对象的价值,分别计算M个蚂蚁的总价值。
蚁群算法(Ant Colony Algorithm,ACA)是一种基于蚁群的模拟进化算法,是受到自然界中对真实蚁群行为的研究启发而提出的。蚂蚁在它所经过路径上留下的可以进行信息传递的物质,称为信息素,蚂蚁总是趋向于走信息浓度更高的路径。因此,由大量蚂蚁组成的群体行为表现出一种信息正反馈现象:路径越短,该路径上留下的信息素浓度越高,而且会有更多的蚂蚁选择这条路径,最终蚁群通过个体之间的信息正反馈机制,找到最短路径。
本实施例基于此,使用蚁群算法代替传统的缓存替换算法,每只蚂蚁通过对存储系统中的数据对象进行判断,通过数据对象的价值来决定哪个数据对象被替换出第一存储层,释放它占用的资源给此次需要访问的数据。
在介绍蚁群算法之前,先定义如下的符号意义。
M,表示蚁群中总的蚂蚁数量,其中,M为大于或等于2的整数;蚂蚁的数量是根据系统的处理能力来决定的,有多少核,就有多少蚂蚁,例如当前CPU为16核,即规定蚂蚁的数量M=16;
Figure DEST_PATH_IMAGE002
,当前蚂蚁K被第一存储层中数据对象i选中的概率;
Figure DEST_PATH_IMAGE004
,当前时刻;
Figure DEST_PATH_IMAGE006
,每个数据对象被创建的时刻;
Figure DEST_PATH_IMAGE008
,第一存储层中数据对象i在t时刻的信息素浓度;
Figure DEST_PATH_IMAGE010
,第一存储层中数据对象i在t+n时刻的信息素浓度;
Figure DEST_PATH_IMAGE012
,启发函数,表示蚂蚁由当前数据对象i转移到数据对象j的期望程度;
Figure DEST_PATH_IMAGE014
,信息素启发式因子,反映蚂蚁在选择数据对象的过程中所积累的信息素
Figure 512997DEST_PATH_IMAGE008
在蚂蚁选择数据对象时的相对重要程度;
Figure DEST_PATH_IMAGE016
,期望值启发式因子,反映蚂蚁在选择数据对象的过程中启发函数
Figure DEST_PATH_IMAGE017
在蚂蚁选择数据对象时的相对重要程度;
Figure DEST_PATH_IMAGE019
,数据对象i被命中的次数;
Figure DEST_PATH_IMAGE021
,当前数据对象i的价值;
Figure DEST_PATH_IMAGE023
,表示在一次替换中数据对象信息素浓度的挥发系数,其中,
Figure DEST_PATH_IMAGE025
C,第一存储空间的存储总容量;
n,第一存储层中数据对象的数量;
Figure DEST_PATH_IMAGE027
,蚂蚁K的禁忌表,记录了蚂蚁K选择过的数据对象,蚂蚁不能选择禁忌表中已经记录了的数据对象;
Figure DEST_PATH_IMAGE029
,蚂蚁K在本次替换算法中的解集,记录了蚂蚁K选择的并且满足约束条件的数据对象;
Figure DEST_PATH_IMAGE031
,蚂蚁K的接收表,
Figure DEST_PATH_IMAGE033
,表示蚂蚁K下一步允许选择的数据对象的集合。
基于上述符号意义,在本实施例中,在计算数据对象的价值之前,还需要判断此时蚁群算法是否完成初始化,在蚁群算法完成初始化之后才可以开始运行,在初始化过程中设置需要用到的
Figure 56236DEST_PATH_IMAGE004
Figure DEST_PATH_IMAGE034
Figure DEST_PATH_IMAGE035
,并将
Figure 687902DEST_PATH_IMAGE027
Figure DEST_PATH_IMAGE036
初始化为空。蚁群算法在在初始化启动之后,会作为分布式存储系统常驻替换服务始终运行。
初始化结束后,第一存储层中每个数据对象i的价值:
Figure DEST_PATH_IMAGE038
;选中数据对象的价值用于表征:选中数据对象被外部的数据访问请求所命中的价值;当蚂蚁K测试完所有的数据对象后,完成了选择数据对象的过程,则此时蚂蚁K的价值即为:其利用蚁群算法对每个数据对象进行选择后蚂蚁K的解集中所有数据对象的总价值。分别计算M个蚂蚁的总价值,并对每个蚂蚁解集中的已有数据对象的价值进行比较。
S220,从M个蚂蚁中确定总价值最大的目标蚂蚁。
蚁群算法会遍历所有蚂蚁对所有数据对象的计算及选择结果,选择结束后,从M个蚂蚁中每个蚂蚁的解集中数据对象的总价值来确定总价值最大的目标蚂蚁,即将解集中数据对象的价值相加,总价值最大的蚂蚁就是目标蚂蚁。
S230,从第一存储层中确定未被目标蚂蚁选中的数据对象为第二目标数据对象。
当确定了第一存储层中总价值最大的目标蚂蚁之后,从第一存储层中确定未被目标蚂蚁选中的数据对象为第二目标数据对象,结合上述实施例,在确定目标蚂蚁之后,即根据目标蚂蚁解集中的数据对象和禁忌表中的数据对象,将不存在于目标蚂蚁的解集且不存在于目标蚂蚁的禁忌表中的数据对象确定为第二目标数据对象,把第二目标数据对象迁出第一存储层,也就是将存储价值较小的第二目标数据对象从第一存储层转移到第二存储层。
本实施例通过蚁群算法在存储系统里高性能的存储层中找到存储价值较小的数据对象,并将该数据对象迁出高性能的存储层,把高性能的存储层的存储空间留给需要访问的数据,提升数据对象的访问效率,增加数据对象的命中率。
在上述图2提供的一种蚁群算法的基础上,为了解释说明如何确定总价值最大的蚂蚁,本发明还通过了一种蚁群算法的流程示意图。图3为本发明提供的另一种蚁群算法的流程示意图。如图2所示,上述方法中S210,根据预设的M个蚂蚁的解集中各个选中数据对象的价值,分别计算M个蚂蚁的总价值之前,还包括:
S310,根据每个蚂蚁的禁忌表、每个蚂蚁的接受表以及第一存储层中各个数据对象的信息素浓度,计算第一存储层中各个数据对象被每个蚂蚁选中的概率。
其中,每个蚂蚁的禁忌表中的数据对象为已被每个蚂蚁选中的数据对象,每个蚂蚁的接受表中的数据对象为第一存储层中已存储数据对象中除去加入禁忌表的数据对象之外的其它数据对象。
为了确定出M个蚂蚁中各个蚂蚁对应解集中数据对象的价值,首先需要根据每个蚂蚁的禁忌表、每个蚂蚁的接受表以及第一存储层中各个数据对象的信息素浓度,计算第一存储层中各个数据对象被选中的概率。
M个蚂蚁中每个蚂蚁K按照以公式(1)计算第一存储层中每个数据对象i被选中的概率:
Figure DEST_PATH_IMAGE040
公式(1)
每个蚂蚁K只对每个数据对象访问一次,并依据访问的当前时刻计算每个数据i被蚂蚁选中的概率,每个蚂蚁K依据此概率值选择数据对象i,并将其记录到禁忌表
Figure 958477DEST_PATH_IMAGE027
中,其中,每个蚂蚁的禁忌表中的数据对象为已被每个蚂蚁选中的数据对象,本次替换过程该蚂蚁不会再次选择该数据对象。每个蚂蚁K的接受表
Figure 772850DEST_PATH_IMAGE031
中的数据对象为第一存储层中已存储数据对象中除去加入禁忌表的数据对象之外的其它数据对象。
S320,根据各个数据对象被每个蚂蚁选中的概率,将各个数据对象中每个蚂蚁选中的数据对象加入每个蚂蚁的禁忌表中。
蚁群算法中为了保证蚂蚁选择数据对象的随机性,在选择数据对象时可以通过轮盘赌的方法选择。每个蚂蚁根据概率选择数据对象,对于蚂蚁K来说,将蚂蚁K选择每个数据对象的概率看做轮盘的每个扇面,概率大扇面也就大,每个扇面一起构成一个圆,用随机数来模拟轮盘指针停止时指向的扇面。通过给予蚂蚁K一个随机数使得蚂蚁K随机选中一个数据对象,并把该数据对象加入自己的禁忌表
Figure 595312DEST_PATH_IMAGE027
中,这样就保证计算结果中概率大的数据对象被蚂蚁随机选择的概率大的同时,概率小的数据对象也有可能被选中。则通过这样的方式,根据各个数据对象被每个蚂蚁选中的概率,将各个数据对象中每个蚂蚁选中的数据对象加入每个蚂蚁的禁忌表中。
S330,根据禁忌表中的数据对象的大小、第一存储层中各数据对象的大小,以及第一存储层的存储空间大小,从第一存储层中已存储的数据对象确定每个蚂蚁解集中的数据对象。
S340,将每个蚂蚁确定的数据对象加入每个蚂蚁的解集中。
设此时被禁忌表中的数据对象的大小为
Figure DEST_PATH_IMAGE042
,根据第一存储层中各数据对象的大小,即决定被蚂蚁加入至解集中所有对象的大小为
Figure DEST_PATH_IMAGE044
,第一存储层的存储空间的大小为C,则由于蚂蚁需要选择数据对象迁出第一存储层,再放置第一目标数据对象,设第一目标数据对象的大小为
Figure DEST_PATH_IMAGE046
,因此,再判断该数据对象是否合适被加入至解集中,需要满足如下约束条件:
Figure DEST_PATH_IMAGE048
,通过该约束条件第一存储层中已存储的数据对象确定每个蚂蚁选中的数据对象。即,如果该数据对象加入蚂蚁解集后的解集
Figure DEST_PATH_IMAGE049
的大小
Figure 613078DEST_PATH_IMAGE044
,蚂蚁禁忌表
Figure 188809DEST_PATH_IMAGE027
的大小
Figure 857688DEST_PATH_IMAGE042
,以及第一目标数据对象的大小为
Figure 726418DEST_PATH_IMAGE046
的大小之和小于第一存储层的总容量,就将该数据对象加入至当前蚂蚁的解集中。
在蚂蚁对数据对象选择完成后,即可根据每个蚂蚁的解集大小从M个蚂蚁中确定总价值最大的蚂蚁为目标蚂蚁,并将第一存储层中没有被目标蚂蚁选中,即不在目标蚂蚁解集和禁忌表中的数据对象最为第二目标数据对象,迁出第一存储层。
在一种可能的实现方式中,在上述实施例中,在计算出每个数据对象被蚂蚁选中的概率值之后,可按被蚂蚁选中的概率值对所有数据对象进行排序,除被蚂蚁选中概率值最大的数据对象以外,蚂蚁只对概率排序前10名的数据对象进行选择判断是否加入解集中,通过这样的方式,减少蚂蚁对数据对象的选择过程,精简调度过程。
在本实施例中,通过蚁群算法计算高性能存储层中每个数据对象被选择的概率,得到每个蚂蚁的禁忌表;通过禁忌表的信息,每只蚂蚁对第一存储层中其余数据对象进行判断,从而选择需要存放至解集的数据对象,便于后续对蚂蚁价值的判断。
在上述图3提供的另一种蚁群算法的基础上,上述步骤中,还包括:
S350,每间隔预设时长,根据预设的信息素挥发系数以及第一存储层中各个数据对象被命中的次数,更新所述第一存储层中各个数据对象的信息素浓度。
由于在蚁群算法中,需要每间隔一段固定的预设时长更新缓存中所有缓存对象的信息素。具体地,使用公式(2)根据预设的信息素挥发系数
Figure DEST_PATH_IMAGE051
以及第一存储层中各个数据对象被命中的次数,更新第一存储层中各个数据对象的信息素浓度,n为信息素浓度更新间隔时长。
Figure DEST_PATH_IMAGE053
公式(2)
设数据对象的初始命中次数为1,若数据对象i被命中的次数为1,则说明数据对象i未被命中过,若数据对象i被命中的次数大于1,则说明数据对象i被命中过。
Figure DEST_PATH_IMAGE055
为该数据对象的大小,每个数据对象都保存该数据对象的信息素浓度、数据对象的大小、数据对象被创建的时间、数据对象被命中的次数等信息。在本实施例中,只增加这一段时间内被命中的数据对象的信息素浓度,而其他数据对象的信息素浓度会被逐渐挥发;并且为了替换出体积较大的数据对象,体积越大的数据对象的信息素挥发越快,从而使第一存储层中保存较多的数据对象从而提高命中率。
在本实施例中,通过预设更新间隔时间的方式使存储层内的数据对象的信息素浓度及时更新,避免每个数据对象的信息素浓度都逐渐增加,更新后,让这段时间里没有被命中的数据对象的信息素浓度衰减,便于及时从第一存储层中替换价值相对低的数据对象。
在上述图1提供的一种分层存储调度方法基础上,该方法还包括:
S145,清空M个蚂蚁的解集、禁忌表以及接受表。
为了便于下次对数据请求时调用蚁群算法,因此在将第一目标数据对象插入第一存储层,第一目标数据对象在第一存储层里完成对请求的响应后,要清空当前M个蚂蚁的解集,禁忌表及接收表。
在上述图1提供的一种分层存储调度方法基础上,上述方法中S140,将第一目标数据对象插入第一存储层中之后,还包括:
S150,初始化第一存储层中第一目标数据对象的信息素浓度。
可选地,若当前第一存储层中的空闲存储空间大小满足存储空间阈值,则直接插入第一目标数据对象,并在插入后初始化该第一目标数据对象的信息,该数据对象在蚁群算法中的信息素浓度被初始化为一个固定的初始值;若空闲存储空间未达到存储空间阈值,运用蚁群算法将第一目标数据对象插入第一存储层中之后,也需要初始化该第一目标数据对象的信息素浓度,便于后续数据请求时重新运用蚁群算法。
在本实施例中,通过对插入仅第一目标数据对象的信息素浓度进行初始化,使得后续再进行数据请求调用蚁群算法时不会受之前的信息干扰,使得计算结果更为准确。
在上述实施例的基础上,在S140,将第一目标数据对象插入第一存储层中之后,还包括:
S160,更新第一目标数据对象加入第一存储层的时间信息。
当第一目标数据对象插入第一存储层中之后,作为第一存储层中的数据对象,更新当前时间为该第一目标数据对象进入存储系统中被创建的时间。
在本实施例中,通过在高性能的存储层中插入需要访问的数据对象后,及时更新数据对象的时间信息,便于在存储系统下次被访问时对数据对象的价值进行准确判断。
为了更清楚地说明基于替换算法的分层存储调度方法的流程,结合附图4进行说明。图4为本发明提供的基于替换算法的分层存储调度流程示意图。如图4所示,在本实施例中,分布式存储系统分为两层,第一存储层采用高性能且价格比较昂贵的存储设备,第二存储层采用容量大但价格低廉的存储设备,其中,第一存储层的数据对象的读写速率大于第二存储层的数据对象的读写速率。在方法开始后:
S1002,接收客户端发送的数据访问请求。
在本方法中,在需要请求分布式存储系统中的数据对象时,分布式存储系统首先接收客户端发送的数据访问请求。本步骤中分布式存储系统客户端发送的数据访问请求与S110过程类似,在此不再赘述。
S1004,判断第一存储层中是否具有数据访问请求命中的第一目标数据对象。
根据数据访问请求的地址判断当前数据访问请求所需要请求的数据是否存在于存储系统的第一存储层,即判断第一存储层中是否具有数据访问请求命中的第一目标数据对象。如果该数据访问请求需要访问的数据存储于第一存储层中,直接将数据访问请求需要访问的数据对象返回至应用层,直接执行S1012。
S1006,判断第二存储层中是否具有数据访问请求命中的第一目标数据对象。
若分布式存储系统中的第一存储层中不具有数据访问请求命中的第一目标数据对象,则判断第二存储层中是否具有数据访问请求命中的第一目标数据对象。如果第二存储层中不具有数据访问请求命中的第一目标数据对象,则结束该方法。
S1008,判断第一存储层的空闲存储空间是否达到预设的存储空间阈值。
当第一存储层中不具有数据访问请求命中的第一目标数据对象,但第二存储层中具有第一目标数据对象时,则判断第一存储层的空闲存储空间是否达到预设的存储空间阈值。该步骤的具体判断步骤与S120过程类似,在此不再赘述。如果第一存储层的空闲存储空间达到预设的存储空间阈值,则直接执行S1010。
S1009,执行替换算法。
如果第一存储层的空闲存储空间没有达到预设的存储空间阈值,则执行替换算法,从第一存储层中迁出价值低的数据对象,再将该数据访问请求对应的数据对象从第二存储层中提升插入至第一存储层中。
S1010,将第一目标数据对象插入第一存储层中。
将第一目标数据对象插入第一存储层中后,从第一存储层直接返回数据对象至应用层。
S1012,更新第一目标数据对象加入第一存储层的时间信息。
本步骤更新第一目标数据对象加入第一存储层的时间信息与S160过程类似,在此不再赘述。
在本实施例中,该基于替换算法的分层存储调度方法的流程中,可以以插件的形式灵活插入合适的替换算法,而不影响分层存储调度的基本流程,使得需要访问的数据对象快速被响应,增加数据对象命中率。
为了清楚说明上述流程图中执行的替换算法流程,结合附图5进行说明。图5为本发明提供的另一种蚁群算法的流程示意图。如图5所示,从算法开始:
S2001,蚁群算法是否完成初始化。
首先,在蚁群算法执行之前,需要判断蚁群算法是否完成初始化,即判断蚁群算法中的蚂蚁参数是否初始化为一个固定的初始值,蚂蚁的禁忌表、解集、接收表是否都清空。
S2002,初始化蚁群算法。
如果蚁群算法没有完成初始化,需要初始化蚁群算法,将蚁群算法中的蚂蚁参数初始化为一个固定的初始值,将蚂蚁的禁忌表、解集、接收表都清空。
S2003,信息素距离上次更新是否超过预设时长。
S2004,每间隔预设时长,根据预设的信息素挥发系数以及第一存储层中各个数据对象被命中的次数,更新第一存储层中各个数据对象的信息素浓度。
并且为了只增加这一段时间内被命中的数据对象的信息素浓度,而其他数据对象的信息素浓度会被逐渐挥发,需要每间隔预设时长更新各个数据对象的信息素浓度。所以需要判断信息素浓度距离上次更新是否超过预设时长。如果超过,则说明需要更新,此时执行S2004,该步骤过程与S350过程类似,在此不再赘述。如果信息素浓度距离上次更新没有超过预设时长,则使用该信息素浓度执行后续蚁群算法。
S2005,是否有蚂蚁未选择数据对象。
S2006,是否有数据对象未统计。
在完成蚁群算法初始化之后,需要则判断是否有蚂蚁没有完成对第一存储层中数据对象的选择,如果有,则继续判断是否有数据对象没有被统计。如果有数据对象没有被蚂蚁统计,则执行S2007。如果每个蚂蚁完成了对每个数据对象的选择,则执行S2008。
S2007,根据每个蚂蚁的禁忌表、每个蚂蚁的接受表以及第一存储层中各个数据对象的信息素浓度,计算第一存储层中各个数据对象被每个蚂蚁选中的概率。
在蚁群算法执行时,需要计算第一存储层中每个数据对象对每个蚂蚁选中的概率,即蚁群算法会遍历每个蚂蚁对所有数据对象的计算结果。本步骤过程与S310过程类似,在此不再赘述。
S2008,根据各个数据对象被每个蚂蚁选中的概率,将各个数据对象中每个蚂蚁选中的数据对象加入每个蚂蚁的禁忌表中。
在每个蚂蚁都完成对每个数据对象的概率计算后,根据计算得到的第一存储层中各个数据被每个蚂蚁选中的概率,选中需要存放至禁忌表中的数据对象。本步骤过程与S320过程类似,在此不再赘述。
S2009,根据禁忌表中的数据对象、第一存储层中各数据对象的大小,以及第一存储层的存储空间大小,从第一存储层中已存储的数据对象确定每个蚂蚁解集中的数据对象。
S2010,将每个蚂蚁确定的数据对象加入每个蚂蚁的解集中。
每个蚂蚁根据禁忌表中的数据对象的大小、第一存储层中各数据对象的大小,以及第一存储层的存储空间大小,从第一存储层中已存储的数据对象确定每个蚂蚁解集中数据对象,并将每个蚂蚁确定的数据对象加入每个蚂蚁的解集中。本步骤过程与S330、S340过程类似,在此不再赘述。
S2011,根据预设的M个蚂蚁的解集中各个选中数据对象的价值,分别计算M个蚂蚁的总价值。
每个蚂蚁通过对分布式存储系统中的数据对象进行选择,通过数据对象的价值来决定哪个数据对象被替换出第一存储层,释放它占用的资源给此次需要访问的数据对象。本步骤过程与S210过程类似,在此不再赘述。
S2012,从M个蚂蚁中确定总价值最大的目标蚂蚁。
从M个蚂蚁中每个蚂蚁的解集中数据对象的总价值来确定总价值最大的目标蚂蚁。本步骤过程与S220过程类似,在此不再赘述。
S2013,从第一存储层中确定未被目标蚂蚁选中的数据对象为第二目标数据对象。
当确定了第一存储层中总价值最大的目标蚂蚁之后,从第一存储层中确定未被目标蚂蚁选中的数据对象为第二目标数据对象。本步骤过程与S230过程类似,在此不再赘述。
S2014,将第二目标数据对象迁出第一存储层。
根据蚁群算法的计算结果,将第二目标数据对象迁出第一存储层,第二目标数据对象为存储价值较小的数据对象,以便于把第一存储层的空间留给需要访问的数据。
S2015,清空M个蚂蚁的解集、禁忌表以及接受表。
为了便于下次对数据请求时调用蚁群算法,需要清空M个蚂蚁的解集、禁忌表以及接受表。本步骤过程与S145过程类似,在此不再赘述。
S2016,将第一目标数据对象插入第一存储层中。
将第一目标数据对象从第二存储层迁出插入至第一存储层中,则第一目标数据对象就可以在高性能的存储介质中被访问,响应速度就会加快。
S2017,初始化第一存储层中第一目标数据对象的信息素浓度。
当第一目标数据对象插入第一存储层之后,需要初始化第一存储层中第一目标数据对象的信息素浓度。本步骤过程与S150过程类似,在此不再赘述。
在本实施例中,通过使用该蚁群算法充当替换算法,可以提高存储系统中存储对象的命中率,增加存储性能。
并且,为了说明本发明提供的使用了蚁群算法的分层存储调度方法相对于运用传统算法的性能提升效果,结合附图6进行说明。图6为本发明提供的一种基于蚁群算法的分层存储调度方法相对于传统算法的性能提升结果示意图。如附图6所示,将对小文件对象4KB,大文件对象4MB在不同算法下被缓存命中的命中率进行对比分析。可见,SHCCA(Storage Hierarchical Area Ant Colony Algorithm,基于蚁群算法的分层存储调度方法)对大文件存储时相较于使用传统的2Q算法、LRU算法,命中率均有提升。同时可以看出,该算法在在海量小文件的场景下也有明显的提升。由于海量小文件会产生随机高频次的I/O读写,对于传统存储系统中,性能不高;例如一个4M的大文件会占用一条存储链路,但是同时存储8个512k的小文件会占用8条链路,小文件相对于大文件更加占用网络负载。但是使用了蚁群算法的分层存储调度方法,可以让高性能的存储层里不常用的大文件及时迁移出,让高性能的存储层中尽可能地存放更多的数据对象,则小文件就可以被替换至高性能的存储层中被及时响应,提升命中率。
图7为本发明提供的一种分层存储调度装置的示意图,如图7所示,一种分层存储调度装置,该装置包括:
接收模块1000,用于接收客户端发送的数据访问请求;
判断模块2000,用于若第一存储层中不具有数据访问请求命中的第一目标数据对象,但第二存储层中具有第一目标数据对象,则判断第一存储层的空闲存储空间是否达到预设的存储空间阈值;其中,第一存储层的数据读写速率大于第二存储层的数据读写速率;
处理模块3000,用于若空闲存储空间未达到存储空间阈值,则采用预设的蚁群算法,从第一存储层中确定待迁移的第二目标数据对象;
插入模块4000,用于将第二目标数据对象迁出第一存储层,并将第一目标数据对象插入第一存储层中。
可选地,该处理模块3000,具体还用于根据预设的M个蚂蚁的解集中各个选中数据对象的价值,分别计算M个蚂蚁的总价值;其中,M为大于或等于2的整数,选中数据对象的价值用于表征:选中数据对象被外部的数据访问请求所命中的价值;从M个蚂蚁中确定总价值最大的目标蚂蚁;从第一存储层中确定未被目标蚂蚁选中的数据对象为第二目标数据对象。
可选地,该处理模块4000,具体还用于根据每个蚂蚁的禁忌表、每个蚂蚁的接受表以及第一存储层中各个数据对象的信息素浓度,计算第一存储层中各个数据对象被每个蚂蚁选中的概率;其中,每个蚂蚁的禁忌表中的数据对象为已被每个蚂蚁选中的数据对象,每个蚂蚁的接受表中的数据对象为第一存储层中已存储数据对象中除去加入禁忌表的数据对象之外的其它数据对象;根据各个数据对象被每个蚂蚁选中的概率,将概率最大的数据对象加入每个蚂蚁的禁忌表中;根据概率最大的数据对象、第一存储层中各数据对象的大小,以及第一存储层的存储空间大小,从第一存储层中已存储的数据对象确定每个蚂蚁选中的数据对象;将每个蚂蚁选中的数据对象加入每个蚂蚁的解集中。
可选地,该处理模块4000,具体还用于每间隔预设时长,根据预设的信息素挥发系数以及第一存储层中各个数据对象被命中的次数,更新第一存储层中各个数据对象的信息素浓度。
可选地,该装置还包括初始模块,该初始模块,用于清空M个蚂蚁的解集、禁忌表以及接受表。
可选地,该初始模块,具体还用于初始化第一存储层中第一目标数据对象的信息素浓度。
可选地,该初始模块,具体还用于更新第一目标数据对象加入第一存储层的时间信息。
以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个数字信号处理器(Digital Singnal Processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central Processing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(System-on-a-Chip,简称SOC)的形式实现。
图8为本发明提供的一种分层存储调度设备的示意图,该设备可以是具备计算处理功能的计算设备或服务器。
该分层存储调度设备10包括:处理器11、存储介质12和总线13,存储介质12存储有处理器11可执行的机器可读指令,当该分层存储调度设备10执行时,处理器11与存储介质12之间通过总线13通信,处理器11执行机器可读指令,以执行上述方法实施例。具体实现方式和技术效果类似,这里不再赘述。
可选地,本发明还提供一种程序产品,例如计算机可读存储介质,包括程序,该程序在被处理器执行时用于执行上述方法实施例。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:Processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种分层存储调度方法,其特征在于,所述方法包括;
接收客户端发送的数据访问请求;
若第一存储层中不具有所述数据访问请求命中的第一目标数据对象,但第二存储层中具有所述第一目标数据对象,则判断所述第一存储层的空闲存储空间是否达到预设的存储空间阈值;其中,所述第一存储层的数据读写速率大于所述第二存储层的数据读写速率;
若所述空闲存储空间未达到所述存储空间阈值,则采用预设的蚁群算法,从所述第一存储层中确定待迁移的第二目标数据对象;
将所述第二目标数据对象迁出所述第一存储层,并将所述第一目标数据对象插入所述第一存储层中。
2.根据权利要求1所述的方法,其特征在于,所述采用预设的蚁群算法,从所述第一存储层中确定待迁移的第二目标数据对象,包括:
根据预设的M个蚂蚁的解集中各个选中数据对象的价值,分别计算所述M个蚂蚁的总价值;其中,M为大于或等于2的整数,所述选中数据对象的价值用于表征:所述选中数据对象被外部的数据访问请求所命中的价值;
从所述M个蚂蚁中确定总价值最大的目标蚂蚁;
从所述第一存储层中确定未被所述目标蚂蚁选中的数据对象为所述第二目标数据对象。
3.根据权利要求2所述的方法,其特征在于,所述根据预设的M个蚂蚁的解集中各个选中数据对象的价值,分别计算所述M个蚂蚁的总价值之前,所述方法还包括:
根据每个蚂蚁的禁忌表、所述每个蚂蚁的接受表以及所述第一存储层中各个数据对象的信息素浓度,计算所述第一存储层中各个数据对象被所述每个蚂蚁选中的概率;其中,所述每个蚂蚁的禁忌表中的数据对象为已被所述每个蚂蚁选中的数据对象,所述每个蚂蚁的接受表中的数据对象为所述第一存储层中已存储数据对象中除去加入禁忌表的数据对象之外的其它数据对象;
根据所述各个数据对象被所述每个蚂蚁选中的概率,将所述各个数据对象中所述每个蚂蚁选中的数据对象加入所述每个蚂蚁的禁忌表中;
根据所述禁忌表中的数据对象的大小、所述第一存储层中各数据对象的大小,以及所述第一存储层的存储空间大小,从所述第一存储层中已存储的数据对象确定所述每个蚂蚁解集中的数据对象;
将所述每个蚂蚁确定的数据对象加入所述每个蚂蚁的解集中。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
每间隔预设时长,根据预设的信息素挥发系数以及所述第一存储层中各个数据对象被命中的次数,更新所述第一存储层中各个数据对象的信息素浓度。
5.根据权利要求2所述的方法,其特征在于,所述将所述第二目标数据对象迁出所述第一存储层之后,所述方法还包括:
清空所述M个蚂蚁的解集、禁忌表以及接受表。
6.根据权利要求1所述的方法,其特征在于,所述将所述第一目标数据对象插入所述第一存储层中之后,所述方法还包括:
初始化所述第一存储层中所述第一目标数据对象的信息素浓度。
7.根据权利要求1-6中任一所述的方法,其特征在于,所述将所述第一目标数据对象插入所述第一存储层中之后,所述方法还包括:
更新所述第一目标数据对象加入所述第一存储层的时间信息。
8.一种分层存储调度装置,其特征在于,所述装置包括:
接收模块,用于接收客户端发送的数据访问请求;
判断模块,用于若第一存储层中不具有所述数据访问请求命中的第一目标数据对象,但第二存储层中具有所述第一目标数据对象,则判断所述第一存储层的空闲存储空间是否达到预设的存储空间阈值;其中,所述第一存储层的数据读写速率大于所述第二存储层的数据读写速率;
处理模块,用于若所述空闲存储空间未达到所述存储空间阈值,则采用预设的蚁群算法,从所述第一存储层中确定待迁移的第二目标数据对象;
插入模块,用于将所述第二目标数据对象迁出所述第一存储层,并将所述第一目标数据对象插入所述第一存储层中。
9.一种分层存储调度设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的程序指令,当分层存储调度设备运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述程序指令,以执行如权利要求1至7任一所述的分层存储调度方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至7任一所述的分层存储调度方法的步骤。
CN202210266645.4A 2022-03-18 2022-03-18 一种分层存储调度方法、装置、设备及存储介质 Pending CN114356247A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210266645.4A CN114356247A (zh) 2022-03-18 2022-03-18 一种分层存储调度方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210266645.4A CN114356247A (zh) 2022-03-18 2022-03-18 一种分层存储调度方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN114356247A true CN114356247A (zh) 2022-04-15

Family

ID=81095083

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210266645.4A Pending CN114356247A (zh) 2022-03-18 2022-03-18 一种分层存储调度方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN114356247A (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106598500A (zh) * 2016-12-16 2017-04-26 郑州云海信息技术有限公司 一种分层存储动态迁移方法
CN108900570A (zh) * 2018-05-30 2018-11-27 南京邮电大学 一种基于内容价值的缓存替换方法
CN109241022A (zh) * 2018-09-11 2019-01-18 天津理工大学 一种基于蓝光存储的档案管理系统及其蚁群搜索算法
US20190243570A1 (en) * 2018-02-05 2019-08-08 Micron Technology, Inc. Predictive Data Orchestration in Multi-Tier Memory Systems
CN111209997A (zh) * 2018-11-22 2020-05-29 北京国双科技有限公司 数据分析方法及装置
CN113590045A (zh) * 2021-08-03 2021-11-02 中国联合网络通信集团有限公司 数据分层式存储方法、装置及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106598500A (zh) * 2016-12-16 2017-04-26 郑州云海信息技术有限公司 一种分层存储动态迁移方法
US20190243570A1 (en) * 2018-02-05 2019-08-08 Micron Technology, Inc. Predictive Data Orchestration in Multi-Tier Memory Systems
CN108900570A (zh) * 2018-05-30 2018-11-27 南京邮电大学 一种基于内容价值的缓存替换方法
CN109241022A (zh) * 2018-09-11 2019-01-18 天津理工大学 一种基于蓝光存储的档案管理系统及其蚁群搜索算法
CN111209997A (zh) * 2018-11-22 2020-05-29 北京国双科技有限公司 数据分析方法及装置
CN113590045A (zh) * 2021-08-03 2021-11-02 中国联合网络通信集团有限公司 数据分层式存储方法、装置及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
贾磊,张新有: "ACACRA:一种新的网络缓存替换算法", 《小型微型计算机系统》 *

Similar Documents

Publication Publication Date Title
CN105205014B (zh) 一种数据存储方法和装置
Rizzo et al. Replacement policies for a proxy cache
US8732406B1 (en) Mechanism for determining read-ahead length in a storage system
WO2023050712A1 (zh) 一种深度学习业务的任务调度方法及相关装置
Grimsrud et al. Multiple prefetch adaptive disk caching
US20110145508A1 (en) Automatic determination of read-ahead amount
CN111737168A (zh) 一种缓存系统、缓存处理方法、装置、设备及介质
CN112416368B (zh) 缓存部署与任务调度方法、终端和计算机可读存储介质
US7895247B2 (en) Tracking space usage in a database
CN107301090B (zh) 在存储服务器中为应用设置数据处理路径的方法及装置
CN112148690A (zh) 一种文件缓存方法、文件访问请求处理方法及装置
CN110362426B (zh) 一种面向突发性负载的选择性副本实现方法及系统
CN109165096A (zh) web集群的缓存利用系统及方法
WO2020076393A1 (en) Stream allocation using stream credits
CN106874332A (zh) 数据库访问方法和装置
CN111427920B (zh) 数据采集方法、装置、系统、计算机设备及存储介质
CN111913913B (zh) 访问请求的处理方法和装置
CN117130792A (zh) 缓存对象的处理方法、装置、设备及存储介质
CN114253458A (zh) 内存缺页异常的处理方法、装置、设备及存储介质
CN114356247A (zh) 一种分层存储调度方法、装置、设备及存储介质
CN110708361A (zh) 数字内容发布用户的等级确定系统、方法、装置及服务器
CN116027982A (zh) 数据处理方法、设备及可读存储介质
CN112506875B (zh) 文件存储方法、相关装置及文件存储系统
CN113805864A (zh) 一种项目工程的生成方法、装置、电子设备及存储介质
CN108520053B (zh) 一种基于数据分布的大数据查询方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20220415

RJ01 Rejection of invention patent application after publication