一种基于分布式存储重复数据删除的虚拟机系统盘的方法

文档序号:9910605阅读:365来源:国知局
一种基于分布式存储重复数据删除的虚拟机系统盘的方法
【技术领域】
[0001]本发明涉及云平台存储虚拟化技术领域,特别是一种基于分布式存储重复数据删除的虚拟机系统盘的方法。
【背景技术】
[0002]—般的云计算平台上有多个计算节点,而每个计算节点上都有多个分布式存储的虚拟机,有些性能较高的节点甚至有几十个虚拟机,监控代理监控这些虚拟机在高峰期使用大量的网络10,并且分布式存储副本数越多,网络1的压力更大,这样会带来以下问题:
[0003]—是客户不想花费额外的钱来升级交换机。
[0004]二是高峰期大量的虚拟机同时读写,分布式存储多副本的情况下,网络1流量大。
[0005]三是分布式存储成本高。
[0006]为了解决上述问题,需要有一种基于分布式存储重复数据删除的虚拟机系统盘方法;减轻网络1的压力并同时节省分布式存储的成本。

【发明内容】

[0007]本发明解决的技术问题在于提供一种基于分布式存储重复数据删除的虚拟机系统盘的方法;解决高峰期大量的虚拟机同时读写及分布式存储多副本的情况下网络1流量大、分布式存储成本高等问题。
[0008]本发明解决上述技术问题的技术方案是:
[0009]所述的方法包括如下步骤:
[0010]步骤1:分布式存储上创建存储卷;
[0011 ]步骤2:通过存储卷创建虚拟机系统盘;
[0012]步骤3:虚拟机写数据到系统盘;
[0013]步骤4:分布式存储卷服务将数据保存到缓存中;
[0014]步骤5:对缓存数据进行滑动分块;
[0015]步骤6:通过Rabin指纹算法扫描每块的指纹;
[0016]步骤7:查询指纹集合是否已经存在分布式存储系统指纹表;
[0017]步骤8:挑选指纹不存在分布式存储系统的文件块存入分布式存储系统中;
[0018]步骤9:分布式存储系统更新指纹表。
[0019]所述的分布式存储上创建存储卷,在分布式存储创建一个存储卷;
[0020]所述的通过存储卷创建虚拟机系统盘,分布式存储卷先映射到本地文件块,此文件块作为虚拟机的系统盘来使用;
[0021]所述的虚拟机写数据到系统盘,虚拟机在系统盘读写通过分布式存储卷服务进行读写;
[0022]所述的分布式存储卷服务将数据保存到缓存中,分布式存储卷服务将虚拟机读写的数据先放在本地缓存上,并不是马上存入到分布式存储上。
[0023]所述的对缓存数据进行滑动分块,是对缓冲区的数据进行滑动分块,通常每块默认最小大小是4K;用户可以通过分布式存储系统对分块的默认大小进行设置。
[0024]所述的通过Rabin指纹算法扫描每块的指纹,通过Rabin指纹算法计算整块,得出一个唯一的指纹,并将每块的指纹组成一个指纹集合;
[0025]所述的查询指纹集合是否已经存在分布式存储系统指纹表,查询指纹集合各个指纹是否存在通过分布式存储系统的指纹表中,并返回结果,分布式存储卷服务标记每个指纹是否已在分布式存储上存在;
[0026]所述的挑选指纹不存在分布式存储系统的文件块存入分布式存储系统中,凡是被标记为不存在的指纹,该指纹对应的块文件全部都上传到分布式存储系统中;如被标记为存在的指纹,分布式存储系统上的存储卷做一个简单的文件块引用即可;
[0027]所述的分布式存储系统更新指纹表,分布式存储系统根据上传文件块的指纹集合,更新指纹表。
[0028]本发明由虚拟机提供分布式存储卷服务,虚拟机可以连续读写,区别于一般基于文件的重复数据删除方法。本发明提供虚拟机系统盘,区别于一般只能提供虚拟机镜像的重复数据删除方法。本发明提供数据重复删除放在虚拟机所在的宿主机上,区别于一般只能在服务端上执行重复删除的方法。本发明使用Rabin指纹算法,性能更加高效,区域于一般的指纹扫描方法。本发明解决了高峰期大量的虚拟机同时读写及分布式存储多副本的情况下网络1流量大、分布式存储成本高等问题。
【附图说明】
[0029]下面结合附图对本发明进一步说明:
[0030]图1为流程图;
[0031 ]图2为本发明逻辑结构图。
【具体实施方式】
[0032]本发明的实施方式有多种,这里以云平台为例说明其中一种实现方法,如图1、2所示,具体实施过程如下:
[0033]1、分布式存储上创建存储卷;
[0034]/**
[0035]*分布式存储上创建存储卷
[0036]* Oparam name卷名称
[0037]*Oparam size卷大小
[0038]~k ire turn boolean 返回结果
[0039]* /
[0040]public boolean createVolume(String name,int size){
[0041]return Distribute.createVolume(name,size);
[0042]}
[0043]2、通过存储卷创建虚拟机系统盘;
[0044]/**
[0045]女通过存储卷创建虚拟机系统盘
[0046]*Oparam instanceld虚拟机ID
[0047]* Oparam name卷名称
[0048]/V @re turn 无返回值
[0049]* /
[0050]public void createVm(String instanceld?String name){
[0051]return VmService.createVm(instanceId,name);
[0052]}
[0053]3、虚拟机写数据到系统盘;实则就是把数据写入分布式存储卷服务中
[0054]4、分布式存储卷服务将数据保存到缓存中;
[0055]/**
[0056]*分布式存储卷服务将数据保存到缓存中
[0057]* Oparam data带写入的数据
[0058]* ?return int成功写入的字节数
[0059]女 /
[0060]public int writeBuffer(byte[]data){
[0061]return DataEngine.writeBuffer(data);
[0062]}
[0063]5、对缓存数据进行滑动分块;
[0064]/* *
[0065]女对缓存数据进行滑动分块
[0066]* Oparam per1d时间间隔[0067 ]* Ore turn无返回值
[0068]* /
[0069]public void chunk(){
[0070]return DataEngine.chunk();
[0071]}
[0072]6、通过Rabin指纹算法扫描每块的指纹;
[0073]/**
[0074]'k通过Rabin指纹算法扫描每块的指纹
[0075]-k ?return List〈String>指纹集合对象
[0076]女 /
[0077]public List<String>getHashCodeSet(){
[0078]return DataEngine.getHashCodeSet();
[0079]}
[0080]7、查询指纹集合是否已经存在分布式存储系统指纹表;
[0081]/* *
[0082]女查询指纹集合是否已经存在分布式存储系统指纹表
[0083]'k Oparam hashCodes指纹集合对象
[0084]-k ire turn boolean 返回结果
[0085]* /
[0086]public List〈String>muticastHashCodeIsExists(List〈String>hashCodes){
[0087]return Distribute.muticastHashCodeIsExists(hashCodes);
[0088]}
[0089]8、挑选指纹不存在分布式存储系统的文件块存入分布式存储系统中;
[0090]/**
[0091 ]*挑选指纹不存在分布式存储系统的文件块存入分布式存储系统中
[0092]~k iparam hashCodes指纹集合对象
[0093]* Oreturn boo lean返回结果
[0094]* /
[0095]public boolean upload(List<String>hashCodes){
[0096]return DataEngine.upload(hashCodes);
[0097]}
[0098]9、分布式存储系统更新指纹表。
[0099]/**
[0100]*分布式存储系统更新指纹表
[0101]~k iparam hashCodes指纹集合对象
[0102]-k ire turn boolean 返回结果
[0103]*/
[0104]public boolean updateHashCode(List<String>hashCodes) {
[0105]return Distribute.setThreshoId(hashCodes);
[0106]}
[0107]整个流程结束。
【主权项】
1.一种基于分布式存储重复数据删除的虚拟机系统盘的方法,其特征在于:所述的方法包括如下步骤: 步骤I:分布式存储上创建存储卷; 步骤2:通过存储卷创建虚拟机系统盘; 步骤3:虚拟机写数据到系统盘; 步骤4:分布式存储卷服务将数据保存到缓存中; 步骤5:对缓存数据进行滑动分块; 步骤6:通过Rabin指纹算法扫描每块的指纹; 步骤7:查询指纹集合是否已经存在分布式存储系统指纹表; 步骤8:挑选指纹不存在分布式存储系统的文件块存入分布式存储系统中; 步骤9:分布式存储系统更新指纹表。2.根据权利要求1所述的方法,其特征在于:所述的分布式存储上创建存储卷,在分布式存储创建一个存储卷; 所述的通过存储卷创建虚拟机系统盘,分布式存储卷先映射到本地文件块,此文件块作为虚拟机的系统盘来使用; 所述的虚拟机写数据到系统盘,虚拟机在系统盘读写通过分布式存储卷服务进行读与; 所述的分布式存储卷服务将数据保存到缓存中,分布式存储卷服务将虚拟机读写的数据先放在本地缓存上,并不是马上存入到分布式存储上。3.根据权利要求1所述的方法,其特征在于:所述的对缓存数据进行滑动分块,是对缓冲区的数据进行滑动分块,通常每块默认最小大小是4K;用户可以通过分布式存储系统对分块的默认大小进行设置。4.根据权利要求2所述的方法,其特征在于:所述的对缓存数据进行滑动分块,是对缓冲区的数据进行滑动分块,通常每块默认最小大小是4K;用户可以通过分布式存储系统对分块的默认大小进行设置。5.根据权利要求1至4任一项所述的方法,其特征在于:所述的通过Rabin指纹算法扫描每块的指纹,通过Rabin指纹算法计算整块,得出一个唯一的指纹,并将每块的指纹组成一个指纹集合; 所述的查询指纹集合是否已经存在分布式存储系统指纹表,查询指纹集合各个指纹是否存在通过分布式存储系统的指纹表中,并返回结果,分布式存储卷服务标记每个指纹是否已在分布式存储上存在; 所述的挑选指纹不存在分布式存储系统的文件块存入分布式存储系统中,凡是被标记为不存在的指纹,该指纹对应的块文件全部都上传到分布式存储系统中;如被标记为存在的指纹,分布式存储系统上的存储卷做一个简单的文件块引用即可; 所述的分布式存储系统更新指纹表,分布式存储系统根据上传文件块的指纹集合,更新指纹表。
【专利摘要】本发明涉及云平台存储虚拟化技术领域,特别是一种基于分布式存储重复数据删除的虚拟机系统盘的方法。本发明首先在分布式存储上创建存储卷;通过存储卷创建虚拟机系统盘;虚拟机写数据到系统盘;分布式存储卷服务将数据保存到缓存中;对缓存数据进行滑动分块;通过Rabin指纹算法扫描每块的指纹;查询指纹集合是否已经存在分布式存储系统指纹表;挑选指纹不存在分布式存储系统的文件块存入分布式存储系统中;最后分布式存储系统更新指纹表。本发明解决了减轻基于云平台分布式存储的虚拟机网络流量压力;可应用于云平台存储虚拟化。
【IPC分类】G06F3/06
【公开号】CN105677238
【申请号】CN201511018317
【发明人】马桂成, 杨松, 季统凯
【申请人】国云科技股份有限公司
【公开日】2016年6月15日
【申请日】2015年12月28日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1