随需虚拟机映像流式传输的制作方法

文档序号:6361615阅读:186来源:国知局
专利名称:随需虚拟机映像流式传输的制作方法
技术领域
本申请一般涉及计算机系统,且更具体而言,涉及例如用于云环境等的随需虚拟机映像流式传输(on demand virtual machine image streaming)。
背景技术
在云计算环境中,可以从如下多个源分配虚拟机(VM)所需的块设备存储:主机的直接附加存储(DAS即本地盘)、网络附加存储(NAS例如NFS)、或存储区域网络(SAN)。这些选择提供了不同成本下的不同性能、可靠性和可用性。一种目前已知的VM创建方法将整个VM文件以原始(raw)格式(物理块设备的内容的逐字节的复制)从NAS上存储的只读映像模板复制到主机本地的DAS。只有那时,主机的VM才能被启动和执行。由于将整个映像模板复制到DAS直到新的VM可被启动和使用所需的时间,这样的方法带来了长延时。另一种已知的方法仅执行到主机的DAS的写时复制,即仅在DAS上存储修改的数据,而总是从支持映像(backing image)读取未修改的数据。使用NAS上存储的映像模板作为支持映像可以支持较快的VM创建,因为它不需要在创建新VM时将映像模板从NAS复制到DAS。但是,从NAS重复地读取未修改的数据会产生过多的网络流量和共享NAS服务器上的I/O负载。在涉及很多VM的云环境中尤其这样。这样的方法将需要云环境提供具有处理这种流量和I/O负载的足够能力的网络和NAS服务器。作为另一种考虑,现有的管理程序可以仅在VM的映像文件存储在NAS上时才迁移VM。可能是由于不能迁移在DAS运行的VM,云提供者可以简单地通知用户即将到来的主机上的维护操作,并请求用户处理失去VM的后果。这对于云服务提供者来说可能是简单的,但可能不是云用户希望的。

发明内容
提供了一种用于随需虚拟机映像流式传输的方法和系统。一方面,该方法可以包括将和选择的虚拟机相关的映像元数据从存储服务器复制到主机的本地存储,该存储服务器存储与一个或多个虚拟机分别对应的一个或多个映像模板(也被称为支持映像),其中主机的本地存储开始不包含选择的虚拟机的映像。该方法还可以包括使用复制的映像元数据在主机上启动选择的虚拟机,如果在主机上继续执行选择的虚拟机所需的数据未被存储在主机的本地存储上,允许选择的虚拟机从存储服务器上的映像模板读取该所需的数据。该方法还可以包括,如果读取的映像模板数据未存储在主机的本地存储上,将读取的映像模板数据从存储服务器复制到主机的本地存储。对同一数据的后续读取是从主机的本地存储进行的。该方法还可以包括设置位图中的位,以指示读取的数据存储在主机的本地存储上。该方法还可以包括利用资源空闲时间将和选择的虚拟机相关的映像模板(支持映像)的数据从存储服务器预取到主机的本地存储。另一方面,一种用于随需虚拟机映像流式传输的方法可以包括将和虚拟机相关的映像元数据从存储与虚拟机对应的映像的源计算机复制到目标计算机,其中,该目标计算机开始不包含虚拟机的映像。该方法还可以包括使用复制的映像元数据在目标计算机上启动虚拟机,且如果在目标计算机上继续执行虚拟机所需的映像数据未存储在目标计算机上,允许目标计算机上的虚拟机读取源计算机上的所需的映像数据。该方法还可以包括,如果读取的映像数据未存储在目标计算机上,将读取的映像数据从源计算机复制到目标计算机,其中,对同一数据的后续读取会读取在目标计算机上的复制的数据。该方法还可以包括设置位图中的比特,以指示读取的数据被存储在目标计算机上。在一方面,一种用于随需虚拟机映像流式传输的系统可以包括目标计算机,其可操作以从源计算机复制和虚拟机相关的映像元数据,该源计算机存储与虚拟机对应的映像模板,其中,该目标计算机开始不包含虚拟机的映像模板,以及本地附加到目标计算机的存储设备。所述目标计算机还可操作以使用复制的映像元数据在目标计算机上启动虚拟机,且如果在目标计算机上继续执行虚拟机所需的映像模板数据未被存储在目标计算机上,允许目标计算机上的虚拟机读取源计算机上的该所需的映像模板数据。如果读取的映像模板数据未存储在目标计算机上,所述目标计算机还可操作以将读取的映像模板数据从源计算机复制到本地附加到目标计算机的存储设备,其中,对同一数据的后续读取是从本地附加到目标计算机的存储设备进行的。所述目标计算机还可操作以设置位图中的比特,以指示读取的数据存储在目标计算机上。提供了一种存储指令程序的计算机可读存储介质,该指令程序可被机器执行来执行在此描述的一种或多种方法。下面参考附图来详细描述各个实施例的其他特征以及结构和操作。在图中,相同的标号表示相同或功能类似的元素。


图1是示出本公开的一个实施例的系统组件和随需虚拟机(VM)流式传输所执行的操作流程的图。图2示出了本公开的一个实施例的ODS映像格式的简化图。图3是本公开的一个实施例的KVM/QEMU堆栈中的ODS驱动器。图4A和图4B示出了使用RAW映像和本公开的一个实施例中的ODS映像的VM创建的对比。图5示出了用于本公开的ODS进行的使用本地存储的虚拟机的实时迁移的系统组件和操作流程。图6是示出一个实施例中的用于创建新VM的方法的流程图。图7是示出一个实施例中的用于VM的实时迁移的方法的流程图。图8A-8D示出了本公开的一个实施例的ODS的不同特征的可能不同的用例。
具体实施例方式本公开的一个实施例中的虚拟机映像的随需映像流式传输(ODS)可以执行写时复制(CoW)、读时复制(CoR)和预取。通过在计算机主机的本地盘(例如直接附加存储(DAS))上保存返回区段的副本来使用,读时复制避免了从远程存储服务器(例如网络附加存储(NAS))重复读取数据区段(sector)。预取利用空闲时间将还未被虚拟机访问的剩余映像从远程存储服务器(例如NAS)复制到本地盘(例如DAS)。在写时复制和读时复制期间,本公开的一个实施例提供了更新盘上的数据和元数据两者,其中,元数据指示数据现在被存储在本地盘(例如DAS)而不是远程存储服务器(例如NAS)上。本公开的一个实施例中的ODS可以包括新的映像格式以及用于QEMU的相应块设备驱动器。本公开的一个实施例中的ODS可以针对其映像被存储在主机的直接附加存储上的虚拟机来设计。ODS的主要用例包括(I)在直接附加存储(例如DAS,即主机的本地盘)上立即创建虚拟机(VM),而不用等待完成从远程存储服务器向DAS复制VM映像模板,以及
(2)在使用DAS来寄放(host) VM的机器之间的实时VM迁移。本公开的一个实施例中的ODS可以执行写时复制和读时复制两者,以将远程存储服务器上的数据逐渐带到主机的本地盘。对于具有大量VM的云环境,读时复制避免了从远程存储服务器重复读取相同的数据区段,该重复读取会产生过多的网络流量或存储服务器上的输入/输出(I/O)负载。本公开的一个实施例的ODS还可以执行预取。它寻找空闲时间来将还未接触的映像数据从远程存储服务器复制到主机的本地盘。一个实施例中的ODS映像格式包括(I)头部,(2 )位图,其指示数据区段被存储在本地盘还是远程存储服务器上,以及(3)以原始格式存储的映像内容。图1是示出由本公开的一个实施例的系统组件和随需虚拟机(VM)流式传输所执行的操作流程的图。存储服务器102存储相应的一个或多个虚拟机的一个或多个映像模板104。存储服务器102 —般位于相对于寄放虚拟机106的主机108的远程,并通过网络100来连接。存储服务器102的例子可以是NAS服务器。存储服务器102可以被共享(例如共享存储服务器(S0NAS)),并可以保持通过网络文件系统(NFS)输出的映像模板。本地盘112的例子可以是DAS。DAS可以被认为是临时(印hemeral)存储而NAS可以被认为是临时存储。临时存储可被用于存储VM的包含根文件系统的盘映像。当VM终止时,临时存储上的数据会丢失。可选地,用户可以将持久存储附加到VM。持久存储的存在超过VM的生命期,且例如可被用于存储关系型数据库的持久数据。在云环境中,临时存储是主机的本地盘提供的,可能不用硬件RAID。VM可基于只读映像模板104来创建,所述只读映像模板存储在存储服务器102上并可被所有主机(寄放或运行VM的计算机或机器)访问。VM的虚拟盘114可被存储为主机的文件系统中的普通文件116。主机(计算节点)108可以包括管理程序,例如KVM。管理程序(或虚拟机监视器)是一种软件组件,其允许多个操作系统同时运行在给定机器(硬件或处理器)上。依赖于管理程序,可以支持虚拟盘114的多种格式。例如,KVM/QEMU支持虚拟盘的多种格式。KVM是Linux内核虚拟化基础结构。它将QEMU用于I/O仿真。RAW格式是在普通文件中存储的物理块设备的内容的逐字节复制。QC0W2是QEMU支持的另一映像格式。QC0W2映像仅存储修改的数据,而未修改的数据总是从支持映像(即存储服务器,例如NAS)读取。开始,主机108的本地盘112不包含用于运行选择的虚拟机106的映像模板。响应于接收到开始或启动VM106的指令,本公开的一个实施例中的ODS将较小的映像元数据118从存储服务器104复制到如116所示的本地盘112。映像元数据包括头部和位图。头部标识映像模板,且位图被用于标识映像模板的哪些部分(例如区段)被本地存储。在其初始状态下,一个实施例中的位图标识了全部用零填充的映像模板区段。在运行时,不需要将这些填充零的区段从存储服务器104复制到本地盘112。本公开的另一实施例中的ODS可以忽略将小的映像元数据库118从存储服务器104复制到如116所示的本地盘112的步骤。在该情形下,在本地盘112上从头创建元数据,位图中的所有比特被设置为指示所有数据区段都没有被本地存储。正式的实施例具有不复制映像模板中的填充零的区段的优势。VM106使用映像元数据118来启动,且当VM106访问并从存储服务器102读取额外的数据104以用于其启动和执行时,该数据也被复制和保存到本地盘112作为本地映像116。位图中的一个或多个位也被更新,以指示映像模板104中的相应数据部分或区段已被本地存储。当下一次VM106需要访问同一数据时,本地存储的版本被使用,而不是通过网络来访问存储服务器102上的映像模板104。本公开的ODS的运行时操作可以包括在后台通过网络的异步读时复制、写时复制和预取映像数据。对于异步读时复制,当VM106第一次读取一个区段时,主机108上的用本公开的ODS增强的管理程序通过网络110从远程存储服务器102获取该区段。在后台,主机108上的用本公开的一个实施例的ODS增强的管理程序将该区段存储在其本地ODS文件116中,并相应地设置位图。位图是ODS映像的一部分,并被存储在本地盘上。本公开的一个实施例中,该区段的后续读取总是直接从本地ODS文件116获取数据。对于直接写入(写时复制)到本地盘,当VM写入一个区段时,主机108上的用本公开的一个实施例中的ODS增强的管理程序直接写入本地ODS文件116,而不需要从存储服务器102获取4KB数据。本公开的一个实施例中的ODS还可以在后台通过网络预取映像数据。通过可配置策略的引导,作为后台操作,主机108上的用本公开的一个实施例中的ODS增强的管理程序可以以流式传输方式通过网络110来预取整个原始映像数据104。例如,预取策略可以要求预取可以在VM106运行12小时之后并在午夜开始,此时网络110和存储服务器102上的工作量较轻。结果,根据该示例性策略,对于生命期小于12小时的VM,不会预取数据。在一个实施例中,系统管理员或其他用户可以设置策略。图2示出了本公开的一个实施例中的ODS映像格式的简化视图。图2示出的ODS格式的虚拟盘可以被分配给主机或计算机上运行的每个VM。一方面,ODS映像基于只读支持映像。ODS头部202存储对支持映像206的引用,以用于标识虚拟机映像模板。支持映像是指在持久存储中存储的虚拟机映像模板。引用可以是虚拟机映像模板的文件名,例如,存储ODS映像所基于的原始映像的名称的字符串。其他引用可被用于标识虚拟机映像模板。ODS映像格式还包括位图204,例如,其中一个位用于虚拟盘映像中的每个数据区段。该位指示相应区段的当前内容被存储在ODS映像中还是在支持映像中。例如,如果其相应的区段已从原始映像复制到ODS映像,或者如果该区段已经被VM本地写入,则该位被设置为I。位图的大小与本公开的一个实施例中的映像模板的大小成比例。ODS块设备驱动器例如在QEMU中实现,该QEMU 了解ODS格式并处理VM所发出的盘输入/输出(I/O)请求。用于映像数据208的空间开始可以是空的;开始没有数据,且开始不需要保留空间。用于映像数据208的空间的大小可变得与模板映像相同,映像数据从该模板映像被复制。ODS映像格式还可以包括用于扩展盘数据的空间210。用于扩展盘数据的空间210可以是任意大小,且该大小可以随时间改变,以支持映像大小调整。在模板映像中没有用于该空间210的相应数据。此外,不需要对应于该空间210中的数据的位图。于是,位图的大小不依赖于用于扩展盘数据的空间210的大小;用于扩展盘数据的空间210所引起的ODS映像大小调整不会影响位图。调整ODS映像的大小以添加“用于扩展盘数据的空间”是恒定时间的操作,不管“扩展盘数据”的大小。只需要修改ODS映像的“头部”中的“disk_size”字段。该空间210中的数据仅可被本地使用。用于扩展盘数据的空间是可选的。为了启动新的VM,主机在其本地盘(例如DAS)上创建ODS映像,其对支持映像的引用指向存储服务器(例如NAS)中存储的映像模板206。例如,仅包含头部和位图的ODS映像可被复制到本地盘(例如DASXVM然后可以被立即启动,而不用从存储服务器(例如NAS)向本地盘(例如DAS)复制任何映像数据(模板映像),即ODS映像的“用于盘数据的空间”区段208开始是空的。作为例子,对于10吉字节(GB)初始原始映像,位图可以只有2.5兆字节(MB)0在创建和启动新的VM时,只需要通过网络来复制2.5MB的位图加上小的头部字段。在处理来自VM的盘写请求时,QEMU的ODS驱动器可以将数据存储在ODS映像208中,并相应地更新位图。该行为被称为“写时复制”。在处理来自VM的盘读请求时,ODS驱动器检查位图204来确定被请求的数据是否在ODS映像中。如果是,从ODS映像读取数据并返回给VM。如果不是,从支持映像206读取数据并返回给VM。当VM继续处理返回的数据时,在后台,返回数据的副本被保存在ODS映像208中且位图204被相应地更新,从而对同一数据的以后的读取请求将从本地盘(例如DAS)上的ODS映像而不是从存储服务器(例如NAS)上的支持映像208获取它们。该行为被称为“读时复制”。使用该读时复制行为,数据区段可从存储服务器(例如NAS)读取至多一次,其有助于避免产生过多的网络流量和存储服务器(例如NAS)上的I/O负载。读时复制将支持映像206的内容从存储服务器(例如NAS)逐渐迁移到主机的本地盘(例如DAS)。ODS的预取机制还可以利用空闲资源来加速数据迁移。表I示出了本公开的一个实施例中的盘上ODS映像的详细布局的例子。表I
权利要求
1.种用于虚拟机映像流式传输的方法,包括: 将和选择的虚拟机相关的映像元数据从存储服务器复制到主机的本地存储,该存储服务器存储与ー个或多个虚拟机分别对应的ー个或多个映像模板,其中,主机的本地存储开始不包含选择的虚拟机的映像; 使用复制的映像元数据在主机上启动选择的虚拟机; 如果在主机上继续执行选择的虚拟机所需的数据未存储在主机的本地存储上,允许选择的虚拟机从存储服务器上的映像模板读取该所需的数据; 如果读取的映像模板数据未存储在主机的本地存储上,将读取的映像模板数据从存储服务器复制到主机的本地存储,其中,对同一数据的后续读取是从主机的本地存储进行的; 设置位图中的位,以指示读取的数据被存储在主机的本地存储上;以及 利用资源空闲时间将和选择的虚拟机相关的映像模板数据从存储服务器预取到主机的本地存储。
2.权利要求1所述的方法,其中,所述映像元数据开始包括对映像模板和位图的引用,该位图将位映射到映像模板的相应区段。
3.权利要求1所述的方法,其中,在映像预取期间监视响应时间,且如果响应时间超过阈值,则暂停预取。
4.权利要求1所述的方法,其中,所述位图的大小与存储服务器上的映像模板的大小成比例,而不是与主机的本地存储上存储的相应映像的大小成比例。
5.权利要求1所述的方法,其中,所述位图的完整副本可被保持在存储器中。
6.权利要求1所述的方法,其中,通过直接读取和/或写入位于主机的本地存储中的区段而不用检查位图和/或不用更新位图,来处理选择的虚拟机对逻辑块地址超过存储服务器上的映像模板大小的区段的读和/或写请求。
7.权利要求1所述的方法,其中,在预取完成之后,直接使用存储在主机的本地存储中的映像数据,来执行选择的虚拟机所发出的一个或多个盘读和/或写请求,而不用检查位图和/或更新位图。
8.权利要求1所述的方法,位图被保持在存储器中以及在主机的盘上,且其中,读时复制操作仅更新存储器中的位图而不会立即更新盘上的位图。
9.权利要求1所述的方法,其中,读时复制操作不是在将数据返回到VM的关键路径上,且数据在后台被异步地保存到ODS映像,而同时VM继续处理从支持映像读取的数据。
10.权利要求1所述的方法,其中,如果存储服务器上的映像模板中的数据区段被完全填充为零,则主机的本地存储中存储的位图中的数据区段的初始状态被设置,就好像该数据区段已经被复制到主机的本地存储。
11.权利要求1所述的方法,其中,所述方法在管理程序中实现,提供管理程序的功能而不用对选择的虚拟机进行修改。
12.种用于随需虚拟机映像流式传输的方法,包括: 将和虚拟机相关的映像元数据从源计算机复制到目标计算机,该源计算机存储与虚拟机对应的映像模板,其中,该目标计算机开始不包含虚拟机的映像模板; 使用复制的映像元数据在目标计算机上启动虚拟机;如果在目标计算机上继续执行虚拟机所需的映像模板数据未存储在目标计算机上,允许目标计算机上的虚拟机读取源计算机上的该所需的映像模板数据; 如果读取的映像模板数据未被存储在目标计算机上,将读取的映像模板数据从源计算机复制到目标计算机,其中,对同一数据的后续读取会读取在目标计算机上的复制数据;以及 设置位图中的位,以指示读取的数据存储在目标计算机上。
13.权利要求12所述的方法,所述映像元数据开始包括对映像模板和位图的引用,该位图将位映射到映像模板的相应区段。
14.权利要求12所述的方法,还包括通过检查位图中的位来确定运行虚拟机所需的数据是否存储在目标计算机上,其中,依赖于位图中的位,虚拟机从源计算机或从目标计算机读取数据。
15.权利要求12所述的方法,还包括利用资源空闲时间将和虚拟机相关的映像模板的数据从源计算机预取到目标计算机。
16.权利要求12所述 的方法,其中,所述步骤被执行,以用于从源计算机到目标计算机的虚拟机实时迁移,其中,不使用単独的存储服务器。
17.种存储指令程序的计算机可读存储介质,该指令程序可被机器执行以执行用于随需虚拟机映像流式传输的方法,包括: 将和选择的虚拟机相关的映像元数据从存储服务器复制到主机的本地存储,该存储服务器存储与ー个或多个虚拟机分别对应的ー个或多个映像模板,其中,主机的本地存储开始不包含选择的虚拟机的映像模板; 使用复制的映像元数据在主机上启动选择的虚拟机; 如果在主机上继续执行选择的虚拟机所需的数据未存储在主机的本地存储上,允许选择的虚拟机从存储服务器上的映像模板读取该所需的数据; 如果读取的映像模板数据未存储在主机的本地存储上,将读取的映像模板数据从存储服务器复制到主机的本地存储,其中,对同一数据的后续读取是从主机的本地存储进行的;以及 设置位图中的位,以指示读取的数据存储在主机的本地存储上。
18.权利要求17所述的计算机可读存储介质,其中,所述映像元数据开始包括对映像模板的引用。
19.权利要求18所述的计算机可读存储介质,其中,所述映像元数据还包括位图,该位图将位映射到映像模板的相应区段。
20.权利要求17所述的计算机可读存储介质,还包括通过检查位图中的位来确定运行选择的虚拟机所需的数据是否存储在主机的本地存储上,其中,依赖于位图中的位,选择的虚拟机读取存储服务器上的映像模板或主机的本地存储上的复制的映像模板。
21.权利要求17所述的计算机可读存储介质,还包括利用资源空闲时间将和选择的虚拟机相关的映像模板的数据从存储服务器预取到主机的本地存储。
22.种随需虚拟机映像流式传输的系统,包括: 目标计算机,其可操作以从源计算机复制和虚拟机相关的映像元数据,该源计算机存储与虚拟机对应的映像模板,其中,该目标计算机开始不包含虚拟机的映像模板;以及存储设备,其本地附加到目标计算机, 所述目标计算机还可操作以使用复制的映像元数据在目标计算机上启动虚拟机,且如果在目标计算机上继续执行虚拟机所需的映像模板数据未存储在目标计算机上,允许目标计算机上的虚拟机读取源计算机上的该所需的映像模板数据, 如果读取的映像模板数据未存储在目标计算机上,所述目标计算机还可操作以将读取的映像模板数据从源计算机复制到本地附加到目标计算机的存储设备,其中,对同一数据的后续读取是从本地附加到目标计算机的存储设备进行的, 所述目标计算机还可操作以设置位图中的位,来指示读取的数据存储在目标计算机上。
23.权利要求22所述的系统,其中,所述映像元数据开始包括对映像模板的引用。
24.权利要求23所述的系统,其中,所述映像元数据还包括位图,该位图将位映射到映像模板的相应区段。
25.权利要求22所述的系统,还包括利用资源空闲时间将和虚拟机相关的映像模板数据从源计算机预取到目标计算 机。
全文摘要
在一方面,随需映像流式传输(ODS)可以执行写时复制和读时复制两者,以将远程存储服务器上的数据逐渐带到主机的本地盘。可以在资源空闲的时间执行预取,以将数据从远程存储服务器带到主机的本地盘。新映像格式和用于管理程序的相应的块设备驱动器也可被提供。ODS的映像格式可以包括头部和位图,位图指示数据区段是在本地盘上还是在远程存储服务器上,以及例如以原始格式存储的映像内容。
文档编号G06F15/16GK103098043SQ201180043347
公开日2013年5月8日 申请日期2011年6月6日 优先权日2010年9月10日
发明者唐春强 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1