[发明专利]一种基于openstack平台的SSD缓存方法有效
申请号: | 201710062792.9 | 申请日: | 2017-01-25 |
公开(公告)号: | CN106873910B | 公开(公告)日: | 2020-06-05 |
发明(设计)人: | 李小平;严峥;陈龙;朱夏 | 申请(专利权)人: | 东南大学 |
主分类号: | G06F3/06 | 分类号: | G06F3/06 |
代理公司: | 南京瑞弘专利商标事务所(普通合伙) 32249 | 代理人: | 唐绍焜 |
地址: | 211189 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 openstack 平台 ssd 缓存 方法 | ||
1.一种基于openstack平台的SSD缓存方法,其特征在于:采用GlusterFS作为openstack平台的分布式文件系统,在GlusterFS的VFS和Distribute/Stripe之间加入SSD缓存模块;所述SSD缓存模块包括三种结构体:
page结构体包括所有与缓存页相关的属性:包含缓存页本身字段,缓存页的替换算法和当前页的等待队列;
其中,(1)页自身相关字段:包含inode指针,ready字段,offset字段,size字段;通过inode指针访问该页所属的inode;ready字段表示该页的内容是否准备就绪以供读写;offset表示该页的起始在inode中的偏移量;size字段表示该页的实际大小;
(2)缓存页的替换算法:包括inode_lru与table_lru,前者通过list_head与inode形成双向链表结构,以inode为head,遍历与该inode相关联的所有页;后者与table形成双向链表结构,包含所有的页,是全局的LRU链表,在缓存页用满需要替换时,从链表尾取出page,并将其释放;
(3)当前页的等待队列:等待队列用来对读写请求进行排队;
inode结构体用于存放与文件相关的属性:包括与table结构体相关的属性,与page结构体相关的属性和自身属性;
其中,(1)与table相关的属性:inode_list是所有inode形成的双向链表,table指向的是inode关联的table;
(2)与page相关的属性:page_lru是inode下page组成的链表,dirty_list是inode下所有脏页组成的链表,dirty_cnt表示脏页的数量;
(3)inode自身的属性:inode指针指向原始的inode;size字段表示inode关联的文件的大小,如果当前写入的数据块超过文件大小,则需要更新该字段,同时需要对后端存储的该文件执行truncate操作;
table结构体用于存放全局信息:包含页大小、缓存大小、缓存的使用情况、与替换算法相关的信息;
其中page_size表示页大小,cache_size表示缓存文件的大小,即缓存容量,该值为page_size的整数倍,cache_used表示已使用的缓存大小,该值等于已分配的dc_page数量乘以page_size,list_head inodes表示所有inode组成的双向链表,inode_count表示inode的数量,page_lru表示page LRU的链表头,访问页时将页插入到链表头之后,替换页时替换链表尾的页,page_lru_cnt表示page LRU链表中的page数量,dirty_list表示所有的脏页链表,在回写线程中进行遍历,dirty_cnt表示所有脏页的数量;
通过所述SSD缓存模块的三种结构体在服务初始化的过程中插入链状的自定义模块。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710062792.9/1.html,转载请声明来源钻瓜专利网。