一种基于分布式块存储的虚拟磁盘分层缓存设计方法技术

技术编号:16216121 阅读:66 留言:0更新日期:2017-09-15 22:17
本发明专利技术提出一种全新的基于分布式块存储的虚拟磁盘分层缓存设计方法,该方法通过内存与SATA/SAS SSD组成分层缓存结构,通过快速算法检测数据访问热点,热点度最高的数据存放在内存,热点读较高的数据存放在SATA/SAS SSD中。由于内存的掉电易失性,内存中仅仅保存读取的数据。更新的数据需要写入SSD中以防掉电数据丢失。缓存分层由内存和SATA/SAS SSD两个物理组件组成。由软件实现热点判断和数据在各级缓存中的上浮与下层。本发明专利技术的缓存算法针对磁盘的读写特性设计,并非通用的缓存,主要应用于分布式块存储系统的前端虚拟磁盘中,为虚拟磁盘加速。采用本发明专利技术的分层缓存方案,避免了内存的掉电易失性,相比于SATA/SAS SSD能大幅度提升性能,为客户降低存储上的总拥有成本。

A design method of hierarchical cache for virtual disk based on distributed block storage

The invention provides a virtual disk cache hierarchical design method of distributed block storage based on the new method, the composition structure by hierarchical cache memory and SATA/SAS SSD, hot spot through the fast detection algorithm of data access, data stored in the memory of the highest degree of hot, hot high read data stored in SATA/SAS SSD. Because of memory loss, memory only saves read data. The updated data needs to be written to the SSD in case the power loss is lost. Cache memory and SATA/SAS SSD stratified by two physical components. The software realizes hot spot judgment and data floating up and down in the cache at different levels. The caching algorithm of the invention is designed for the read-write characteristics of the disk, and is not a general cache, and is mainly used in the front-end virtual disk of the distributed block storage system to accelerate the virtual disk. Using hierarchical caching scheme of the invention, to avoid memory power down volatile, compared to the SATA/SAS SSD can greatly enhance the performance, for customers to reduce total cost of storage.

【技术实现步骤摘要】
一种基于分布式块存储的虚拟磁盘分层缓存设计方法
本专利技术涉及数据存储
,具体的说是涉及一种基于分布式块存储的虚拟磁盘分层缓存设计方法。
技术介绍
分布式存储系统中,数据往往需要通过网络,数据路径过长,导致性能降低,延迟增大,对于性能要求较高的使用场景,往往是望而却步。目前主流的分布式存储系统,无论是开源或是商用,几乎都是在虚拟磁盘端增加缓存系统来提升性能以满足一些高端使用场景。主要有两种方向:一种是基于内存的缓存,一种是基于SSD的缓存。基于内存缓存由于内存的掉电易失性,无法满足数据安全的需求。基于SSD的缓存如果选用NVMESSD是比较理想的选择,但是价格非常昂贵。如果是选用SATA/SASSSD则性能略显不足。目前软件定义存储的概念逐渐深入人心,这种基于通用X86服务的,分布式的,纯软件的存储系统逐渐被广大用户所接受。相对于传统阵列存储系统,分布式存储系统的性能是巨大的弱点,通过缓存技术能显著改善,使其使用场景更加广泛。
技术实现思路
针对现有技术中的不足,本专利技术要解决的技术问题在于提供了一种基于分布式块存储的虚拟磁盘分层缓存设计方法。为解决上述技术问题,本专利技术通过以下方案来实现:一种基于分布式块存储的虚拟磁盘分层缓存设计方法,该方法通过内存与SATA/SASSSD组成分层缓存系统结构,通过快速算法检测数据访问热点,热点度最高的数据存放在内存,热点读较高的数据存放在SATA/SASSSD中;缓存分层包括内存和SATA/SASSSD两个物理组件,由软件实现热点判断和数据在各级缓存中的上浮与下层,缓存算法针对磁盘的读写特性设计,并非通用的缓存,主要应用于分布式块存储系统的前端虚拟磁盘中,为虚拟磁盘加速;所述分布式块存储系统包括:控制主机:所述控制主机生成虚拟磁盘,为虚拟磁盘准备高速缓冲存储器,作为存储数据路径的前端主机,完成数据接收、缓存、转发功能;策略主机:所述策略主机为分布式块存储系统的大脑,控制主机需要创建虚拟磁盘时,将从存储主机中调度处满足条件的主机,生成存储组件供控制主机连接使用;存储主机:分布式设于系统中,数据最终的存放地点,将存储资源抽象成多个存储组件;所述方法包括块设备的写入和读取方法,该块设备的写入和读取方法如下:块设备的读取或写入都是一次读取或写入一块连续的数据,其应用程序写入的数据的参数为:offset,length,data;读取的参数为:offset,length,buffer;offset:读写磁盘的位置,起始位置为0,offset为距离起始位置的偏移量;length:读写磁盘数据的长度;data:需要写入磁盘的数据;buffer:将磁盘中的对应数据填入buffer中。进一步的,所述分层缓存系统结构将存储空间划分为cache对象,每个cache对象固定大小,所述分层缓存系统结构的第一层是内存索引,内存索引由一组item组成,每个item占用4个字节代表一个cache对象;内存索引主要维护cache对象的引用计数,标志对应的item是否在cache树中,如果在,该cache对象在cache树的id;内存索引所需要的内存空间,假设SSD缓存空间为1TB,一个item占用4个字节空间代表4MB的cache对象:内存索引占用空间=1TB÷4MB*4=1MB;内存索引占用空间较小几乎可以忽略不计;提到具体的cache对象时缓存在cache树中的,cache树是一颗完全二叉树,并组织成最小堆;完全二叉树表示其每个节点可以用整数编号,并且随着插入,删除节点,依然能满足完全二叉树条件;最小堆表示树根节点一定是二叉树中key值最小的;通过不同的计算引用计数的方式可以实现不同的缓存淘汰算法;Cache树的Value用于存储SSDCache的偏移id,以快速找到SSDCache的block;Cache树将SSDcache中的block组织成完全二叉树,SSDcache将存储空间划分为一组block,一个block对应一个cache对象,通过简单的映射算法将将要从HDD读取或写入的数据加载到SSDCache中;计算Cache树占用内存空间,最小堆以数组的形式实现无需指针:Cache树的节点数量=1TB÷4MB=262144;Cache树占用内存空间=262144*16=4MB。进一步的,基于述各模块的描述,描述cache的具体写入流程步骤:步骤①:应用程序发起写入请求,请求中包含(offset,length,data);步骤②:虚拟磁盘io处理程序接收到该请求,根据offset获取内存索引对应的item项,直接通过移位运算得到时间复杂度为O(1),将引用计数+1;步骤③:如果有需要将数据拆分成多个cache对象,插入cache树中,将根节点替换掉,如果没有设置为O_DIRECT则直接返回,后续数据将异步同步到SSDCache和HDD中;步骤④:如果设置了O_DIRECT,将Cache对象的数据同步到节点对应的SSDCacheblock中返回;后续由异步进程同步到后端HDD中;基于cache系统的读取流程步骤:步骤①:应用程序发起读取请求,请求中包含(offset,length,buffer);步骤②:虚拟磁盘io处理程序接收到该请求,根据offset获取内存索引对应的item项,直接通过移位运算得到时间复杂度为O(1),将引用计数+1;步骤③:根据item的最高位bit,判断offset对应的数据是否在cache中;如果在cache中,在直接从item读取到其对应的cache树的索引id值,如果cache对象保存了数据,将数据读取返回;如果cache对象内存数据已是否,则根据cache树节点的值对应的SSDCache偏移id,从SSD读取数据;步骤④:如果所请求不在cache中,则直接请求存储主机,读取数据;步骤⑤:比较该请求对应item的引用计数,如果该item的引用计数大于cache树根节点的引用计数,则节点替换,缓存更新;步骤⑥:如果该item的引用计数小于cache树根节点的引用计数,表示该数据块热度不够,数据返回后,则不更新缓存。进一步的,由于内存的掉电易失性,内存中仅仅保存读取的数据,更新的数据需要写入SSD中以防掉电数据丢失。相对于现有技术,本专利技术的有益效果是:本专利技术提出一种全新的基于分布式块存储的虚拟磁盘分层缓存设计方法。通过内存与SATA/SASSSD组成分层缓存结构,通过快速算法检测数据访问热点,热点度最高的数据存放在内存,热点读较高的数据存放在SATA/SASSSD中。由于内存的掉电易失性,内存中仅仅保存读取的数据。更新的数据需要写入SSD中以防掉电数据丢失。缓存分层由内存和SATA/SASSSD两个物理组件组成。由软件实现热点判断和数据在各级缓存中的上浮与下层。本专利技术的缓存算法针对磁盘的读写特性设计,并非通用的缓存,主要应用于分布式块存储系统的前端虚拟磁盘中,为虚拟磁盘加速。采用本专利技术的分层缓存方案,避免了内存的掉电易失性,相比于SATA/SASSSD能大幅度提升性能,同时能带来巨大的成本效益,为客户降低存储上的总拥有成本(TCO)。附图说明图1为本专利技术的分布式块存储系统架构图;图2为本专利技术的分层缓存系统结构图;图3为本专利技术的磁盘读写方法流程图;图4为本专利技术的本文档来自技高网...
一种基于分布式块存储的虚拟磁盘分层缓存设计方法

【技术保护点】
一种基于分布式块存储的虚拟磁盘分层缓存设计方法,其特征在于,该方法通过内存与SATA/SAS SSD组成分层缓存系统结构,通过快速算法检测数据访问热点,热点度最高的数据存放在内存,热点读较高的数据存放在SATA/SAS SSD中;缓存分层包括内存和SATA/SAS SSD两个物理组件,由软件实现热点判断和数据在各级缓存中的上浮与下层,缓存算法针对磁盘的读写特性设计,并非通用的缓存,主要应用于分布式块存储系统的前端虚拟磁盘中,为虚拟磁盘加速;所述分布式块存储系统包括:控制主机:所述控制主机生成虚拟磁盘,为虚拟磁盘准备高速缓冲存储器,作为存储数据路径的前端主机,完成数据接收、缓存、转发功能;策略主机:所述策略主机为分布式块存储系统的大脑,控制主机需要创建虚拟磁盘时,将从存储主机中调度处满足条件的主机,生成存储组件供控制主机连接使用;存储主机:分布式设于系统中,数据最终的存放地点,将存储资源抽象成多个存储组件;所述方法包括块设备的写入和读取方法,该块设备的写入和读取方法如下:块设备的读取或写入都是一次读取或写入一块连续的数据,其应用程序写入的数据的参数为:offset, length, data;读取的参数为:offset,length,buffer;offset:读写磁盘的位置,起始位置为0,offset为距离起始位置的偏移量;length:读写磁盘数据的长度;data:需要写入磁盘的数据;buffer:将磁盘中的对应数据填入buffer中。...

【技术特征摘要】
1.一种基于分布式块存储的虚拟磁盘分层缓存设计方法,其特征在于,该方法通过内存与SATA/SASSSD组成分层缓存系统结构,通过快速算法检测数据访问热点,热点度最高的数据存放在内存,热点读较高的数据存放在SATA/SASSSD中;缓存分层包括内存和SATA/SASSSD两个物理组件,由软件实现热点判断和数据在各级缓存中的上浮与下层,缓存算法针对磁盘的读写特性设计,并非通用的缓存,主要应用于分布式块存储系统的前端虚拟磁盘中,为虚拟磁盘加速;所述分布式块存储系统包括:控制主机:所述控制主机生成虚拟磁盘,为虚拟磁盘准备高速缓冲存储器,作为存储数据路径的前端主机,完成数据接收、缓存、转发功能;策略主机:所述策略主机为分布式块存储系统的大脑,控制主机需要创建虚拟磁盘时,将从存储主机中调度处满足条件的主机,生成存储组件供控制主机连接使用;存储主机:分布式设于系统中,数据最终的存放地点,将存储资源抽象成多个存储组件;所述方法包括块设备的写入和读取方法,该块设备的写入和读取方法如下:块设备的读取或写入都是一次读取或写入一块连续的数据,其应用程序写入的数据的参数为:offset,length,data;读取的参数为:offset,length,buffer;offset:读写磁盘的位置,起始位置为0,offset为距离起始位置的偏移量;length:读写磁盘数据的长度;data:需要写入磁盘的数据;buffer:将磁盘中的对应数据填入buffer中。2.根据权利要求1所述的一种基于分布式块存储的虚拟磁盘分层缓存设计方法,其特征在于:所述分层缓存系统结构将存储空间划分为cache对象,每个cache对象固定大小,所述分层缓存系统结构的第一层是内存索引,内存索引由一组item组成,每个item占用4个字节代表一个cache对象;内存索引主要维护cache对象的引用计数,标志对应的item是否在cache树中,如果在,该cache对象在cache树的id;内存索引所需要的内存空间,假设SSD缓存空间为1TB,一个item占用4个字节空间代表4MB的cache对象:内存索引占用空间=1TB÷4MB*4=1MB;内存索引占用空间较小几乎可以忽略不计;提到具体的cache对象时缓存在cache树中的,cache树是一颗完全二叉树,并组织成最小堆;完全二叉树表示其每个节点可以用整数编号,并且随着插入,删除节点,依然能满足完全二叉树条件;最小堆表示树根节点一定是二叉树中key值最小的;通过不同的计算引用计数的方式可以实现不同的缓存淘汰算法;Cache树的Value用于存储SSDCac...

【专利技术属性】
技术研发人员:张朝潞
申请(专利权)人:深圳市云舒网络技术有限公司
类型:发明
国别省市:广东,44

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

1