一种虚拟机镜像文件存储、分发方法及装置制造方法

文档序号:7816269阅读:720来源:国知局
一种虚拟机镜像文件存储、分发方法及装置制造方法
【专利摘要】本发明提供了一种虚拟机镜像文件存储、分发方法及装置。存储方法包括:将镜像文件分割成定长的镜像文件块;对镜像文件块进行存储。通过对镜像文件定长切块存储,可以有效节约虚拟机镜像文件的存储空间,同时保证了较高的压缩比。分发方法包括:确定归属本客户端节点虚拟机的镜像文件块;基于P2P协议与其他客户端节点建立连接;在其他客户端节点中存在本客户端节点虚拟机所需的镜像文件块时,从其他客户端节点中获取,否则从数据服务器获取所需的镜像文件块;或者,在本客户端节点虚拟机中存在其他客户端节点虚拟机所需的镜像文件块时,将镜像文件块发送。采用P2P协议实现虚拟机客户端间的镜像文件分发,有效提升了虚拟机镜像文件分发的效率和速度。
【专利说明】一种虚拟机镜像文件存储、分发方法及装置

【技术领域】
[0001] 本发明涉及数据存储【技术领域】,特别涉及一种虚拟机镜像文件存储、分发方法及 装直。

【背景技术】
[0002] "云计算"、"云存储"是近年来出现较为重要的技术概念,给计算机科学以及互联 网的发展带来了长远的影响。云计算、云存储隐藏了底层复杂的基础设施和管理逻辑,为用 户提供了简洁、易用、可动态调整的资源池。用户无需掌握云内部的专业知识,无需直接控 制云底层的基础设施,就可以方便地使用云技术提供的计算、存储资源,并且可以依据自己 的需求,更改资源的使用量,以便于节省成本。
[0003] 随着各大公司云数据中心的建成,云环境下的虚拟机规模急剧扩张,虚拟机之间 硬件资源的复用以及网络通信负载的加剧导致了整个云计算服务性能的下降,如何通过提 高虚拟环境下的服务性能来提升云系统的服务质量,成为虚拟机研究领域的重要课题。虚 拟机在运行过程中依赖于本身所需的虚拟机镜像文件,在大规模虚拟集群的数据中心中, 海量的虚拟机镜像文件的存储方案设计显得尤为重要。
[0004] 云计算环境创建新虚拟机时,使用的硬盘镜像通常是拷贝自一个模板镜像。而传 统的SAN(Storage Area Network and SAN protocols,存储域网络及其协议)存储设备不 支持容错处理,如果SAN设备失效,则整个系统都无法继续工作。
[0005] 可见,现有虚拟机镜像文件存储和分发中存在的问题如下:
[0006] 1.庞大的虚拟机镜像文件存储所占的存储空间巨大;
[0007] 2.虚拟机镜像文件的分发单纯依赖镜像文件数据服务器,导致镜像文件服务器会 成为网络热点,限制了虚拟机的建立及运行速度和鲁棒性。


【发明内容】

[0008] 本发明针对上述问题,提出了一种虚拟机镜像文件存储、分发方法及装置,用以解 决虚拟机镜像文件的海量存储浪费存储空间及分发效率低的问题。
[0009] 本发明提供了一种虚拟机镜像文件存储方法,包括如下步骤:
[0010] 将镜像文件分割成定长的镜像文件块;
[0011] 对镜像文件块进行存储。
[0012] 本发明提供了一种虚拟机镜像文件分发方法,包括如下步骤:
[0013] 确定归属本客户端节点虚拟机的镜像文件块;
[0014] 基于P2P (Peer to Peer,对等网络)协议与其他客户端节点建立连接;
[0015] 在确定其他客户端节点中存在本客户端节点虚拟机所需的镜像文件块时,从其他 客户端节点中获取该镜像文件块,否则从数据服务器获取所需的镜像文件块;或者,在确定 本客户端节点虚拟机中存在其他客户端节点虚拟机所需的镜像文件块时,将该镜像文件块 发送至其他客户端节点,其中,镜像文件块是将虚拟机镜像文件按定长分割后得到的。
[0016] 本发明提供了一种虚拟机镜像文件存储装置,包括:
[0017] 分割单元,用于将镜像文件分割成定长的镜像文件块;
[0018] 存储单元,用于对镜像文件块进行存储。
[0019] 本发明提供了一种虚拟机镜像文件分发装置,包括:
[0020] 确定单元,用于确定归属本客户端节点虚拟机的镜像文件块;
[0021] 连接单元,用于基于对等网络P2P协议与其他客户端节点建立连接;
[0022] 分发单元,用于在确定其他客户端节点中存在本客户端节点虚拟机所需的镜像文 件块时,从其他客户端节点中获取该镜像文件块,否则从数据服务器获取所需的镜像文件 块;或者,在确定本客户端节点虚拟机中存在其他客户端节点虚拟机所需的镜像文件块时, 将该镜像文件块发送至其他客户端节点,其中,镜像文件块是将虚拟机镜像文件按定长分 割后得到的。
[0023] 本发明有益效果如下:
[0024] 当前虚拟机镜像文件存储中,由于镜像文件数量庞大,导致虚拟机镜像文件存储 所占空间巨大。在本发明实施例提供的虚拟机镜像文件存储方案中,通过对虚拟机镜像文 件分割成定长的镜像文件块进行存储,由于通过对镜像文件定长分割成块,保证了较高的 压缩比,所以,可以有效节约虚拟机镜像文件的存储空间。
[0025] 另外,在现有的虚拟机镜像文件分发中单纯依赖镜像文件服务器,限制了虚拟机 的建立及运行速度和鲁棒性。针对该问题,在本发明实施例提供的虚拟机镜像文件分发方 案中,采用P2P协议在虚拟机客户端间进行镜像文件的快速克隆、分发,因为利用P2P虚拟 机镜像文件的分发方法,所有的镜像文件服务器和客户端节点均可作为镜像文件块的提供 者,相互交换存储的镜像文件块,有效将镜像文件服务器的数据传输负载转移到客户端节 点上,平衡了数据传输的负载,避免了网络热点的出现,有效缩短了拷贝镜像文件所需等待 的时间和10开销,提升了虚拟机镜像文件分发的效率和速度。

【专利附图】

【附图说明】
[0026] 下面将参照附图描述本发明的具体实施例,其中:
[0027] 图1为本发明实施例中虚拟机镜像文件存储方法的流程示意图;
[0028] 图2为本发明实施例中不同镜像文件切块大小下系统实现的去冗余压缩比示意 图;
[0029] 图3为本发明实施例中不同镜像文件切块大小参数下系统的10性能结果示意 图;
[0030] 图4为本发明实施例中镜像文件块存储方案10性能测试结果示意图;
[0031] 图5为本发明实施例中指纹计算的MD5算法与SHA-1算法的性能比较示意图;
[0032] 图6为本发明实施例中镜像文件块文件存储示意图;
[0033] 图7为本发明实施例中虚拟机镜像文件分发方法的流程示意图;
[0034] 图8为本发明实施例中虚拟机镜像文件分发方法的应用场景示意图;
[0035] 图9为本发明实施例中虚拟机镜像文件存储装置示意图;
[0036] 图10为本发明实施例中虚拟机镜像文件分发装置示意图;
[0037] 图11为本发明实施例中Bonnie++系统性能测试结果示意图;
[0038] 图12为本发明实施例中PostMark系统性能测试结果示意图;
[0039] 图13为本发明实施例中Linux虚拟机性能测试结果示意图;
[0040] 图14为本发明实施例中传输虚拟机镜像文件花费的时间对比示意图;
[0041] 图15为本发明实施例中按需传输时虚拟机的启动速度对比示意图。

【具体实施方式】
[0042] 为了使本发明的技术方案及优点更加清楚明白,以下结合附图对本发明的示例性 实施例进行进一步详细的说明,显然,所描述的实施例仅是本发明的一部分实施例,而不是 所有实施例的穷举。
[0043] 图1为本发明实施例中虚拟机镜像文件存储方法的流程示意图,如图1所示,在虚 拟机镜像文件存储时可以包括如下步骤:
[0044] 步骤101 :将镜像文件分割成定长的镜像文件块;
[0045] 步骤102 :对镜像文件块进行存储。
[0046] 实施中,定长的镜像文件块大小可以为4KB的N倍,其中N为自然数。
[0047] 具体的,采用定长的镜像文件块分割方案,使用4KB或者4KB整数倍大小作为镜像 文件块作为文件系统在磁盘上保存的基本数据块大小,保证了所有写入磁盘的数据可以按 照磁盘簇边界进行对齐。由于操作系统镜像和应用程序镜像均为只读,一旦写入镜像文件 之后不能再修改,因此,定长切分的方案可以保证较高的压缩比。
[0048] 由于镜像文件块的大小,将直接影响到系统的10性能以及存储压缩比。因此需要 选取一个最佳的数据块大小参数,以便获得10性能以及存储压缩比之间的平衡。
[0049] 图2为本发明实施例中不同镜像文件切块大小下系统实现的去冗余压缩比示意 图,如图2所示,通过对常用的183个总大小为2. 31TB的虚拟机镜像文件进行去冗余而得 至IJ,这些镜像文件包括了多个版本的Windows操作系统以及Linux操作系统,应用软件包括 了科学计算软件、生物信息学分析软件、数据库管理系统、办公系统、网络服务系统、集成开 发环境等多种组合,基本涵盖了绝大部分的虚拟机应用需求。所有的虚拟机文件系统存储 的磁盘簇大小都是4KB,因此,小于4KB的去冗余镜像文件块并不能对去冗余压缩比带来很 明显的提高。当镜像文件块大小增加时,系统整体的去冗余压缩比迅速下降。
[0050] 图3为本发明实施例中不同镜像文件切块大小参数下系统的10性能结果示意图, 如图3所示,实验数据来自Liquid,其中,Liquid是将本发明实施例中提供的虚拟机镜像文 件存储方法应用到实际中后,得到相应的虚拟机镜像文件存储系统,为了称呼方便,命名该 装置为"Liquid"。图3中标记了 Raw数据,是对本地的镜像文件块存储进行读写操作的性 能,因为读写的镜像文件块经过去冗余操作,只能是不相同的镜像文件块,其数量要比实际 写入镜像的数据要少。标记了去冗余的数据,则是考虑了去冗余压缩比而得到的结果,也即 表明了客户端文件系统给虚拟机所提供的实际10性能的指标。较小的数据块将会导致更 多的磁盘随机读写操作,因此将会破坏系统的10性能。随着镜像文件块的增长,10性能逐 渐提升,而在镜像文件块大小达到256KB之后逐渐稳定下来。
[0051] 基于本发明实施例中的实验结果以及实际使用经验表明,使用256KB至1MB范围 的镜像文件块大小可以取得良好的系统10性能以及去冗余压缩比,达到两者之间的平衡, 能够满足绝大部分的应用需求。
[0052] 实施中,定长的镜像文件块大小可以为256KB。
[0053] 具体实施中,在镜像文件块大小的选择方面,可自定义切块的大小,可以实现不同 大小切块的压缩存储,一般来说较大的切块方案意味着各镜像块之间的重复度更小,压缩 比更小,而较小的切块方案则由于元数据量的增量导致了系统10性能的下降。经过试验测 试,合适的切块大小为256KB,能够达到10性能与存储压缩比的平衡。
[0054] 图4为本发明实施例中镜像文件块存储方案10性能测试结果示意图,如图4所 示,采用本发明实施例中的虚拟机镜像文件存储方案与普通的Ext4(The fourth extended file system,扩展日志式文件系统第四版)文件系统设计进行比较对照,实验环境为32核 主频为2GHz的Intel(R)Xeon CPU E5-2640处理器,32GB内存服务器1台,安装本发明实施 中提供的虚拟机镜像文件存储系统Liquid,然后以256KB为默认镜像文件的切块大小,分 别写入1GB?160GB大小的镜像文件进行读写性能测试。测试结果显示,经过优化过的本 发明实施例中提供的存储方案,性能优于Ext4文件系统的存储性能,两者在镜像读取方面 的性能区别不大,但是在写入性能中可以明显看到,Ext4随着系统中存储镜像文件规模的 逐渐扩大,系统中元数据规模将显著增多,导致其在存储量大于10G后写入性能直线下降, 而本发明实施例中提供的存储方案中对于镜像文件写入的性能则支持相对稳定,在对于镜 像文件的大规模增长,其写入速度都稳定在40MB/S以上,读取性能则稳定在30MB/S左右, 整体上在支持海量镜像文件存储方面优于基于Ext4的方案。
[0055] 实施中,对镜像文件块进行存储时,可以按照磁盘簇边界对齐存储。
[0056] 具体实施中,分割成定长的镜像文件块可以为4KB或者4KB整数倍大小,在存储至 磁盘上可以按磁盘簇边界对齐存储,以有效利用磁盘空间。
[0057] 实施中,可以对存储的镜像文件块进行去冗余。
[0058] 具体实施中,对存储的镜像文件块去冗余,可以对镜像文件变长切块或者定长切 块,从效果来看,变长切块的效果更好,但实现复杂,计算量也大;本发明实施例中的镜像文 件块修改不多,定长切块易于实现,且能实现较好的压缩效果。
[0059] 实施中,可以对镜像文件块进行MD5 (Message Digest Algorithm MD5,消息摘要 算法第五版)指纹特征计算,确定镜像文件块的指纹特征;根据指纹特征对存储的镜像文 件块去冗余;在存储镜像文件块的同时存储其指纹特征。
[0060] 具体实施中,考虑到在存储虚拟机镜像文件过程中去冗余,需要检测镜像文件中 是否含有重复的镜像文件块。可以采用MD5加密算法来进行镜像文件指纹特征的计算,对 于具备相同指纹特征的镜像文件块,则被认为是重复冗余的镜像文件块。针对指纹特征算 法的选取,本发明实施例中,对MD5加密算法和SHA-1 (Secure Hash Algorithm,安全散列算 法)算法的性能进行测试比较,将二者应用于计算各定长镜像文件块的指纹特征,找出具 备相同数据的镜像块实施去冗余存储的过程。在本发明实施例中,使用了 1?16个线程并 发的计算测试,计算两种算法在相同线程数下所表现出的吞吐量性能差异性能。图5为本 发明实施例中指纹计算的MD5算法与SHA-1算法的性能比较示意图,具体测试比较结果如 图5所示:MD5算法在计算吞吐量上明显优于SHA-1算法,并在一定程度下会随着线程数目 的增加计算速度优势更为明显,而SHA-1算法则对于CPU计算资源的敏感程度不够,多线程 条件下计算吞吐量依然维持在较低的水平。因此,MD5是计算指纹特征的一种更加优异算 法。当然,除了 MD5算法,也可以采用可以实现同样功能其他算法。
[0061] 具体实施中,在完成一个应用程序或操作系统的镜像文件存储后,运行该镜像文 件时,对该镜像文件分块并进行MD5指纹特征计算,可以包括:
[0062] 将在不同虚拟机中需进行修改的镜像文件块存储在第一级缓存区,将最近读取的 只读镜像文件块存储在第二级缓存区;
[0063] 对第二级缓存区里的镜像文件块进行MD5指纹特征计算。
[0064] 具体实施中,可以在内存中维护两级缓存区,将在不同虚拟机中需进行修改的镜 像文件块存储在第一级缓存区,这里,第一级缓存区主要缓存各虚拟机客户端运行镜像文 件过程中需要频繁修改的镜像文件块,即,第一级缓存区可以命名为私有缓存,在第一级缓 存区中的镜像文件块不计算指纹特征。第二级缓存区主要保存最近读取的只读数据块,对 第二级缓存区中的镜像文件块进行指纹特征的计算。即,第一级缓存区中的镜像文件块只 有被刷入第二级缓存区中,才需要计算指纹特征,采用两级缓存可以有效减少镜像文件块 的指纹特征计算量,第一级缓存中的镜像文件块是针对不同虚拟机修改的,不能供其他虚 拟机使用,因此不需要计算其指纹特征,这样处理保证了对于频繁修改的镜像文件块能够 快速的完成,极大的提升系统的运打效率。
[0065] 实施中,可以根据LRU(Least Recently Used,近期最少使用算法)算法确定第二 缓存区中的镜像文件块。
[0066] 具体实施中,可以使用LRU算法进行缓存管理,加快虚拟机访问速度。LRU算法,即 最少使用页面置换算法,是为虚拟页式存储管理服务的。关于操作系统的内存管理,如何节 省利用容量不大的内存为最多的进程提供资源,一直是研究的重要方向。而内存的虚拟存 储管理,是现在较为通用的方式,具体为:在内存有限的情况下,扩展一部分外存作为虚拟 内存,真正的内存只存储当前运行时所用得到信息。这无疑极大地扩充了内存的功能,极大 地提高了计算机的并发处理能力。虚拟页式存储管理,则是将进程所需空间划分为多个页 面,内存中只存放当前所需页面,其余页面放入外存的管理方式。
[0067] 虚拟页式存储管理减少了进程所需的内存空间,却也带来了运行时间变长这一缺 点:进程运行过程中,不可避免地要把在外存中存放的一些信息和内存中已有的进行交换, 由于外存的低速,这一步骤所花费的时间不可忽略。因而,通过采取优秀的算法以减少读取 外存的次数,还可以进一步取得更好的效果。
[0068] 实施中,可以将镜像文件块合并为大数据块BLK(Block,数据块)文件后进行存 储。
[0069] 实施中,可以获取BLK文件的大小、空闲位置以及镜像文件块的指纹特征所对应 的位置偏移量;根据BLK文件的大小、空闲位置以及镜像文件块的指纹特征所对应的位置 偏移量,存储镜像文件块。
[0070] 实施中,可以采用位图文件bitmap记录BLK文件已使用和/或未使用的位置。
[0071] 具体实施中,图4为本发明实施例中镜像文件块存储方案10性能测试结果示意 图,图6为本发明实施例中镜像文件块文件存储示意图,通过对海量镜像文件块文件进行 合并管理,减少系统中海量的元数据操作,提高系统10性能,具体如图6和图5所示,传统 的虚拟机镜像文件存储方法是将所有的镜像文件块作为单独的存储文件放置在指定的目 录下,这样该目录下将产生大量的镜像文件块文件,同时伴随着大量的文件元数据管理,降 低系统性能。本发明实施中可以借鉴Haystack的原理来实现虚拟机镜像文件存储,S卩,将 多个镜像文件块进行合并,将其存在一个的大数据块BLK文件中。
[0072] 文件系统的上层需要对大数据块BLK的元数据进行管理,包括BLK文件的大小、空 闲位置、指纹特征对应偏移量等。这里可以采用BMP(Bitmap,图像文件格式)文件记录BLK 文件中使用与空闲记录的bitmap表,IDX(Index,索引)文件记录指纹特征对应镜像文件块 在BLK文件中的偏移位置,三个文件都以指纹的首个Byte字符作为其文件名前缀,具体可 以如下:
[0073] BMP文件:在每次进行新镜像文件块写入或数据删除时,需要用到BMP文件,该文 件以bit位的方式记录了 BLK文件中对应偏移量中的数据空间是否已经使用,写入镜像文 件块前,首先查看BMP文件中空闲的空间,删除的镜像文件块则将将其对应的bit位置为0。
[0074] IDX文件:记录对应BLK文件中的元数据内容,主要用于找到指纹特征对应的镜像 文件块在BLK文件中的偏移位置,所有镜像文件块的读取首先需要从IDX中读取对应偏移 位置,然后再从BLK文件中对应的偏移位置读取镜像文件块,为提高镜像文件块读取的速 度,可以将IDX文件内容缓存在内存中。
[0075] BLK文件:放置指纹特征对应的镜像文件块数据,BLK为一个类似镜像文件块集合 的数组,每个数组元素长度固定为镜像块的切块长度,即,在本发明实施例中为4KB或其整 数倍,对于镜像文件块位置的查找,由IDX文件指纹特征对应的镜像文件块位置来确定。
[0076] 如图6所示,基于上述三个文件,可以将大量的镜像文件块内容合并在同一个文 件中。在虚拟机用户在写入新的镜像块数据时,可以首先从BMP文件中获取可读写的位置 BLK_ID,BMP文件将该BLK_ID置为1,然后在IDX文件中写入对应指纹块到BLK_ID的映射, 同时将BLK文件中对应BLK_ID的偏移位置提供给用户进行写入操作。当镜像块已经存在于 Liquid中时,只需要从IDX文件中读取对应BLK_ID号,然后从BLK文件中读取相关数据。
[0077] 在解决虚拟机镜像文件存储的基础上,本发明实施例针对在现有的虚拟机镜像文 件分发中单纯依赖镜像文件服务器,限制了虚拟机的建立及运行速度和鲁棒性的问题,提 供了一种虚拟机镜像文件分发方法,图7为本发明实施例中虚拟机镜像文件分发方法实施 的流程示意图,如图7所示,该方法可以包括如下步骤:
[0078] 步骤701 :确定归属本客户端节点虚拟机的镜像文件块;
[0079] 步骤702 :基于P2P协议与其他客户端节点建立连接;
[0080] 步骤703 :在确定其他客户端节点中存在本客户端节点虚拟机所需的镜像文件块 时,从其他客户端节点中获取该镜像文件块,否则从数据服务器获取所需的镜像文件块;或 者,在确定本客户端节点虚拟机中存在其他客户端节点虚拟机所需的镜像文件块时,将该 镜像文件块发送至其他客户端节点,其中,镜像文件块是将虚拟机镜像文件按定长分割后 得到的。
[0081] 其中,步骤701和步骤702没有严格的时序要求,本领域技术人员应该明白,步骤 702既可以在步骤701之后执行,也可以在步骤701之前进行,本发明对上述步骤的执行顺 序不作限制。
[0082] 具体实施中,图8为本发明实施例中虚拟机镜像文件分发方法的应用场景示意 图,如图8所示,本发明实施例中基于P2P的数据分发模式,将镜像服务器上的数据传输负 载转移到客户端节点上,系统中所有的镜像文件服务器节点以及客户端节点都可以作为镜 像文件块的提供节点,互相之间通过交换存储的数据块指纹集合来实现信息的分发,实施 中,各个节点(包括镜像文件服务器节点和客户端节点)可以通过心跳包将节点负载相关 信息发送给与其连接的节点,以平衡系统中的负载分布,有效规避了网络热点的出现,避免 系统中瓶颈的出现。
[0083] 具体实施中,客户端节点会优先从与其连接的客户端节点中获取镜像文件块,只 有当所有与其连接的客户端节点中都不包含需要的镜像文件块对应的指纹特征时,客户端 节点才会向镜像文件服务器中发起读取请求,以获得所需要的镜像文件块,有效将镜像文 件服务器的数据传输负载转移到客户端节点上,平衡了数据传输的负载,避免了网络热点 的出现。
[0084] 实施中,可以进一步将从其他客户端或数据服务器获取的镜像文件块存放在缓存 区中。
[0085] 实施中,将从其他客户端或数据服务器获取的镜像文件块存放在缓存区中,可以 通过根据近期最少使用算法LRU确定缓存区中的镜像文件块。
[0086] 具体实施中,可以使用LRU算法进行缓存管理,加快虚拟机访问速度。LRU算法,即 最少使用页面置换算法,是为虚拟页式存储管理服务的。关于操作系统的内存管理,如何节 省利用容量不大的内存为最多的进程提供资源,一直是研究的重要方向。而内存的虚拟存 储管理,是现在较为通用的方式,具体为:在内存有限的情况下,扩展一部分外存作为虚拟 内存,真正的内存只存储当前运行时所用得到信息。这无疑极大地扩充了内存的功能,极大 地提高了计算机的并发处理能力。虚拟页式存储管理,则是将进程所需空间划分为多个页 面,内存中只存放当前所需页面,其余页面放入外存的管理方式。
[0087] 虚拟页式存储管理减少了进程所需的内存空间,却也带来了运行时间变长这一缺 点:进程运行过程中,不可避免地要把在外存中存放的一些信息和内存中已有的进行交换, 由于外存的低速,这一步骤所花费的时间不可忽略。因而,通过采取优秀的算法以减少读取 外存的次数,还可以进一步取得更好的效果。
[0088] 实施中,可以计算镜像文件块的MD5指纹特征;根据指纹特征确定其他客户端节 点中是否存在本客户端节点虚拟机所需的镜像文件块,或者,根据指纹特征确定本客户端 节点虚拟机中是否存在其他客户端节点虚拟机所需的镜像文件块。
[0089] 具体实施中,在通过虚拟机镜像文件分发方法获取一个应用程序或操作系统的镜 像文件后,运行该镜像文件时,对该镜像文件分块并进行MD5指纹特征计算,可以包括:
[0090] 将在不同虚拟机中需进行修改的镜像文件块存储在第一级缓存区,将最近读取的 只读镜像文件块存储在第二级缓存区;
[0091] 对第二级缓存区里的镜像文件块进行MD5指纹特征计算。
[0092] 具体实施中,可以在内存中维护两级缓存区,将在不同虚拟机中需进行修改的镜 像文件块存储在第一级缓存区,这里,第一级缓存区主要缓存各虚拟机客户端运行镜像文 件过程中需要频繁修改的镜像文件块,即,第一级缓存区可以命名为私有缓存,在第一级缓 存区中的镜像文件块不计算指纹特征。第二级缓存区主要保存最近读取的只读数据块,对 第二级缓存区中的镜像文件块进行指纹特征的计算。即,第一级缓存区中的镜像文件块只 有被刷入第二级缓存区中,才需要计算指纹特征,采用两级缓存可以有效减少镜像文件块 的指纹特征计算量,第一级缓存中的镜像文件块是针对不同虚拟机修改的,不能供其他虚 拟机使用,因此不需要计算其指纹特征,这样处理保证了对于频繁修改的镜像文件块能够 快速的完成,极大的提升系统的运打效率。
[0093] 实施中,可以根据LRU算法确定第二缓存区中的镜像文件块。
[0094] 实施中,根据指纹特征确定其他客户端节点中是否存在本客户端节点虚拟机所需 的镜像文件块,可以包括:向其他客户端节点发送本客户端节点虚拟机所需的镜像文件块 指纹特征集合;指纹特征集合用于供其他客户端节点根据该指纹特征集合确定是否存在本 客户端节点虚拟机所需的镜像文件块;或者,根据指纹特征确定本客户端节点虚拟机中是 否存在其他客户端节点虚拟机所需的镜像文件块,包括:接收其他客户端节点发送的该客 户端节点虚拟机所需的镜像文件块指纹特征集合;根据指纹特征集合确定是否存在该客户 端节点虚拟机所需的镜像文件块。
[0095] 具体实施中,系统中每个客户端节点可以都向元数据服务器节点寻问其他节点的 位置,并维持与这些客户端节点的连接,并且会周期的向这些客户端节点获取最新的镜像 文件块指纹特征集合,保证其维护客户端节点信息足够准确。当需要获取具有某个指纹特 征对应的镜像文件块时,客户端节点首先随机的选取几个其他客户端节点,检测这些与其 连接的客户端节点中是否包含了需要的镜像文件块对应的指纹特征,如果找到了需要的镜 像文件块对应的指纹特征,则从该客户端节点获取该镜像文件块。
[0096] P2P镜像文件分发协议中寻找Peer数据节点的算法,如下所示:
[0097]

【权利要求】
1. 一种虚拟机镜像文件存储方法,其特征在于,包括如下步骤: 将镜像文件分割成定长的镜像文件块; 对镜像文件块进行存储。
2. 如权利要求1所述的方法,其特征在于,定长的镜像文件块大小为4KB的N倍,其中 N为自然数。
3. 如权利要求2所述的方法,其特征在于,定长的镜像文件块大小为256KB。
4. 如权利要求1至3任一所述的方法,其特征在于,对镜像文件块进行存储时,按照磁 盘簇边界对齐存储。
5. 如权利要求1所述的方法,其特征在于,进一步包括: 对存储的镜像文件块进行去冗余。
6. 如权利要求5所述的方法,其特征在于,进一步包括: 对镜像文件块进行消息摘要算法第五版MD5指纹特征计算,确定镜像文件块的指纹特 征; 根据指纹特征对存储的镜像文件块去几余; 在存储镜像文件块的同时存储其指纹特征。
7. 如权利要求1所述的方法,其特征在于,将镜像文件块合并为大数据块BLK文件后进 行存储。
8. 如权利要求7所述的方法,其特征在于,包括: 获取BLK文件的大小、空闲位置以及镜像文件块的指纹特征所对应的位置偏移量; 根据BLK文件的大小、空闲位置以及镜像文件块的指纹特征所对应的位置偏移量,存 储镜像文件块。
9. 如权利要求8所述的方法,其特征在于,包括: 采用位图文件bitmap记录BLK文件已使用和/或未使用的位置。
10. -种虚拟机镜像文件分发方法,其特征在于,包括如下步骤: 确定归属本客户端节点虚拟机的镜像文件块; 基于对等网络P2P协议与其他客户端节点建立连接; 在确定其他客户端节点中存在本客户端节点虚拟机所需的镜像文件块时,从其他客户 端节点中获取所述镜像文件块,否则从数据服务器获取所需的镜像文件块;或者,在确定本 客户端节点虚拟机中存在其他客户端节点虚拟机所需的的镜像文件块时,将所述镜像文件 块发送至其他客户端节点,其中,所述镜像文件块是将虚拟机镜像文件按定长分割后得到 的。
11. 如权利要求10所述的方法,其特征在于,进一步包括:将从其他客户端或数据服务 器获取的镜像文件块存放在缓存区中。
12. 如权利要求11所述的方法,其特征在于,将从其他客户端或数据服务器获取的镜 像文件块存放在缓存区中包括:根据近期最少使用算法LRU确定缓存区中的镜像文件块。
13. 如权利要求10所述的方法,其特征在于,进一步包括: 计算镜像文件块的MD5指纹特征; 根据指纹特征确定其他客户端节点中是否存在本客户端节点虚拟机所需的镜像文件 块,或者,根据指纹特征确定本客户端节点虚拟机中是否存在其他客户端节点虚拟机所需 的的镜像文件块。
14. 如权利要求13所述的方法,其特征在于,根据指纹特征确定其他客户端节点中是 否存在本客户端节点虚拟机所需的镜像文件块,包括:向其他客户端节点发送本客户端节 点虚拟机所需的镜像文件块指纹特征集合;指纹特征集合用于供其他客户端节点根据该指 纹特征集合确定是否存在本客户端节点虚拟机所需的镜像文件块; 或者,根据指纹特征确定本客户端节点虚拟机中是否存在其他客户端节点虚拟机所需 的的镜像文件块,包括:接收其他客户端节点发送的该客户端节点虚拟机所需的镜像文件 块指纹特征集合;根据指纹特征集合确定是否存在该客户端节点虚拟机所需的镜像文件 块。
15. 如权利要求14所述的方法,其特征在于,进一步包括:镜像文件块指纹特征集合在 传输前采用Bloom Filter数据结构压缩处理。
16. 如权利要求10所述的方法,其特征在于,进一步包括: 以压缩速度高于网络带宽速度的压缩算法压缩所述镜像文件块。
17. 如权利要去16所述的方法,其特征在于,包括: 所述压缩算法为Google Snappy压缩算法。
18. -种虚拟机镜像文件存储装置,其特征在于,包括: 分割单元,用于将镜像文件分割成定长的镜像文件块; 存储单元,用于对镜像文件块进行存储。
19. 如权利要求18所述的装置,其特征在于,分割单元进一步用于按4KB的N倍将镜像 文件分割成定长的镜像文件块,其中N为自然数。
20. 如权利要求19所述的装置,其特征在于,分割单元进一步用于将镜像文件分割成 256KB大小的定长镜像文件块。
21. 如权利要求18至20任一所述的装置,其特征在于,存储单元进一步用于按照磁盘 簇边界对齐的方式存储镜像文件块。
22. 如权利要求18所述的装置,其特征在于,存储单元进一步用于对存储的镜像文件 块进行去冗余。
23. 如权利要求22所述的装置,其特征在于,进一步包括: 指纹特征单元,用于对镜像文件块进行MD5指纹特征计算,确定镜像文件块的指纹特 征; 存储单元进一步用于根据指纹特征对存储的镜像文件块去冗余,并在存储镜像文件块 的同时存储其指纹特征。
24. 如权利要求18所述的装置,其特征在于,存储单元进一步用于将镜像文件块合并 为大数据块BLK文件后进行存储。
25. 如权利要求24所述的装置,其特征在于,存储单元进一步用于根据BLK文件的大 小、空闲位置以及镜像文件块的指纹特征所对应的位置偏移量,存储镜像文件块。
26. 如权利要求25所述的装置,其特征在于,存储单元进一步用于采用位图文件 bitmap记录BLK文件已使用和/或未使用的位置。
27. -种虚拟机镜像文件分发装置,其特征在于,包括: 确定单元,用于确定归属本客户端节点虚拟机的镜像文件块; 连接单元,用于基于对等网络P2P协议与其他客户端节点建立连接; 分发单元,用于在确定其他客户端节点中存在本客户端节点虚拟机所需的镜像文件块 时,从其他客户端节点中获取所述镜像文件块,否则从数据服务器获取所述镜像文件块;或 者,在确定本客户端节点虚拟机中存在其他客户端节点虚拟机所需的镜像文件块时,将所 述镜像文件块发送至其他客户端节点,其中,所述镜像文件块是将虚拟机镜像文件按定长 分割后得到的。
28. 如权利要求27所述的装置,其特征在于,进一步包括:缓存单元,用于将从其他客 户端或数据服务器获取的镜像文件块存放在缓存区中。
29. 如权利要求28所述的装置,其特征在于,缓存单元,进一步用于根据近期最少使用 算法LRU确定缓存区中的镜像文件块。
30. 如权利要求27所述的装置,其特征在于,进一步包括: 指纹特征计算单元,用于计算所述镜像文件块的MD5指纹特征; 分发单元进一步用于根据指纹特征确定其他客户端节点中是否存在本客户端节点虚 拟机所需的镜像文件块,或者,根据指纹特征确定本客户端节点虚拟机中是否存在其他客 户端节点虚拟机所需的的镜像文件块。
31. 如权利要求30所述的装置,其特征在于,分发单元进一步用于在根据指纹特征确 定其他客户端节点中是否存在本客户端节点虚拟机所需的镜像文件块时,向其他客户端节 点发送本客户端节点虚拟机所需的镜像文件块指纹特征集合;指纹特征集合用于供其他客 户端节点根据该指纹特征集合确定是否存在本客户端节点虚拟机所需的镜像文件块;或 者,在根据指纹特征确定本客户端节点虚拟机中是否存在其他客户端节点虚拟机所需的的 镜像文件块时,接收其他客户端节点发送的该客户端节点虚拟机所需的镜像文件块指纹特 征集合;根据指纹特征集合确定是否存在该客户端节点虚拟机所需的镜像文件块。
32. 如权利要求31所述的装置,其特征在于,分发单元进一步用于在向其他客户端节 点发送本客户端节点虚拟机所需的镜像文件块指纹特征集合前,对所述镜像文件块指纹特 征集合进行Bloom Filter数据结构压缩处理。
33. 如权利要求27所述的装置,其特征在于,分发单元进一步用于以压缩速度高于网 络带宽速度的压缩算法压缩所述镜像文件块。
34. 如权利要求33所述的装置,其特征在于,分发单元进一步用于采用Google Snappy 压缩算法压缩所述镜像文件块。
【文档编号】H04L29/08GK104239575SQ201410524284
【公开日】2014年12月24日 申请日期:2014年10月8日 优先权日:2014年10月8日
【发明者】姜进磊, 武永卫, 杨广文, 赵勋, 何川 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1