当前位置: 首页 > 专利查询>东南大学专利>正文

一种基于openstack平台的SSD缓存方法技术

技术编号:15690503 阅读:95 留言:0更新日期:2017-06-24 02:56
本发明专利技术公开了一种基于openstack平台的SSD缓存方法,其特征在于:SSD缓存放置于VFS和Distribute/Stripe之间;SSD缓存模块三种结构体,其中page结构体包括所有与缓存页相关的属性,inode结构体用于存放与文件相关的属性,table结构体用于存放全局信息。基于SSD的缓存方法能很好解决openstack平台的网络和磁盘读写瓶颈问题。

A SSD caching method based on openstack platform

The invention discloses a SSD caching method based on openstack platform, which is characterized in that: the SSD cache is placed in between VFS and Distribute/Stripe; three SSD cache module structure, which includes all the page structure associated with the cached page attributes, the inode structure is used to store the attributes and relevant documents, the table structure is used to store global information. SSD based caching method can solve the network and disk read and write bottleneck problem of openstack platform.

【技术实现步骤摘要】
一种基于openstack平台的SSD缓存方法
本专利技术提出一种基于openstack平台的SSD缓存方法,涉及云计算、计算机
技术背景OpenStack已经被越来越多的厂家和云计算服务提供商采纳并应用至生产环境中。Rackspace已经采用OpenStack提供虚拟机和云存储服务,其中云存储Swift已经达到100PB。HP新推出的公有云服务也是基于OpenStack的。新浪已经推出基于OpenStack的虚拟机和云存储服务。GlusterFS是Openstack采用的集群的文件系统,支持PB级的数据量。GlusterFS通过RDMA和TCP/IP方式将分布到不同服务器上的存储空间汇集成一个大的网络并行文件系统。该系统现在正式支持OpenStack的三种主要模式存储,包括:文件、块和对象。GlusterFS用户空间采用的堆栈式架构。该架构在GlusterFS的客户端和服务端(均在用户空间)可以在服务初始化的过程中插入链状的自定义模块。但它带来的问题是网络I/O和磁盘I/O的性能瓶颈。加入缓存能够很好的解决此类问题,GlusterFS本身也包含I/O缓存模块,但他提供的缓存是只读的,而且缓存大小受限制。现存的缓存架构也很多,比如最近很火热的memcached架构以及其变种。Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(LeastRecentlyUsed)算法自动删除不使用的缓存,因此很多缓存替换算法都未能使用。该系统正在被广泛应用,但是它并不适合GlusterFS,应用场景也有所不同,它无法根据我们的需求很好的调整参数。故本专利技术将提出一个适合GlusterFS,并且可读可写的SSD缓存方法。
技术实现思路
专利技术目的:本专利技术的目的在于提供一种基于openstack平台的SSD缓存方法,解决网络I/O和磁盘I/O瓶颈。实现本专利技术目的技术方案:在GlusterFS上添加了SSD缓存模块,SSD缓存模块包括三种结构体:page结构体包括所有与缓存页相关的属性,inode结构体用于存放与文件相关的属性,table结构体用于存放全局信息。基于这三种结构体,可以在服务初始化的过程中插入链状的自定义模块,实现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)当前页的等待队列。等待队列用来对读写请求进行排队。SSD缓存模块中的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操作。SSD缓存模块中的table结构体用于存放全局信息:包含页大小、缓存大小、缓存的使用情况、与替换算法相关的信息等。其中page_size表示页大小,cache_size表示缓存文件的大小,即缓存容量,该值为page_size的整数倍,cache_used表示已使用的缓存大小,该值等于已分配的dc_page数量乘以page_size,list_headinodes表示所有inode组成的双向链表,inode_count表示inode的数量,page_lru表示pageLRU的链表头,访问页时将页插入到链表头之后,替换页时替换链表尾的页,page_lru_cnt表示pageLRU链表中的page数量,dirty_list表示所有的脏页链表,在回写线程中进行遍历,dirty_cnt表示所有脏页的数量本专利技术具有的有益效果:本专利技术在openstack本身采用的GlusterFS上添加了SSDCache模块,比原有提供的可配置Cache多了以下好处:缓存策略可配置、页大小可配置、缓存容量不受限制、读写均可缓存。附图说明图1是本专利技术的openstack架构图。图2是本专利技术的GlusterFS架构图。图3是本专利技术的具体实施方式的详细流程图。具体实施方式下面结合附图对本专利技术的技术方案进行详细说明:图1显示了本专利技术在openstack平台中添加SSDCache位置,它在计算结点端的分布式文件系统的客户端。因为该缓存直接存在于客户端,若缓存命中率较高,缓存的数据也无需经常通过网络读取服务器硬盘上的数据,故在该位置可以在该位置可以明显改善网络I/O和磁盘I/O。图2显示了本专利技术在GlusterFS分布式文件系统中的详细位置。因为GlusterFS用户空间的堆栈式架构指的是在GlusterFS的客户端和服务端(均在用户空间)通过配置可以在服务初始化的过程中插入链状的自定义模块,故本专利技术在VFS和Distribute之间加入SSDCache模块,以起到缓存的目的。为了便于公众理解本专利技术的技术方案,以读请求为例(采用LRU替换策略)。图3为该例子的详细流程图,具体步骤如下:步骤S101、读页请求。步骤S102、判断缓存中是否有该页,即是否命中(table中是否有该页)。若没有跳转至步骤S103,否则跳转至步骤S110。步骤S103、根据LRU替换算法,替换链表链尾的page。步骤S104、根据请求和page结构体的结构,根据步骤101读取的请求和page结构体的结构,申请空间,创建新页,构造page。步骤S105、添加当前读请求至pagewaitq中。步骤S106、通过异步的方式请求页内容。即暂时搁置当前请求的响应,处理下一个请求,当通过轮询或其他方式得到回调通知后,开始运行;步骤S107、通过异步的方式更新页内容,成功后,将该页置于链表链头。步骤S108、设置该page的ready本文档来自技高网
...
一种基于openstack平台的SSD缓存方法

【技术保护点】
一种基于openstack平台的SSD缓存方法,其特征在于:采用GlusterFS作为openstack平台的分布式文件系统,在GlusterFS的VFS和Distribute/Stripe之间加入SSD缓存模块;所述SSD缓存模块包括三种结构体:page结构体包括所有与缓存页相关的属性,inode结构体用于存放与文件相关的属性,table结构体用于存放全局信息;通过所述SSD缓存模块的三种结构体在服务初始化的过程中插入链状的自定义模块。

【技术特征摘要】
1.一种基于openstack平台的SSD缓存方法,其特征在于:采用GlusterFS作为openstack平台的分布式文件系统,在GlusterFS的VFS和Distribute/Stripe之间加入SSD缓存模块;所述SSD缓存模块包括三种结构体:page结构体包括所有与缓存页相关的属性,inode结构体用于存放与文件相关的属性,table结构体用于存放全局信息;通过所述SSD缓存模块的三种结构体在服务初始化的过程中插入链状的自定义模块。2.根据权利要求1...

【专利技术属性】
技术研发人员:李小平严峥陈龙朱夏
申请(专利权)人:东南大学
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1