一种基于内容寻址存储的虚拟机镜像存储优化方法

文档序号:6382399阅读:214来源:国知局
专利名称:一种基于内容寻址存储的虚拟机镜像存储优化方法
技术领域
本发明涉及一种计算机存储系统中的存储优化方法,具体涉及一种应用于虚拟机镜像存储优化的方法;属于计算机科学文件系统领域。
背景技术
目前桌面虚拟化产品中大规模虚拟机镜像存储带来了数据重复存储的问题,增加了共享存储系统的存储空间压力,目前在桌面虚拟化应用的存储优化技术方面,主要的存储优化方法包括自动精简配置、分层存储以及冗余数据删除技术等。自动精简配置是一种存储管理的特性,核心原理是“欺骗”操作系统,让操作系统认为存储设备中有很大的存储空间,而实际上的物理存储空间则没有那么大。自动精简配置能够减少已分配但未使用的存储空间。其功能在于对数据块按需分配,而不是对所有存储空间需求进行预先分配。自动精简配置技术可以减少几乎所有空白空间,以避免利用率低下的情况出现。,分层存储其实是一种在高速小容量层级的介质层与低速大容量层级的介质层之间进行一种自动或者手动数据迁移、复制、管理等操作的一种存储技术及方案。作为存储技术来说,分层存储与存储虚拟化也是相互交叉、互为因果的一种关系。分层存储的实现需要存储虚拟化的支撑,这样才能将分层的实现与具体应用分离。重复数据删除技术是目前虚拟化存储领域的研究重点,一般来说,重复数据删除是在子文件级发现冗余数据的一种方法,它用一个指针代替重复的数据,这项技术可以有效减少磁盘存储空间需求,并降低数据传输的网络带宽需求。重复数据删除技术被用来解决数据重复存储的问题,它通过检测数据的内容相似性以合并存储重复数据,可以避免重复数据的多次存储,达到降低虚拟机镜像存储开销的目的。内容寻址存储技术(Content Addressable Storage,CAS)是经常被用于进行重复数据删除的方法之一。通过对大文件进行分块,并且对每个分块计算出一个指纹数据(md5或sha-Ι)来代表相应的文件内容,通过比较指纹数据来检测并消除重复数据块。相比于原始分块数据,指纹数据通常很小(只有16字节),因此可以达到很高的性能。自动精简配置、分层存储技术都没有针对虚拟机镜像文件内部以及文件之间都含有大量重复数据块的特点进行针对性的优化,因而达不到很好的存储优化效果。现有重复数据删除技术主要应用于备份系统中,即数据一旦写入,就不会发生变化。而虚拟机需要经常对镜像文件进行读取、写入和修改,因此现有的技术无法直接应用于虚拟机镜像的存储优化当中。

发明内容
本发明的目的是提出一种基于内容寻址技术的虚拟机镜像存储优化方法,达到在桌面虚拟化应用当中,减少大规模虚拟机镜像文件带来的存储开销的目的,同时要保证虚拟机的I/o性能不受太大影响以及系统的灵活性和可移植性。根据本发明的一个方面,提供了 一种基于内容寻址存储的虚拟机镜像存储优化方法,其特征在于包括步骤一在FUSE提供的文件操作接口实现CAS方式存储,其特征在于采用内容寻址存储方法,对虚拟机镜像文进行定长分块,每个分块大小为4KB,并对每个数据分块计算指纹(md5),通过指纹判断重复数据。对于内容相同的数据块只保留一份,并且在每一个分块文件中记录对应被共享的次数。原来的文件中实际保存的是优化后的文件大小信息以及对应分块数据的指纹序列,数据部分以分块文件的方式保存在共享存储系统里面,每个分块文件都是以其对应的md5值命名。每个分块文件的共享计数保存在文件的扩展属性当中。步骤二 在宿主机上挂载基于FUSE的用户态文件系统,其特征在于首先需要在宿主机上创建一个空目录用于挂载,之后,执行步骤101中生成的可执行文件,并把新建的目录作为命令行参数传入,即可实现对文件系统的挂载,挂载之后所有对挂载目录所执行的操作都会首先被FUSE截获并转换成基于CAS的存储方式。步骤三将虚拟机镜像文件拷入FUSE分区的目录中,其特征在于在拷贝的过程中镜像文件会被转换成CAS方式的存储。步骤四在FUSE分区的目录中启动虚拟机,其特征在于宿主机的虚拟机实例(VM)由远程的桌面客户端启动并操作,在此过程中,每个VM通过虚拟机监控器向宿主机所挂载的目录中的相应文件读写数据,对应的I/O系统调用所产生的相应VFS (VirtualFilesystemSwitch, Linux的虚拟文件系统转换器)调用在内核空间被FUSE的内核模块捕捉;然后,VFS调用被转发到用户态的FUSE接口程序中,该程序重新实现了每种VFS调用的对应的应答流程,在此过程中按照CAS的存储思路与远程的共享存储系统交互,重点完成了从虚拟机镜像文件到实际在共享存储系统中数据存储之间的转换,即用户所看到的每个虚拟机镜像文件(如数据盘文件、内存文件等)被划分成多个文件存储(每个文件存储一个或多个CAS数据块)。在上述过程中,从用户的角度看,用户是在操作本地的桌面系统;从虚拟机监控器的角度看,所操作的虚拟机文件和原存储方案(如直接存储在NFS、Ceph中)相同;从共享存储系统的角度看,所存储的虚拟机镜像文件被分成若干小的对象分别存储。


图1为基于FUSE实现的CAS文件系统的结构图。图2为基于内容寻址存储的虚拟机镜像存储优化方法的总体流程。图3显示了镜像文件的存储格式。图4为基于内容寻址存储的写流程。图5为基于内容寻址存储的读取流程。
具体实施例方式为使本发明的目的、技术方案和优点表达得更加清楚明白,下面结合附图及具体实施例对本发明再作进一步详细的说明。本发明是一种基于内容寻址存储的虚拟机镜像存储优化方法,通过对文件进行分块,并对每个分块数据计算出Hash指纹,通过Hash指纹的比较来检测并消除相同的数据块,达到降低存储开销的目的。并且利用FUSE(Filesystem in User Space,用户态文件系统)实现对CAS存储过程的封装,达到对宿主机透明存取和提高可移植性的目的。本发明在软件上,主要运行于Linux系统(支持FUSE架构)上,需要在FUSE的基础上实现一个用户态的文件系统,并且在FUSE的读写接口中实对内容寻址存储过程的封装。为了达到实现上述方法,本发明的技术方案是这样的其整体框架如图1所示,虚拟机运行在宿主机上,镜像则存储在共享存储系统中,宿主机中安装有共享存储系统的客户端软件,并通过网络与共享存储进行通信,虚拟机的I/o请求首先会被运行在宿主机上的虚拟机监控器截获,最终通过宿主机与共享存储系统进行交互,实现虚拟机对镜像文件的读写。一种基于内容寻址存储的虚拟机镜像存储优化方法主要实现在宿主机上,如图1中的FUSE (用户态文件系统)模块所示,基于FUSE架构,实现一个用户态文件系统,在FUSE提供的文件操作接口中实现基于内容寻址存储方式的存储。该方法主要包含以下步骤(图2)步骤201 :在FUSE提供的文件操作接口实现CAS方式存储;步骤202 :在宿主机上挂载基于FUSE的用户态文件系统;步骤203 :将虚拟机镜像文件拷入FUSE分区的目录中;步骤204 :在FUSE所在分区目录中启动虚拟机。其中,步骤201需要在FUSE提供的文件操作接口实现CAS方式存储,是本发明的关键步骤,主要方法如下采用CAS方法,对虚拟机镜像文进行分块后计算指纹序列,通过指纹序列判断重复数据。对于内容相同的数据块只保留一份,并且在每一个分块文件中记录对应被共享的次数。原来的文件中实际保存的是指纹序列(图3),数据部分保存在共享存储系统里面。Hash算法使用通用的md5算法,并用128位作为缓存(Hash)值保存在原文件中。分块文件则保存在指定的共享目录(共享文件系统)中。分块文件直接用其Hash值作为文件名。根据Hash值查找数据文件时,可直接在共享目录中查找是否存在指定文件名的文件。写入操作发生时,现在内容中计算出数据部分的Hash值,然后根据Hash创建的分块文件,若同名的分块文件已经存在则直接将其共享次数在原有的基础上加1,若不存在则创建新的文件并把共享次数标记为I。同理,当删除文件时,只有当文件的共享次数达到O才把文件真正从磁盘上删除,否则只是将其对应的共享次数减I即可。其中,步骤202需要在宿主机上挂载基于FUSE的文件系统,首先需要在宿主机上创建一个空目录用于挂载,之后,执行步骤101中生成的可执行文件,并把新建的目录作为命令行参数传入,即可实现对文件系统的挂载,挂载之后所有对挂载目录所执行的操作都会首先被FUSE截获并转换成基于CAS的存储方式。其中,步骤203 :需要将虚拟机镜像文件拷入FUSE分区的目录中,在拷贝的过程中镜像文件会被转换成CAS方式的存储。其中,步骤204在FUSE分区的目录中启动虚拟机,宿主机的虚拟机(VM)实例由远程的桌面客户端启动并操作,在此过程中,每个VM通过虚拟机监控器向宿主机所挂载的目录中的相应文件读写数据,对应的I/O系统调用所产生的相应VFS调用在内核空间被FUSE的内核模块捕捉;然后,VFS调用被转发到用户态的FUSE接口程序中,该程序重新实现了每种VFS调用的对应的应答流程,在此过程中按照CAS的存储思路与远程的共享存储系统交互,重点完成了从虚拟机镜像文件到实际在共享存储系统中数据存储之间的转换,即用户所看到的每个虚拟机镜像文件(如数据盘文件、内存文件等)被划分成多个文件存储(每个文件存储一个或多个CAS数据块)。在上述过程中,从用户的角度看,用户是在操作本地的桌面系统;从虚拟机监控器的角度看,所操作的虚拟机文件和原存储方案(如直接存储在NFS、Ceph中)相同;从共享存储系统的角度看,所存储的虚拟机镜像文件被分成若干小的对象分别存储。本发明的优点及功效本发明的目的是提出一种基于内容寻址存储的虚拟机镜像存储优化方式,目的在于减小大规模虚拟机镜像文件带来的存储开销。与现有方法相比,其主要有点有(一)高效性,经验证,本发明采用的基于内容寻址存储消除重复数据的方法能够将虚拟机镜像的磁盘占用量降低50%以上;(二)灵活性,采用基于FUSE架构来实现内容寻址存储的方法,程序全部在用户态实现,因此可以方便的部署到现有的系统当中,具有很高的可移植性,而无需对虚拟机和操作系统进行任何修改。下面详细说明每一步骤步骤201 :在FUSE提供的文件操作接口实现CAS方式存储,基于CAS方式存储的主要思想是,对原始镜像文件进行定长分块,分块大小为4KB,文件末尾不足4KB大小的以“O”填充。对每个分块计算出一个128位的md5指纹。如附图2,经过优化之后的镜像文件中首先存储原镜像文件的大小信息,数据类型为8字节无符号整数。接下来就是文件分块数据的Hash信息。在共享存储系统中,分块文件将直接以Hash序列来命名,对应的分块被共享的次数以整数的形式存在分块文件的扩展属性中。下面详细说明基于内容寻址存储的读写过程文件的写入函数(图3),对应于系统调用write。函数的操作流程如下I)根据偏移量计算出Hash序列的位置并读出Hash序列2)将Hash序列转换成对应分块文件的路径,并读出分块文件共享计数值,若共享计数为I则直接删除对应数据块文件,否则将共享计数值减I3)计算写入数据的md5值作为Hash值4)根据新的Hash值在共享存储系统中查找对应的数据块文件,若找到对应的文件则将共享计数值加1,否则,创建新的数据块文件并将共享计数值设为I5)更新文件指针,若还有数据要写入则转步骤1,若无则转步骤66)更新文件大小信息7)返回实际写入的字节数读取文件函数(图4),对应read系统调用I)判断是否到达文件结尾,若达到,则转步骤5,否则转步骤22)根据偏移量计算出Hash序列的位置并读出Hash序列3)根据读出的Hash序列,在共享存储中查找对应的数据块文件,并读取分块文件中的内容4)更新文件指针,若还有数据要继续读则转步骤3,若无则转75)返回实际所读的字节数
步骤202 :把步骤201中实现的基于FUSE的用户态文件系统挂载到宿主机的目录中,首先需要在宿主机中建立空的目录用户挂载,假设为/fuse (运行mkdir/fuse命令),之后,执行步骤101中生成的可执行文件(假设可执行文件名为fuse-cas),并把新建的目录作为命令行参数传入,即可实现对文件系统的挂载(挂载命令为./fuse-cas/fuse)。挂载之后所有对挂载目录所执行的操作都会首先被FUSE截获并转换成基于CAS的存储方式。步骤203,需要把已有的虚拟机镜像文件(假设为redhat-server.1mg)拷入挂载FUSE的目录或其子目录中。在镜像文件所在目录运行命令cp redhat-server.1mg/fuse即可实现拷贝。步骤204,在步骤203的基础上,优化后的虚拟机镜像文件存在/fuse目录中,把优化后的镜像文件路径作为参数传入虚拟机监控器即可启动(假设虚拟机监控器路径为/usr/libexec/qemu-kvm),经过优化之后,启动虚拟机的命令为/usr/libexec/qemu_kvm /fuse/redhat-server.1mgboot cml024_vnc:2&最后所应说明的是以上实施例仅用以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。
权利要求
1.一种基于内容寻址存储的虚拟机镜像存储优化方法,其特征在于包括 步骤ー在FUSE提供的文件操作接ロ实现CAS方式存储,其特征在于采用内容寻址存储方法,对虚拟机镜像文进行定长分块,每个分块大小为4KB,并对每个数据分块计算指纹(md5),通过指纹判断重复数据,对于内容相同的数据块只保留ー份,并且在每ー个分块文件中记录对应被共享的次数,原来的文件中实际保存的是优化后的文件大小信息以及对应分块数据的指纹序列,数据部分以分块文件的方式保存在共享存储系统里面,每个分块文件都是以其对应的md5值命名,每个分块文件的共享计数保存在文件的扩展属性当中;步骤ニ 在宿主机上挂载基于FUSE的用户态文件系统,其特征在于首先需要在宿主机上创建ー个空目录用于挂载,之后,执行步骤101中生成的可执行文件,并把新建的目录作为命令行參数传入,即可实现对文件系统的挂载,挂载之后所有对挂载目录所执行的操作都会首先被FUSE截获并转换成基于CAS的存储方式; 步骤三将虚拟机镜像文件拷入FUSE分区的目录中,其特征在于在拷贝的过程中镜像文件会被转换成CAS方式的存储; 步骤四在FUSE分区的目录中启动虚拟机,其特征在于宿主机的虚拟机实例(VM)由远程的桌面客户端启动并操作,在此过程中,每个VM通过虚拟机监控器向宿主机所挂载的目录中的相应文件读写数据,对应的I/O系统调用所产生的相应VFS (VirtualFilesystemSwitch, Linux的虚拟文件系统转换器)调用在内核空间被FUSE的内核模块捕捉;然后,VFS调用被转发到用户态的FUSE接ロ程序中,该程序重新实现了每种VFS调用的对应的应答流程,在此过程中按照CAS的存储思路与远程的共享存储系统交互,重点完成了从虚拟机镜像文件到实际在共享存储系统中数据存储之间的转换,即用户所看到的每个虚拟机镜像文件(如数据盘文件、内存文件等)被划分成多个文件存储(每个文件存储ー个或多个CAS数据块); 在上述过程中,从用户的角度看,用户是在操作本地的桌面系统;从虚拟机监控器的角度看,所操作的虚拟机文件和原存储方案(如直接存储在NFS、aph中)相同;从共享存储系统的角度看,所存储的虚拟机镜像文件被分成若干小的对象分别存储。
全文摘要
本发明涉及一种基于内容寻址存储的虚拟机镜像存储优化方法,具体包括如下内容采用CAS方法,对虚拟机镜像文进行分块后计算指纹序列,通过指纹序列判断重复数据。对于内容相同的数据块只保留一份,并且在每一个分块文件中记录对应被共享的次数。原来的文件中实际保存的是指纹序列(图3),数据部分保存在共享存储系统里面。为了保证对虚拟机监控器的透明存取及系统的可移植性,采用基于FUSE框架将对虚拟机镜像的操作过程封装到相应的系统调用应答接口的实现中,以服务FUSE内核模块所获取上层用户操作虚拟机所产生的I/O请求,从而将虚拟机镜像文件的直接存储转换为基于CAS方式的存储。本发明采用的基于内容寻址存储消除重复数据的方法能够将虚拟机镜像的磁盘占用量降低50%以上,针对目前虚拟机大规模应用的现状,本发明具有广泛的应用前景。
文档编号G06F9/445GK103034684SQ20121049109
公开日2013年4月10日 申请日期2012年11月27日 优先权日2012年11月27日
发明者肖利民, 赵国玉, 李秀桥, 唐浩夫 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1