一种基于重复数据删除的虚拟机镜像管理的优化方法

文档序号:6399164阅读:214来源:国知局
专利名称:一种基于重复数据删除的虚拟机镜像管理的优化方法
技术领域
本发明涉及一种云计算平台的虚拟机镜像管理方法,尤其涉及一种基于在线重复数据删除的虚拟机镜像管理的优化方法。
背景技术
云计算IAAS系统(基础架构即服务,以下简称云计算系统)采用虚拟机为服务形式向用户提供计算服务,用户的需求具有多变性、多祥性,因此云计算系统需要向用户提供多种配置的虚拟机,如不同族系的操作系统或32/64位的系统。为了快速建立起虚拟机,云计算系统采用储存虚拟机镜像的方式来管理虚拟机。单个用户可能拥有多个配置不同的虚拟机镜像,然而虚拟机镜像文件通常大于2G,随着云计算系统规模的不断扩大,无论是虚拟机镜像的传输还是虚拟机镜像的存储等管理对云计算系统管理成本都会造成越来越大的压力。传统的虚拟机镜像管理中,采用直接上传镜像的方式将镜像文件从客户端上传到镜像服务端上,该方法实现起来比较简单,但是会消耗大量的网络资源与存储资源。其原因在于没有考虑到众多不同的虚拟机镜像文件之间,含有大量的重复数据,随着虚拟机服务的需求量増大,重复数据量也不断増加,云计算系统的资源使用率越来越低,成本也越来越闻。近年来,随着云计算技术的深入发展,越来越多的企业开始部署共有云与私有云。随着企业规模的扩大、用户需求的増加,云的规模逐渐变大,迫使企业不得不增加投入。然而现有资源的利用率又不是很高,尤其是在管理虚拟机镜像文件这方面,消耗了大部分网络资源与存储资源,传统的管理虚拟机镜像文件方式表现出了极大的局限性。

发明内容
本发明的目的在于:针对上述传统的云计算系统中虚拟机镜像文件管理出现的问题,提出一种能够充分利用计算机性能以及硬件平台,优化虚拟机镜像文件传输与存储管理的方法。上传虚拟机镜像吋,该方法应拥有减少网络传输量的功能,使之能够有效地提高传输效率,获得较高的IO呑吐率。利用重复数据删除技术消除大量重复数据,減少不必要的存储,提高存储系统的资源利用率,降低存储镜像数据的成本,增加镜像管理的灵活性,解决传统云计算系统中管理镜像消耗大量网络资源与存储资源的问题。本发明所采用的技术方案是:
当客户端需要上传新生成的虚拟机镜像文件吋,首先在镜像数据库注册该镜像,并在镜像服务端分配ー个inode给该镜像文件。在客户端,采用固定大小分块方法对镜像文件进行分块,数据块大小与服务端文件系统的簇大小相同;计算每个数据块的MD5散列值,该散列值即为指紋,然后依次将指纹发送至服务端;服务端守护进程接收到指纹后,通过访问指纹过滤器与指纹存储器,查找接收的指纹是否已经存在,服务端将查找结果返回至客户端;客户端根据返回的查找结果,如指纹已存在指纹存储器中,则表示该指纹对应的数据块已经存在,则不发送数据块,只要修改镜像服务端的inode中的指针,指向已存的相同数据块,并修改该数据块的索引次数;否则发送数据块,在保存数据块时,数据块直接存入ー个完整的簇,并将inode中指针指向新存入的数据块。重复上述过程,直至整个镜像文件发送完毕,并在镜像数据库中注册镜像文件可用。本发明的有益效果:
1.本发明利用了哈希函数计算数据块指紋,预传输指纹到服务端端,利用哈希函数的冲突性对比指纹是否已存,从而避免数据块的重复传输,提高了网路传输的效率。2.本发明切分下的数据块等于文件系统的簇大小,通过客户端切分发送到服务端,服务端直接将该数据块存入文件系统的ー个簇中,将该数据块指纹直接更新到系统指纹库。该方案可以避免服务端端文件恢复,切分,计算指纹的重复性工作。3.本发明利用了空间局部性原理,只在内存中存储用于索引的部分指紋,把完整的指纹放在磁盘上,将指纹与对应的数据块放置在同一快组中,充分考虑了底层的磁盘布局,大大缓解了访问磁盘上指纹的磁盘访问开销。4.本发明充分利用了指纹预取技术,将同一快组中的数据块指纹预先度取到页高速缓冲区中,减小更新磁盘上指纹和引用计数的寻道时间,以较小的内存开销换取较高的IO性能。5.本发明对云计算系统中虚拟机镜像的管理进行整体性能上的优化,新生镜像的传输带宽利用率与磁盘空间的存储利用率都有很大的提高,从而极大的降低了部署云计算系统的投入成本。6.本发明可以用于多种云计算平台上的虚拟机镜像管理。


图1指纹存储器的布局图。图2指纹过滤器的设计图。图3为本发明进行基于重复数据删除的镜像管理流程图。
具体实施例方式图1是ー个磁盘快组中的指纹存储器的布局图。I节点区存储文件或目录的inode。指纹存储器部署在I节点区后的磁盘空间,记录该磁盘块组中的所有数据块的指纹和索引信息。指纹存储区后的磁盘空间,存储数据块。图2是内存中指纹过滤器的设计图。它是ー个ニ级过滤器,第一级过滤器映射一个指纹的前n位,取名为索引键;第二级过滤器映射之后的k位,取名为桶键。索引表是ー个含有 2s个元素的数组,数组下标表示指纹的前n位,数组中存放前n位与其下标相同的其他指纹的地址。本过滤器将前n为相同的指纹聚集性地存到ー个磁盘数据块中,该数据块名叫桶,ー个桶中的内容包括桶键和该指纹对应的数据块的磁盘块号。桶键是指纹的[n+1,n+1+k]字段,这些指纹的前n位相同。桶键按照升序排序。若一个桶中的指纹放满,则开辟新数据块为桶,以链表形式相连。该方法进行虚拟机镜像传输与存储的步骤是:(I)镜像文件传输过程
客户端采用固定大小分块方式将文件切分为若干数据块,计算每个数据块的MD5散列值,将该散列值发送至服务端。然后服务端进行指纹库查找,如果该指纹已存在指纹库中,则表示该指纹对应的数据块已经存在服务端中,此时服务端通知客户端不用发送该数据块;如果该指纹不存在指纹库中,则表示服务端中不存在该指纹对应的数据块,服务端则通知客户端发送该数据块。客户端具体流程如下:
Step 1:读取数据文件,将文件根据固定长度切片算法进行切分,计算划分数据块的hash 值。Step 2 发送hash值发送至存储端服务端并等待服务端返回信息。Step J:服务端返回信息至客户端,指明该hash指纹值是否存在。若不存在,则发送相应的文件数据块,若存在,则返回step2,继续发送下ー个指紋。Step 如此反复,直到文件读取完毕。服务端流程如下:
Step 2:收到客户端发来的 hash指纹值后,通过内存指纹过滤器,指纹存储区查询。若找到,则更新数据块索引,向客户端发送“找到”信息,否则发送“未找到”信息。Step 未找到指紋,则启动接受数据环节,接受客户端传送来的文件数据,并将该数据块写入磁盘,调整指针。更新内存过滤器和指纹存储区,向客户端发送处理結果。Step 收到客户端发来的结束标志,更新镜像数据库,将该镜像标为active,退出流程。(2)指纹库查找过程
初始化指纹过滤器吋,首先分配ー个索引表,指纹存储器存在于磁盘上,它的设计遵循文件系统的磁盘布局,文件系统将数据块组织在快组中,为了充分利用空间局部性原理,将指纹存储器也放在每个块组中,图1说明了如何在快组中部署指纹存储器。每个块组中分配ー个指纹存储器,它是由指纹和引用计数为元素的数组。向磁盘写入数据块后,要更新数据块对应的指纹和索弓I次数。当一个指纹到达文件系统后,首先查找指纹过滤器,如果指纹与过滤器中“n+k”位前缀相匹配,过滤器将会返回相应的物理磁盘数据块号。有可能多个指纹具有相同“ n+k”位前缀,所以过滤器可能多次返回相同的块号。为了消除误报,文件系统将会根据返回的块号查找相应的指纹存储器,并且验证到达的指纹是否与指纹存储器中的完整指纹相匹配。本文件系统实现了一种指纹预取机制。当文件系统访问快组的指纹存储器时,不只是访问目标元素,并且将快组整个指纹过滤器预先读取到页缓冲区中,同一快组中的顺序写入就能够直接更新页缓冲区中的指纹过滤器,減少磁盘寻道次数。(3)镜像文件存储过程
该文件系统的数据写入分为两种情況。第一种情况是,当客户端发送至服务端的指纹已经存在于服务端时,此时需要更新指纹存储器中该指纹对应的引用计数,同时需要修改该镜像文件inode节点中文件逻辑块号所对应磁盘逻辑块号。第二种情况是,当客户端发送至服务端的指纹不存在于服务端时,此时首先要将该指纹写入指纹存储器,并且更新该指纹对应的引用计数。同时要求客户端发送该指纹对应的数据块,等服务端接收到数据块后,将该数据块写入磁盘。本方法中数据块的大小和文件系统簇大小一致,一个数据块存放入文件系统的ー个簇中,然后通过修改inode,使文件指针指向该簇。下面结合附图和实施方法对本发明作进ー步的详细说明。參照图3执行步骤来说明本发明实施过程:
(I)镜像文件传输过程
在生成镜像后,如步骤I所描述,向服务端发送写入文件的命令,服务端执行步骤2,处理写入命令;然后进行步骤3,把镜像文件的元数据发送至服务端,元数据包括:文件类型、访问权限、拥有者、时间戳、尺寸、数据块指针等。步骤4处理客户端发送的镜像文件元数据信息,根据文件的文件名,调用openO系统调用,打开文件,准备写入文件。开始步骤5,调用镜像文件切分处理程序,转入步骤6,判断当前文件指针是否是文件的结束,如果是,则进行步骤15,发送结束信号,通知服务端,本次镜像传输已经结束,否则进行步骤7,采用静态分块方式对镜像文件进行切分。通过执行步骤7计算分块的MD5散列值作为该分块的指紋,并且将指纹发送至服务端。在客户端收到服务端指纹库查询返回结果后,判断是否需要发送指纹对应的数据块,如果需要,执行步骤17,发送数据块。否则执行步骤11,处理下ー个分块。进入步骤6。(2)指纹库查找过程
服务端执行步骤8,进行指纹库查询,其查询步骤如下描述:
首先查找指纹过滤器,如果指纹与过滤器中“n+k”位前缀相匹配,过滤器将会返回相应的物理磁盘数据块号。然后根据返回的块号查找相应的指纹存储器,并且验证到达的指纹是否与指纹存储器中的完整指纹相匹配。如果到达指纹已经存在指纹库中,执行步骤10,更新指纹引用计数。如果未找到该指纹的记录,则表示该指纹不存在指纹库中,执行步骤12,保存指纹,并且更新指纹引用计数,同时通知客户端发送相应的数据块。( 3 )镜像文件存储过程
数据的存储包括两部分,一是指纹与指纹引用计数的存储,ニ是数据块的存储。指纹保存在指纹存储器中,其布局依据文件系统的磁盘布局,如图1所描述。特别之处在于,指纹存储区是基于文件系统布局的,把指纹放置在磁盘上,更加减少重复数据删除期间的磁盘寻道时间。如果查询结果表示到达指纹存在于指纹库中,则执行步骤10,更新指纹的引用计数。否则执行步骤12,保存接收到的指纹,并更新指纹引用计数。服务端接收到客户端发送的数据块后,执行步骤14,将数据块写入磁盘。
权利要求
1.一种基于重复数据删除的虚拟机镜像管理的优化方法,其特征在于该方法具体是: 当客户端需要上传新生成的虚拟机镜像文件吋,首先在镜像数据库注册该镜像,并在镜像服务端分配ー个inode给该镜像文件;在客户端,采用固定大小分块方法对镜像文件进行分块,数据块大小与服务端文件系统的簇大小相同;计算每个数据块的MD5散列值,该散列值即为指紋,然后依次将指纹发送至服务端;服务端守护进程接收到指纹后,通过访问指纹过滤器与指纹存储器,查找接收的指纹是否已经存在,服务端将查找结果返回至客户端;客户端根据返回的查找结果,如指纹已存在指纹存储器中,则表示该指纹对应的数据块已经存在,则不发送数据块,只要修改镜像服务端的inode中的指针,指向已存的相同数据块,并修改该数据块的索引次数;否则发送数据块,在保存数据块时,数据块直接存入ー个完整的簇,并将inode中指针指向新存入的数据块;重复上述过程,直至整个镜像文件发送完毕,并在镜像数据库中注册镜像文件可用。
全文摘要
本发明公开了一种基于重复数据删除的虚拟机镜像管理的优化方法。其具体为上传虚拟机镜像时,客户端采用固定大小分块方法将镜像文件分为若干数据块,数据块和本地文件系统的簇大小一致,再计算数据块的MD5值,使用Socket编程技术,将指纹发送至服务端,服务端进行指纹查找,将结果返回给客户端,客户端根据结果判定是否发送数据块,以节约网络资源;在服务端查找指纹时,使用指纹过滤器与指纹存储器减少内存使用量和磁盘访问量;在保存数据块时,数据块直接存入一个完整的簇,免除镜像恢复和切分的重复性工作。本发明实现了在线重复数据删除的核心态文件系统,减少磁盘存储量,降低网络消耗。
文档编号G06F9/455GK103139300SQ201310046540
公开日2013年6月5日 申请日期2013年2月5日 优先权日2013年2月5日
发明者张纪林, 韩书婷, 万健, 朱宝金, 周丽, 任永坚 申请人:杭州电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1