CN106528451A - 针对小文件的二级缓存预取的云存储框架及构建方法 - Google Patents
针对小文件的二级缓存预取的云存储框架及构建方法 Download PDFInfo
- Publication number
- CN106528451A CN106528451A CN201611001521.4A CN201611001521A CN106528451A CN 106528451 A CN106528451 A CN 106528451A CN 201611001521 A CN201611001521 A CN 201611001521A CN 106528451 A CN106528451 A CN 106528451A
- Authority
- CN
- China
- Prior art keywords
- cache module
- data block
- objects
- memory node
- threshold value
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了针对小文件的二级缓存预取的云存储框架及构建方法,其中云存储框架包括:对象存储器、关联性计算模块、数据合并模块、存储节点缓存模块和代理节点缓存模块。本发明首先计算不同对象之间的关联性,并将关联度高的对象合并为一个数据集合,通过对这些数据集合进行缓存来达到数据预取的目的。一方面可以将随机磁盘访问转变为连续磁盘访问,提高存储系统的效率;另一方面通过一次性将对象集合转入代理节点缓存模块进行预读,能够节省网络开销;另外将关联度高的小文件合并也减少了元数据的数量,减少对象访问时元数据的操作时间。
Description
技术领域
本发明涉及云计算技术领域,特别涉及针对小文件的二级缓存预取的云存储框架及构建方法。
背景技术
以下对本发明的相关技术背景进行说明,但这些说明并不一定构成本发明的现有技术。
Swift(Openstack Object Storage)是由全球第二大数据中心的Rackspace开发,构架中主要由代理服务(代理服务器)、账户服务(Account Server)、容器服务(ContainerServer)、对象服务(对象存储器)四大部分组成。Swift搭建在比较便宜的标准硬件设备上,出于成本的考虑并没有使用RAID(磁盘冗余阵列),通过软件层面引入一致性哈希和数据容灾技术。Swift支持多租户模式、容器和对象的读写操作。为了得到更高的可用性和扩展性,其牺牲一定的数据一致性,适合解决互联网的应用场景下非结构化数据存储问题。其具有稳定、扩展性强、成本低等特点,受到越来越多的人重视。
但是Swift在存储节点中通过操作系统的VFS层调用本地文件系统对文件进行磁盘读写操作。对于本地文件系统,无论是读操作还是写操作都要经过文件的元数据处理,随着存储小文件数量的增加,读取一次小文件是元数据处理所占的实践比例越来越大,最终导致读写效率偏低。虽然操作系统提供了对元数据的缓存机制,但在面对小文件的时候,由于其数量众多,在内存中缓存的元数据只占总数量的一小部分。随机访问的情况下,其缓存命中率较低。并且由于在云存储系统外往往有CDN服务器存在,其具备缓存功能,基于时间局部性的文件数据往往都通过外部的CDN服务器的缓存中读取,而通过存储节点的访问请求这种时间局部性被进一步削弱,其元数据缓存命中率进一步降低。
发明内容
本发明的目的在于提出针对小文件的二级缓存预取的云存储框架及构建方法,能够改善磁盘的I/O瓶颈,节省网络开销,提高存储系统的效率。
根据本发明的一个方面,提供针对小文件的二级缓存预取的云存储框架构建方法,包括如下步骤:
S1、遍历对象存储器中的所有对象以及每个对象的访问记录,以未合并进入数据块的任意一个对象为核心对象;将与核心对象的欧氏距离小于距离半径阈值的所有对象合并为一个数据块;
S2、针对所有数据块中的每个对象,若对象的被访问次数不小于第一次数阈值,将对象所在的数据块转入存储节点缓存模块;
S3、针对存储节点缓存模块中的每个对象,若对象的被访问次数不小于第二次数阈值、和/或对象所在数据块中所有对象的欧氏距离总和小于距离总和阈值,将对象所在数据块转入代理节点缓存模块;
其中,存储节点缓存模块设置在存储节点服务器与代理服务器之间,代理节点缓存模块设置在代理服务器与客户端之间;
对象存储器、存储节点缓存模块和存储节点服务器设置在存储层,代理服务器和代理节点缓存模块设置在代理层,客户端设置在客户层;
欧氏距离总和是指:数据块中核心对象与数据块中其他对象之间的欧氏距离的总和。
优选地,第一次数阈值为1,和/或第二次数阈值为2。
优选地,按照如下步骤确定任意两个对象之间的欧式距离:
设两个对象的访问时间分别为A=(A1,A2,...,Am)和B=(B1,B2,...,Bn),tth为访问时间距离的阈值,当两个对象的访问时间小于tth时认为该两个对象的访问时间相近;
依次将|Ai-Bj|<tth的访问记录选出,形成两组访问时间相近的时间序列a=(a1,a2,...,ak)和b=(b1,b2,...,bk);A和B中被选出的访问记录之间的欧式距离D1如公式1所示:
A和B中没被选出的访问记录之间的欧式距离D2如公式2所示:
D2=M×(m+n-2k) 公式2
两个对象的欧氏距离D如公式3所示:
式中,m和n分别为两个对象的访问次数;k为被选出的访问记录的个数;i为时间序列a中访问记录的序号;j为时间序列b中访问记录的序号。
优选地,存储节点缓存模块包括FIFO队列和LRU队列;步骤S2包括:
S21、针对所有数据块中的每个对象,若对象的被访问次数不小于第一次数阈值,将对象所在的数据块转入存储节点缓存模块的FIFO队列中;
S21、若对象的被访问次数不小于第二次数阈值,将对象所在的数据块从FIFO队列转入LRU队列。
优选地,步骤S3中将所述对象所在数据块转入代理节点缓存模块之前进一步包括:
S30、确定所述对象的代理缓存价值。
优选地,步骤S3中将对象所在数据块转入代理节点缓存模块具体为:
当对象的代理缓存价值大于预设的缓存价值阈值时,将对象所在数据块转入代理节点缓存模块。
优选地,步骤S3中将对象所在数据块转入代理节点缓存模块具体为:
当对象的代理缓存价值大于最低缓存价值时,以对象所在数据块替换最低缓存价值对应的数据块,并将最低缓存价值对应的数据块从代理节点缓存模块中转出;
其中,最低缓存价值是指代理节点缓存模块中所有对象的代理缓存价值中的最小值。
优选地,按照如下公式确定对象的代理缓存价值H:
式中,f为对象的被访问次数;cost为缓存服务器与对象存储节点之间的网络延迟;size为对象的文件大小;L为增长因子,其初值为0,当代理节点缓存模块中有对象被转出时,L的取值更新为被转出对象的代理缓存价值;tnow为对象的当前访问时间,tlast为对象的上次访问时间。
根据本发明的另一个方面,提供针对小文件的二级缓存预取的云存储框架,包括:对象存储器、关联性计算模块、数据合并模块、存储节点缓存模块和代理节点缓存模块;其中,
关联性计算模块,遍历对象存储器中的所有对象,以未合并进入数据块的任意一个对象为核心对象,确定核心对象与其他任意一个对象的欧氏距离;
数据合并模块,将欧氏距离小于距离半径阈值的对象合并为一个数据块;针对所有数据块中的每个对象,若对象的被访问次数不小于第一次数阈值,数据合并模块将对象所在的数据块转入存储节点缓存模块;针对存储节点缓存模块中的每个对象,若对象的被访问次数不小于第二次数阈值、和/或对象所在数据块中所有对象的欧氏距离总和小于距离总和阈值,数据合并模块将对象所在数据块转入代理节点缓存模块;
存储节点缓存模块,设置在存储节点服务器与代理服务器之间,代理节点缓存模块设置在代理服务器与客户端之间;关联性计算模块、数据合并模块、对象存储器、存储节点缓存模块和存储节点服务器设置在存储层,代理服务器和代理节点缓存模块设置在代理层,客户端设置在客户层;
欧氏距离总和是指:数据块中核心对象与数据块中其他对象之间的欧氏距离的总和。
优选地,存储节点缓存模块包括FIFO队列和LRU队列;针对所有数据块中的每个对象,
若对象的被访问次数不小于第一次数阈值,对象所在的数据块存储在存储节点缓存模块的FIFO队列中;
若对象的被访问次数不小于第二次数阈值,对象所在的数据块存储在存储节点缓存模块的LRU队列中。
本发明通过计算不同对象之间的关联性,将关联度高的对象合并为一个数据集合,通过对这些数据集合进行缓存来达到数据预取的目的。一方面可以将随机磁盘访问转变为连续磁盘访问,提高存储系统的效率;另一方面通过一次性将对象集合转入外部缓存服务进行预读,节省网络开销。
附图说明
通过以下参照附图而提供的具体实施方式部分,本发明的特征和优点将变得更加容易理解,在附图中:
图1是根据本发明的针对小文件的二级缓存预取的云存储框架构建方法流程图;
图2是根据本发明的针对小文件的二级缓存预取的云存储框架示意图;
图3是本发明数据块中对象索引字段的示意图;
图中,10为数据库中的对象,20为数据块。
具体实施方式
下面参照附图对本发明的示例性实施方式进行详细描述。对示例性实施方式的描述仅仅是出于示范目的,而绝不是对本发明及其应用或用法的限制。
图1示出了根据本发明的针对小文件的二级缓存预取的云存储框架构建方法流程图。在步骤S1中首先遍历对象存储器中的所有对象以及每个对象的访问记录,计算不同对象之间的关联性,并将关联度高的对象合并为一个数据集合。例如利用主题模型中的概率潜在语义分析(Probabilistic Latent Semantic Analysis,PLSA),以访问时间是否接近、或者对象主题是否接近等作为考察因素来计算对象关联度。本领域技术人员可以实际情况选择表征对象关联性的指标,本实施例中以欧氏距离作为表征对象关联性的指标。具体地:遍历对象存储器中的所有对象以及每个对象的访问记录,以未合并进入数据块的任意一个对象为核心对象,将与该核心对象的欧氏距离小于距离半径阈值的所有对象合并为一个数据块。
关联度较高的对象可以认为是访问时间较为相近的对象,对象关联性可以理解为多维空间点的聚类问题。因此,可以以对象每次被访问次数作为维度求两个对象的欧式距离,欧式距离越小,表明二者的关联性越高。由于关联性高的两个对象并不是100%同时被访问,如果直接根据每次的被访问记录求欧氏距离将造成很大的误差,所以需要进行时间校对。优选地,可以按照如下步骤确定任意两个对象之间的欧式距离:
设两个对象的访问时间分别为A=(A1,A2,...,Am)和B=(B1,B2,...,Bn),tth为访问时间距离的阈值,当两个对象的访问时间小于tth时认为该两个对象的访问时间相近;
依次将|Ai-Bj|<tth的访问记录选出,形成两组访问时间相近的时间序列a=(a1,a2,...,ak)和b=(b1,b2,...,bk);A和B中被选出的访问记录之间的欧式距离D1如公式1所示:
A和B中没被选出的访问记录之间的欧式距离D2如公式2所示:
D2=M×(m+n-2k) 公式2
两个对象的欧氏距离D如公式3所示:
式中,m和n分别为两个对象的访问次数;k为被选出的访问记录的个数;i为时间序列a中访问记录的序号;j为时间序列b中访问记录的序号。
通过分别计算两个对象的访问时间小于tth的访问记录之间的欧式距离D1、以及两个对象的访问时间不小于tth的访问记录之间的欧式距离D2,能够更准确第确定两个对象之间的关联度,提高同一个数据库中各个对象的关联度。
S2、针对所有数据块中的每个对象,若该对象的被访问次数不小于第一次数阈值,将该对象所在的数据块转入存储节点缓存模块。通过将关联度高的对象合并保存在一个数据块中,能够减少对象文件的数量,提高本地文件系统的索引速度,减少对元数据的操作开销,从而增加小对象的访问效率,并将随机的磁盘读写转变为对数据块的一次读写,借此改善磁盘I/O瓶颈。
图3示出了本发明优选实施例中对象索引字段的示意图。通过数据块20的对象索引字段可以查找到相应的对象10。在创建对象索引字段时,可以按照如下方法进行:关联度高的对象合并保存在一个数据块中,当数据块的缓冲区填满之后,锁死缓冲器,将其写入一个数据块DataBlock中,并为其赋予一个唯一的DataBlock ID,将其一次性写入到磁盘中,并在对象的索引中添加Block ID、flag、Offset、dataLength字段。其中,Flag:表示该对象是否处于某个合并数据块中。Block ID正常情况下表示对象所在的DataBlock的ID号;Offset表示对象数据在DataBlock中的偏移量;Metadata length表示对象的属性信息长度;Data length表示对象的数据长度。
第一次数阈值可以根据存储节点缓存模块的缓存空间、对象文件的大小、以及缓存与去的其他要求等因素进行设置。当存储节点缓存模块的缓存空间较大时,能够同时缓存较多的数据块,此时可以适当减小第一次数阈值的取值,使更多的数据块被转入存储节点缓存模块;当存储节点缓存模块的缓存空间较小时,由于缓存空间有限,可以适当增大第一次数阈值的取值,使关联度更高的数据块被转入存储节点缓存模块。例如当第一次数阈值为1时,针对所有数据块中的每个对象,若该对象被首次访问,则将该对象所在的数据块转入存储节点缓存模块。
在本发明的一个优选实施例中,存储节点缓存模块包括FIFO队列和LRU队列。步骤S2包括:
S21、针对所有数据块中的每个对象,若该对象的被访问次数不小于第一次数阈值,将该对象所在的数据块转入存储节点缓存模块的FIFO队列中;
S21、若该对象的被访问次数不小于第二次数阈值,将该对象所在的数据块从FIFO队列转入LRU队列。
由于服务器中存储容量的限制,有必要使用一定的替换策略对存储节点缓存模块中的缓存数据块进行更新,存储节点的替换算法可以采用FIFO(First Input FirstOutput,先入先出)算法和LRU(Least Recently Used,近期最少使用)算法结合的2Q替换算法。在上述实施例中,FIFO队列可以采用FIFO算法进行管理,用于缓存当前的活跃数据块;LRU队列可以采用LRU算法进行管理,用于缓存多次访问的数据块。FIFO算法和LRU算法的算法原理为本领域常用技术手段,本发明对此不再赘述。
S3、针对存储节点缓存模块中的每个对象,若该对象的被访问次数不小于第二次数阈值、和/或对象所在数据块中所有对象的欧氏距离总和小于距离总和阈值,将该对象所在数据块转入代理节点缓存模块。
本发明中,存储节点缓存模块设置在存储节点服务器与代理服务器之间,代理节点缓存模块设置在代理服务器与客户端之间;对象存储器、存储节点缓存模块和存储节点服务器设置在存储层,代理服务器和代理节点缓存模块设置在代理层,客户端设置在客户层,如图2所示。
Swift中访问小对象请求由代理服务器向对象存储器转发,多次请求的发送消耗过多的网络资源以及对象存储器内部的业务处理(如计算Etag等)。通过一次性将整个数据块转入外部缓存服务进行预读,能够大大节省网络开销。
本发明中,可以仅以存储节点缓存模块中每个对象的被访问次数确定是否将该对象所在的数据块转入代理节点缓存模块中。被访问次数越多,表明该对象被访问的可能性越大,转入代理节点缓存模块缓存的缓存价值越大。
对于某些对象,短时间内被多次访问后,有可能之后的很长一段时间内没有再被访问,此时该对象的被访问次数仍然很高,但是缓存价值很低。为了避免这种情况的发生,可以仅以对象所在数据块中所有对象的欧氏距离总和确定是否将该对象所在的数据块转入代理节点缓存模块中。其中,欧氏距离总和是指数据块中核心对象与数据块中其他对象之间的欧氏距离的总和。数据块中所有对象的欧氏距离总和越大,表明内内部各个对象的关联度越高。Swift中访问小对象请求由代理服务器向对象存储器转发,多次请求的发送消耗过多的网络资源以及对象存储器内部的业务处理(如计算Etag等)。通过一次性将关联度更高的数据块转入外部缓存服务进行预读,能够大大节省网络开销。
为了进一步提高对象小对象的读取性能,也可以同时以对象的被访问次数和对象所在数据块中所有对象的欧氏距离总和确定是否将该对象所在的数据块转入代理节点缓存模块中。如此便可以既兼顾对象被再次读取的可能性和对象所在数据块的关联性,提高转入代理节点缓存模块中每个对象的缓存价值。
在代理节点缓存模块进行缓存时,缓存对象由存储节点缓存模块通过网络传输至代理节点缓存模块,数据的传输代价比较高,为了考虑其传输成本或者评估其缓存价值,步骤S3中将对象所在数据块转入代理节点缓存模块之前可以进一步包括:S30、确定该对象的代理缓存价值。
以下以GDS(Greedy Dual Size)算法为例详细说明代理缓存价值的计算方法。根据GDS算法,对象的理论代理缓存价值H1为:
式中,cost为缓存服务器与对象存储节点之间的网络延迟,cost越大,表示对象的重新取回成本越高,缓存价值也就越大,可以按照时间(例如ms)计算网络延迟,也可以按照对象的文件大小(例如kb)计算网络延迟。size为对象的文件大小,对象越大,占用的缓存空间越多,缓存的价值越低,其单位可以是kb。L为增长因子,其初值为0,当代理节点缓存模块中有对象被转出时,L的取值更新为被转出对象的代理缓存价值。
GDS算法的优点是简单易实现,但是没有考虑流行度等因素对缓存价值的影响,为,改善了GDS算法中流行度较高的对象会被过早替换出的缺点,可以引入对象的访问频率,使其更符合数据访问的时间局部性规律。引入对象的访问频率,对象的代理缓存价值H2为:
式中,f为对象的被访问次数。
通过引入访问频率增加热度较高的缓存对象的缓存价值。但是在面对短时间内的多次访问造成对象缓存价值高、之后长时间内没有再被访问的情况,上述算法无法考虑访问时间间隔对缓存价值的影响,容易使缓存价值较高、但访问时间间隔较大的对象长时间滞留于缓存中。如果一个对象的访问时间间隔越大,其缓存价值也就越小。根据访问时间间隔考量,可以按照如下公式确定对象的代理缓存价值H:
式中,tnow为对象的当前访问时间,tlast为对象的上次访问时间。
在一些实施例中,步骤S3中将对象所在数据块转入代理节点缓存模块具体为:当对象的代理缓存价值大于预设的缓存价值阈值时,将对象所在数据块转入代理节点缓存模块。如此,使得代理缓存价值达到一定程度时,该对象所在的数据块才会被转入代理节点缓存模块,降低缓存预取成本,提高服务器小对象文件的读取性能。
在另一些实施例中,步骤S3中将对象所在数据块转入代理节点缓存模块具体为:当对象的代理缓存价值大于最低缓存价值时,以对象所在数据块替换最低缓存价值对应的数据块,并将最低缓存价值对应的数据块从代理节点缓存模块中转出。其中,最低缓存价值是指代理节点缓存模块中所有对象的代理缓存价值中的最小值。如此,当缓存空间不足时,把代理缓存价值最低的对象对应的数据块替换出去。
本发明还提供了采用上述云存储框架构建方法的云存储框架,包括:对象存储器、关联性计算模块、数据合并模块、存储节点缓存模块和代理节点缓存模块;其中,
关联性计算模块,遍历对象存储器中的所有对象,以未合并进入数据块的任意一个对象为核心对象,确定核心对象与其他任意一个对象的欧氏距离;
数据合并模块,将欧氏距离小于距离半径阈值的对象合并为一个数据块;针对所有数据块中的每个对象,若该对象的被访问次数不小于第一次数阈值,数据合并模块将该对象所在的数据块转入存储节点缓存模块;针对存储节点缓存模块中的每个对象,若该对象的被访问次数不小于第二次数阈值、和/或该对象所在数据块中所有对象的欧氏距离总和小于距离总和阈值,数据合并模块将该对象所在数据块转入代理节点缓存模块;
存储节点缓存模块,设置在存储节点服务器与代理服务器之间,代理节点缓存模块设置在代理服务器与客户端之间;关联性计算模块、数据合并模块、对象存储器、存储节点缓存模块和存储节点服务器设置在存储层,代理服务器和代理节点缓存模块设置在代理层,客户端设置在客户层;
欧氏距离总和是指:数据块中核心对象与数据块中其他对象之间的欧氏距离的总和。
优选地,存储节点缓存模块包括FIFO队列和LRU队列;针对所有数据块中的每个对象,
若对象的被访问次数不小于第一次数阈值,该对象所在的数据块存储在存储节点缓存模块的FIFO队列中;
若所述对象的被访问次数不小于第二次数阈值,对象所在的数据块存储在存储节点缓存模块的LRU队列中。
本发明的技术方案中,接收到访问请求时,首先从代理节点缓存模块中数据块的对象索引字段中查找待访问对象,若代理节点缓存模块命中该待访问对象,直接从代理节点缓存模块中读取该对象;若代理节点缓存模块没有命中该对象,则从存储节点缓存模块中数据块的对象索引字段中查找待访问对象,若存储节点缓存模块命中该待访问对象,从存储节点缓存模块中读取该对象;若存储节点缓存模块未命中该待访问对象,则从对象存储器中读取该待访问对象。
与现有技术相比,本发明不仅能够将随机磁盘访问转变为连续磁盘访问,提高存储系统的效率,还能一次性将关联度较高的对象集合转入代理节点缓存模块进行预读,节省网络开销,另外小对象文件的合并也减少了元数据的数量,减少了在对象访问时元数据的操作时间。
虽然参照示例性实施方式对本发明进行了描述,但是应当理解,本发明并不局限于文中详细描述和示出的具体实施方式,在不偏离权利要求书所限定的范围的情况下,本领域技术人员可以对所述示例性实施方式做出各种改变。
Claims (10)
1.针对小文件的二级缓存预取的云存储框架构建方法,其特征在于包括如下步骤:
S1、遍历对象存储器中的所有对象以及每个对象的访问记录,以未合并进入数据块的任意一个对象为核心对象;将与所述核心对象的欧氏距离小于距离半径阈值的所有对象合并为一个数据块;
S2、针对所有数据块中的每个对象,若所述对象的被访问次数不小于第一次数阈值,将所述对象所在的数据块转入存储节点缓存模块;
S3、针对存储节点缓存模块中的每个对象,若所述对象的被访问次数不小于第二次数阈值、和/或所述对象所在数据块中所有对象的欧氏距离总和小于距离总和阈值,将所述对象所在数据块转入代理节点缓存模块;
其中,存储节点缓存模块设置在存储节点服务器与代理服务器之间,代理节点缓存模块设置在代理服务器与客户端之间;
对象存储器、存储节点缓存模块和存储节点服务器设置在存储层,代理服务器和代理节点缓存模块设置在代理层,客户端设置在客户层;
所述欧氏距离总和是指:数据块中核心对象与数据块中其他对象之间的欧氏距离的总和。
2.如权利要求1所述的云存储框架构建方法,其中,第一次数阈值为1,和/或第二次数阈值为2。
3.如权利要求1或2所述的云存储框架构建方法,其中,按照如下步骤确定任意两个对象之间的欧式距离:
设两个对象的访问时间分别为A=(A1,A2,...,Am)和B=(B1,B2,...,Bn),tth为访问时间距离的阈值,当两个对象的访问时间小于tth时认为该两个对象的访问时间相近;
依次将|Ai-Bj|<tth的访问记录选出,形成两组访问时间相近的时间序列a=(a1,a2,...,ak)和b=(b1,b2,...,bk);A和B中被选出的访问记录之间的欧式距离D1如公式1所示:
A和B中没被选出的访问记录之间的欧式距离D2如公式2所示:
D2=M×(m+n-2k) 公式2
两个对象的欧氏距离D如公式3所示:
式中,m和n分别为两个对象的访问次数;k为被选出的访问记录的个数;i为时间序列a中访问记录的序号;j为时间序列b中访问记录的序号。
4.如权利要求1或2所述的云存储框架构建方法,其中,存储节点缓存模块包括FIFO队列和LRU队列;步骤S2包括:
S21、针对所有数据块中的每个对象,若所述对象的被访问次数不小于第一次数阈值,将所述对象所在的数据块转入存储节点缓存模块的FIFO队列中;
S21、若所述对象的被访问次数不小于第二次数阈值,将所述对象所在的数据块从FIFO队列转入LRU队列。
5.如权利要求1或2所述的云存储框架构建方法,步骤S3中将所述对象所在数据块转入代理节点缓存模块之前进一步包括:
S30、确定所述对象的代理缓存价值。
6.如权利要求5所述的云存储框架构建方法,步骤S3中将所述对象所在数据块转入代理节点缓存模块具体为:
当所述对象的代理缓存价值大于预设的缓存价值阈值时,将所述对象所在数据块转入代理节点缓存模块。
7.如权利要求5所述的云存储框架构建方法,步骤S3中将所述对象所在数据块转入代理节点缓存模块具体为:
当所述对象的代理缓存价值大于最低缓存价值时,以所述对象所在数据块替换最低缓存价值对应的数据块,并将最低缓存价值对应的数据块从代理节点缓存模块中转出;
其中,最低缓存价值是指代理节点缓存模块中所有对象的代理缓存价值中的最小值。
8.如权利要求5所述的云存储框架构建方法,其中,按照如下公式确定对象的代理缓存价值H:
式中,f为对象的被访问次数;cost为缓存服务器与对象存储节点之间的网络延迟;size为对象的文件大小;L为增长因子,其初值为0,当代理节点缓存模块中有对象被转出时,L的取值更新为被转出对象的代理缓存价值;tnow为对象的当前访问时间,tlast为对象的上次访问时间。
9.针对小文件的二级缓存预取的云存储框架,其特征在于包括:对象存储器、关联性计算模块、数据合并模块、存储节点缓存模块和代理节点缓存模块;其中,
关联性计算模块,遍历对象存储器中的所有对象,以未合并进入数据块的任意一个对象为核心对象,确定所述核心对象与其他任意一个对象的欧氏距离;
数据合并模块,将欧氏距离小于距离半径阈值的对象合并为一个数据块;针对所有数据块中的每个对象,若所述对象的被访问次数不小于第一次数阈值,数据合并模块将所述对象所在的数据块转入存储节点缓存模块;针对存储节点缓存模块中的每个对象,若所述对象的被访问次数不小于第二次数阈值、和/或所述对象所在数据块中所有对象的欧氏距离总和小于距离总和阈值,数据合并模块将所述对象所在数据块转入代理节点缓存模块;
存储节点缓存模块,设置在存储节点服务器与代理服务器之间,代理节点缓存模块设置在代理服务器与客户端之间;关联性计算模块、数据合并模块、对象存储器、存储节点缓存模块和存储节点服务器设置在存储层,代理服务器和代理节点缓存模块设置在代理层,客户端设置在客户层;
所述欧氏距离总和是指:数据块中核心对象与数据块中其他对象之间的欧氏距离的总和。
10.如权利要求9所述的云存储框架,其特征在于,存储节点缓存模块包括FIFO队列和LRU队列;针对所有数据块中的每个对象,
若所述对象的被访问次数不小于第一次数阈值,所述对象所在的数据块存储在存储节点缓存模块的FIFO队列中;
若所述对象的被访问次数不小于第二次数阈值,所述对象所在的数据块存储在存储节点缓存模块的LRU队列中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611001521.4A CN106528451B (zh) | 2016-11-14 | 2016-11-14 | 针对小文件的二级缓存预取的云存储框架及构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611001521.4A CN106528451B (zh) | 2016-11-14 | 2016-11-14 | 针对小文件的二级缓存预取的云存储框架及构建方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106528451A true CN106528451A (zh) | 2017-03-22 |
CN106528451B CN106528451B (zh) | 2019-09-03 |
Family
ID=58351638
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611001521.4A Active CN106528451B (zh) | 2016-11-14 | 2016-11-14 | 针对小文件的二级缓存预取的云存储框架及构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106528451B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108932288A (zh) * | 2018-05-22 | 2018-12-04 | 广东技术师范学院 | 一种基于Hadoop的海量小文件缓存方法 |
CN109800184A (zh) * | 2018-12-12 | 2019-05-24 | 平安科技(深圳)有限公司 | 针对小块输入的缓存方法、系统、装置及可存储介质 |
CN109951370A (zh) * | 2017-12-21 | 2019-06-28 | 博元森禾信息科技(北京)有限公司 | 多大数据中心分层互联互通方法及装置 |
CN111654540A (zh) * | 2020-06-01 | 2020-09-11 | 重庆高开清芯智联网络科技有限公司 | 一种物联网系统内节点数据的预取和推送方法及系统 |
CN112083877A (zh) * | 2020-06-05 | 2020-12-15 | 哈尔滨工业大学(威海) | 一种车辆物联网云存储系统数据分组方法 |
CN114116634A (zh) * | 2022-01-26 | 2022-03-01 | 苏州浪潮智能科技有限公司 | 一种缓存方法、装置及可读存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103366016A (zh) * | 2013-08-01 | 2013-10-23 | 南京大学 | 基于hdfs的电子文件集中存储及优化方法 |
CN103559229A (zh) * | 2013-10-22 | 2014-02-05 | 西安电子科技大学 | 基于MapFile的小文件管理服务SFMS系统及其使用方法 |
CN103577123A (zh) * | 2013-11-12 | 2014-02-12 | 河海大学 | 一种基于hdfs的小文件优化存储方法 |
CN104123237A (zh) * | 2014-06-24 | 2014-10-29 | 中电科华云信息技术有限公司 | 海量小文件分级存储方法及系统 |
CN104731921A (zh) * | 2015-03-26 | 2015-06-24 | 江苏物联网研究发展中心 | Hadoop分布式文件系统针对日志型小文件的存储和处理方法 |
CN104765876A (zh) * | 2015-04-24 | 2015-07-08 | 中国人民解放军信息工程大学 | 海量gnss小文件云存储方法 |
CN105653592A (zh) * | 2016-01-28 | 2016-06-08 | 浪潮软件集团有限公司 | 一种基于hdfs的小文件合并工具和方法 |
CN105843841A (zh) * | 2016-03-07 | 2016-08-10 | 青岛理工大学 | 一种小文件存储方法和系统 |
-
2016
- 2016-11-14 CN CN201611001521.4A patent/CN106528451B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103366016A (zh) * | 2013-08-01 | 2013-10-23 | 南京大学 | 基于hdfs的电子文件集中存储及优化方法 |
CN103559229A (zh) * | 2013-10-22 | 2014-02-05 | 西安电子科技大学 | 基于MapFile的小文件管理服务SFMS系统及其使用方法 |
CN103577123A (zh) * | 2013-11-12 | 2014-02-12 | 河海大学 | 一种基于hdfs的小文件优化存储方法 |
CN104123237A (zh) * | 2014-06-24 | 2014-10-29 | 中电科华云信息技术有限公司 | 海量小文件分级存储方法及系统 |
CN104731921A (zh) * | 2015-03-26 | 2015-06-24 | 江苏物联网研究发展中心 | Hadoop分布式文件系统针对日志型小文件的存储和处理方法 |
CN104765876A (zh) * | 2015-04-24 | 2015-07-08 | 中国人民解放军信息工程大学 | 海量gnss小文件云存储方法 |
CN105653592A (zh) * | 2016-01-28 | 2016-06-08 | 浪潮软件集团有限公司 | 一种基于hdfs的小文件合并工具和方法 |
CN105843841A (zh) * | 2016-03-07 | 2016-08-10 | 青岛理工大学 | 一种小文件存储方法和系统 |
Non-Patent Citations (5)
Title |
---|
HUI HE等: "Optimization strategy of Hadoop small file storage for big data in healthcare", 《THE JOURNAL OF SUPERCOMPUTING》 * |
TAO WANG等: "An effective strategy fog improving small file problem in distributed file system", 《2015 2ND INTERNATIONAL CONFERENCE ON INFORMATION SCIENCE AND CONTROL ENGINEERING》 * |
TAO X等: "Small file access optimization based on GlusterFS", 《CLOUD COMPUTING AND INTERNET OF THINGS》 * |
余思等: "一种提高云存储中小文件存储效率的方案", 《西安交通大学学报》 * |
周国安等: "云环境下海量小文件存储技术研究综述", 《技术研究》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109951370A (zh) * | 2017-12-21 | 2019-06-28 | 博元森禾信息科技(北京)有限公司 | 多大数据中心分层互联互通方法及装置 |
CN109951370B (zh) * | 2017-12-21 | 2022-07-05 | 博元森禾信息科技(北京)有限公司 | 多大数据中心分层互联互通方法及装置 |
CN108932288A (zh) * | 2018-05-22 | 2018-12-04 | 广东技术师范学院 | 一种基于Hadoop的海量小文件缓存方法 |
CN108932288B (zh) * | 2018-05-22 | 2022-04-12 | 广东技术师范大学 | 一种基于Hadoop的海量小文件缓存方法 |
CN109800184A (zh) * | 2018-12-12 | 2019-05-24 | 平安科技(深圳)有限公司 | 针对小块输入的缓存方法、系统、装置及可存储介质 |
CN111654540A (zh) * | 2020-06-01 | 2020-09-11 | 重庆高开清芯智联网络科技有限公司 | 一种物联网系统内节点数据的预取和推送方法及系统 |
CN112083877A (zh) * | 2020-06-05 | 2020-12-15 | 哈尔滨工业大学(威海) | 一种车辆物联网云存储系统数据分组方法 |
CN112083877B (zh) * | 2020-06-05 | 2023-05-09 | 哈尔滨工业大学(威海) | 一种车辆物联网云存储系统数据分组方法 |
CN114116634A (zh) * | 2022-01-26 | 2022-03-01 | 苏州浪潮智能科技有限公司 | 一种缓存方法、装置及可读存储介质 |
CN114116634B (zh) * | 2022-01-26 | 2022-04-22 | 苏州浪潮智能科技有限公司 | 一种缓存方法、装置及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106528451B (zh) | 2019-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106528451B (zh) | 针对小文件的二级缓存预取的云存储框架及构建方法 | |
US11561930B2 (en) | Independent evictions from datastore accelerator fleet nodes | |
CN107066397A (zh) | 剖析缓存替换 | |
CN103246616B (zh) | 一种长短周期访问频度的全局共享缓存替换方法 | |
CN106503051B (zh) | 一种基于元数据分类的贪婪预取型数据恢复系统及恢复方法 | |
CN109240946A (zh) | 数据的多级缓存方法及终端设备 | |
CN103795781B (zh) | 一种基于文件预测的分布式缓存方法 | |
CN105701219B (zh) | 一种分布式缓存的实现方法 | |
US10884939B2 (en) | Cache pre-fetching using cyclic buffer | |
Canim et al. | Buffered Bloom Filters on Solid State Storage. | |
US20130290636A1 (en) | Managing memory | |
US20190004968A1 (en) | Cache management method, storage system and computer program product | |
CN101916289A (zh) | 支持海量小文件和动态备份数的数字图书馆存储系统的构建方法 | |
CN107368608A (zh) | 基于arc替换算法的hdfs小文件缓存管理方法 | |
CN107247675A (zh) | 一种基于分类预测的缓存选择方法和系统 | |
CN111737168A (zh) | 一种缓存系统、缓存处理方法、装置、设备及介质 | |
CN111782612A (zh) | 跨域虚拟数据空间中文件数据边缘缓存方法 | |
CN115712583B (zh) | 一种提升分布式缓存跨节点访问性能的方法及装置、介质 | |
CN111159176A (zh) | 一种海量流数据的存储和读取的方法和系统 | |
Yang et al. | Tombolo: Performance enhancements for cloud storage gateways | |
US10146833B1 (en) | Write-back techniques at datastore accelerators | |
US20130086325A1 (en) | Dynamic cache system and method of formation | |
KR101940382B1 (ko) | 페이지의 프리페칭 방법 및 장치 | |
CN106331001B (zh) | 一种适合移动设备访问的云存储方法和系统 | |
US11243829B2 (en) | Metadata management in data storage systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |