《随需虚拟机映像流式传输.pdf》由会员分享,可在线阅读,更多相关《随需虚拟机映像流式传输.pdf(31页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103098043 A(43)申请公布日 2013.05.08CN103098043A*CN103098043A*(21)申请号 201180043347.9(22)申请日 2011.06.0612/879,594 2010.09.10 USG06F 15/16(2006.01)(71)申请人国际商业机器公司地址美国纽约(72)发明人唐春强(74)专利代理机构北京市中咨律师事务所 11247代理人张亚非 于静(54) 发明名称随需虚拟机映像流式传输(57) 摘要在一方面,随需映像流式传输(ODS)可以执行写时复制和读时复制两者,以将远程存储服务器上的数据逐渐带到主机的。
2、本地盘。可以在资源空闲的时间执行预取,以将数据从远程存储服务器带到主机的本地盘。新映像格式和用于管理程序的相应的块设备驱动器也可被提供。ODS的映像格式可以包括头部和位图,位图指示数据区段是在本地盘上还是在远程存储服务器上,以及例如以原始格式存储的映像内容。(30)优先权数据(85)PCT申请进入国家阶段日2013.03.08(86)PCT申请的申请数据PCT/US2011/039209 2011.06.06(87)PCT申请的公布数据WO2012/033554 EN 2012.03.15(51)Int.Cl.权利要求书3页 说明书19页 附图8页(19)中华人民共和国国家知识产权局(12)发。
3、明专利申请权利要求书3页 说明书19页 附图8页(10)申请公布号 CN 103098043 ACN 103098043 A1/3页21.一种用于虚拟机映像流式传输的方法,包括:将和选择的虚拟机相关的映像元数据从存储服务器复制到主机的本地存储,该存储服务器存储与一个或多个虚拟机分别对应的一个或多个映像模板,其中,主机的本地存储开始不包含选择的虚拟机的映像;使用复制的映像元数据在主机上启动选择的虚拟机;如果在主机上继续执行选择的虚拟机所需的数据未存储在主机的本地存储上,允许选择的虚拟机从存储服务器上的映像模板读取该所需的数据;如果读取的映像模板数据未存储在主机的本地存储上,将读取的映像模板数据从。
4、存储服务器复制到主机的本地存储,其中,对同一数据的后续读取是从主机的本地存储进行的;设置位图中的位,以指示读取的数据被存储在主机的本地存储上;以及利用资源空闲时间将和选择的虚拟机相关的映像模板数据从存储服务器预取到主机的本地存储。2.如权利要求1所述的方法,其中,所述映像元数据开始包括对映像模板和位图的引用,该位图将位映射到映像模板的相应区段。3.如权利要求1所述的方法,其中,在映像预取期间监视响应时间,且如果响应时间超过阈值,则暂停预取。4.如权利要求1所述的方法,其中,所述位图的大小与存储服务器上的映像模板的大小成比例,而不是与主机的本地存储上存储的相应映像的大小成比例。5.如权利要求1所。
5、述的方法,其中,所述位图的完整副本可被保持在存储器中。6.如权利要求1所述的方法,其中,通过直接读取和/或写入位于主机的本地存储中的区段而不用检查位图和/或不用更新位图,来处理选择的虚拟机对逻辑块地址超过存储服务器上的映像模板大小的区段的读和/或写请求。7.如权利要求1所述的方法,其中,在预取完成之后,直接使用存储在主机的本地存储中的映像数据,来执行选择的虚拟机所发出的一个或多个盘读和/或写请求,而不用检查位图和/或更新位图。8.如权利要求1所述的方法,位图被保持在存储器中以及在主机的盘上,且其中,读时复制操作仅更新存储器中的位图而不会立即更新盘上的位图。9.如权利要求1所述的方法,其中,读时。
6、复制操作不是在将数据返回到VM的关键路径上,且数据在后台被异步地保存到ODS映像,而同时VM继续处理从支持映像读取的数据。10.如权利要求1所述的方法,其中,如果存储服务器上的映像模板中的数据区段被完全填充为零,则主机的本地存储中存储的位图中的数据区段的初始状态被设置,就好像该数据区段已经被复制到主机的本地存储。11.如权利要求1所述的方法,其中,所述方法在管理程序中实现,提供管理程序的功能而不用对选择的虚拟机进行修改。12.一种用于随需虚拟机映像流式传输的方法,包括:将和虚拟机相关的映像元数据从源计算机复制到目标计算机,该源计算机存储与虚拟机对应的映像模板,其中,该目标计算机开始不包含虚拟机。
7、的映像模板;使用复制的映像元数据在目标计算机上启动虚拟机;权 利 要 求 书CN 103098043 A2/3页3如果在目标计算机上继续执行虚拟机所需的映像模板数据未存储在目标计算机上,允许目标计算机上的虚拟机读取源计算机上的该所需的映像模板数据;如果读取的映像模板数据未被存储在目标计算机上,将读取的映像模板数据从源计算机复制到目标计算机,其中,对同一数据的后续读取会读取在目标计算机上的复制数据;以及设置位图中的位,以指示读取的数据存储在目标计算机上。13.如权利要求12所述的方法,所述映像元数据开始包括对映像模板和位图的引用,该位图将位映射到映像模板的相应区段。14.如权利要求12所述的方法。
8、,还包括通过检查位图中的位来确定运行虚拟机所需的数据是否存储在目标计算机上,其中,依赖于位图中的位,虚拟机从源计算机或从目标计算机读取数据。15.如权利要求12所述的方法,还包括利用资源空闲时间将和虚拟机相关的映像模板的数据从源计算机预取到目标计算机。16.如权利要求12所述的方法,其中,所述步骤被执行,以用于从源计算机到目标计算机的虚拟机实时迁移,其中,不使用单独的存储服务器。17.一种存储指令程序的计算机可读存储介质,该指令程序可被机器执行以执行用于随需虚拟机映像流式传输的方法,包括:将和选择的虚拟机相关的映像元数据从存储服务器复制到主机的本地存储,该存储服务器存储与一个或多个虚拟机分别对。
9、应的一个或多个映像模板,其中,主机的本地存储开始不包含选择的虚拟机的映像模板;使用复制的映像元数据在主机上启动选择的虚拟机;如果在主机上继续执行选择的虚拟机所需的数据未存储在主机的本地存储上,允许选择的虚拟机从存储服务器上的映像模板读取该所需的数据;如果读取的映像模板数据未存储在主机的本地存储上,将读取的映像模板数据从存储服务器复制到主机的本地存储,其中,对同一数据的后续读取是从主机的本地存储进行的;以及设置位图中的位,以指示读取的数据存储在主机的本地存储上。18.如权利要求17所述的计算机可读存储介质,其中,所述映像元数据开始包括对映像模板的引用。19.如权利要求18所述的计算机可读存储介质。
10、,其中,所述映像元数据还包括位图,该位图将位映射到映像模板的相应区段。20.如权利要求17所述的计算机可读存储介质,还包括通过检查位图中的位来确定运行选择的虚拟机所需的数据是否存储在主机的本地存储上,其中,依赖于位图中的位,选择的虚拟机读取存储服务器上的映像模板或主机的本地存储上的复制的映像模板。21.如权利要求17所述的计算机可读存储介质,还包括利用资源空闲时间将和选择的虚拟机相关的映像模板的数据从存储服务器预取到主机的本地存储。22.一种随需虚拟机映像流式传输的系统,包括:目标计算机,其可操作以从源计算机复制和虚拟机相关的映像元数据,该源计算机存储与虚拟机对应的映像模板,其中,该目标计算机。
11、开始不包含虚拟机的映像模板;以及权 利 要 求 书CN 103098043 A3/3页4存储设备,其本地附加到目标计算机,所述目标计算机还可操作以使用复制的映像元数据在目标计算机上启动虚拟机,且如果在目标计算机上继续执行虚拟机所需的映像模板数据未存储在目标计算机上,允许目标计算机上的虚拟机读取源计算机上的该所需的映像模板数据,如果读取的映像模板数据未存储在目标计算机上,所述目标计算机还可操作以将读取的映像模板数据从源计算机复制到本地附加到目标计算机的存储设备,其中,对同一数据的后续读取是从本地附加到目标计算机的存储设备进行的,所述目标计算机还可操作以设置位图中的位,来指示读取的数据存储在目标计。
12、算机上。23.如权利要求22所述的系统,其中,所述映像元数据开始包括对映像模板的引用。24.如权利要求23所述的系统,其中,所述映像元数据还包括位图,该位图将位映射到映像模板的相应区段。25.如权利要求22所述的系统,还包括利用资源空闲时间将和虚拟机相关的映像模板数据从源计算机预取到目标计算机。权 利 要 求 书CN 103098043 A1/19页5随需虚拟机映像流式传输技术领域0001 本申请一般涉及计算机系统,且更具体而言,涉及例如用于云环境等的随需虚拟机映像流式传输(on demand virtual machine image streaming)。背景技术0002 在云计算环境中,。
13、可以从如下多个源分配虚拟机(VM)所需的块设备存储:主机的直接附加存储(DAS即本地盘)、网络附加存储(NAS例如NFS)、或存储区域网络(SAN)。这些选择提供了不同成本下的不同性能、可靠性和可用性。0003 一种目前已知的VM创建方法将整个VM文件以原始(raw)格式(物理块设备的内容的逐字节的复制)从NAS上存储的只读映像模板复制到主机本地的DAS。只有那时,主机的VM才能被启动和执行。由于将整个映像模板复制到DAS直到新的VM可被启动和使用所需的时间,这样的方法带来了长延时。0004 另一种已知的方法仅执行到主机的DAS的写时复制,即仅在DAS上存储修改的数据,而总是从支持映像(bac。
14、king image)读取未修改的数据。使用NAS上存储的映像模板作为支持映像可以支持较快的VM创建,因为它不需要在创建新VM时将映像模板从NAS复制到DAS。但是,从NAS重复地读取未修改的数据会产生过多的网络流量和共享NAS服务器上的I/O负载。在涉及很多VM的云环境中尤其这样。这样的方法将需要云环境提供具有处理这种流量和I/O负载的足够能力的网络和NAS服务器。0005 作为另一种考虑,现有的管理程序可以仅在VM的映像文件存储在NAS上时才迁移VM。可能是由于不能迁移在DAS运行的VM,云提供者可以简单地通知用户即将到来的主机上的维护操作,并请求用户处理失去VM的后果。这对于云服务提供者。
15、来说可能是简单的,但可能不是云用户希望的。发明内容0006 提供了一种用于随需虚拟机映像流式传输的方法和系统。一方面,该方法可以包括将和选择的虚拟机相关的映像元数据从存储服务器复制到主机的本地存储,该存储服务器存储与一个或多个虚拟机分别对应的一个或多个映像模板(也被称为支持映像),其中主机的本地存储开始不包含选择的虚拟机的映像。该方法还可以包括使用复制的映像元数据在主机上启动选择的虚拟机,如果在主机上继续执行选择的虚拟机所需的数据未被存储在主机的本地存储上,允许选择的虚拟机从存储服务器上的映像模板读取该所需的数据。该方法还可以包括,如果读取的映像模板数据未存储在主机的本地存储上,将读取的映像模。
16、板数据从存储服务器复制到主机的本地存储。对同一数据的后续读取是从主机的本地存储进行的。该方法还可以包括设置位图中的位,以指示读取的数据存储在主机的本地存储上。该方法还可以包括利用资源空闲时间将和选择的虚拟机相关的映像模板(支持映像)的数据从存储服务器预取到主机的本地存储。0007 另一方面,一种用于随需虚拟机映像流式传输的方法可以包括将和虚拟机相关的说 明 书CN 103098043 A2/19页6映像元数据从存储与虚拟机对应的映像的源计算机复制到目标计算机,其中,该目标计算机开始不包含虚拟机的映像。该方法还可以包括使用复制的映像元数据在目标计算机上启动虚拟机,且如果在目标计算机上继续执行虚拟。
17、机所需的映像数据未存储在目标计算机上,允许目标计算机上的虚拟机读取源计算机上的所需的映像数据。该方法还可以包括,如果读取的映像数据未存储在目标计算机上,将读取的映像数据从源计算机复制到目标计算机,其中,对同一数据的后续读取会读取在目标计算机上的复制的数据。该方法还可以包括设置位图中的比特,以指示读取的数据被存储在目标计算机上。0008 在一方面,一种用于随需虚拟机映像流式传输的系统可以包括目标计算机,其可操作以从源计算机复制和虚拟机相关的映像元数据,该源计算机存储与虚拟机对应的映像模板,其中,该目标计算机开始不包含虚拟机的映像模板,以及本地附加到目标计算机的存储设备。所述目标计算机还可操作以使。
18、用复制的映像元数据在目标计算机上启动虚拟机,且如果在目标计算机上继续执行虚拟机所需的映像模板数据未被存储在目标计算机上,允许目标计算机上的虚拟机读取源计算机上的该所需的映像模板数据。如果读取的映像模板数据未存储在目标计算机上,所述目标计算机还可操作以将读取的映像模板数据从源计算机复制到本地附加到目标计算机的存储设备,其中,对同一数据的后续读取是从本地附加到目标计算机的存储设备进行的。所述目标计算机还可操作以设置位图中的比特,以指示读取的数据存储在目标计算机上。0009 提供了一种存储指令程序的计算机可读存储介质,该指令程序可被机器执行来执行在此描述的一种或多种方法。0010 下面参考附图来详细。
19、描述各个实施例的其他特征以及结构和操作。在图中,相同的标号表示相同或功能类似的元素。附图说明0011 图1是示出本公开的一个实施例的系统组件和随需虚拟机(VM)流式传输所执行的操作流程的图。0012 图2示出了本公开的一个实施例的ODS映像格式的简化图。0013 图3是本公开的一个实施例的KVM/QEMU堆栈中的ODS驱动器。0014 图4A和图4B示出了使用RAW映像和本公开的一个实施例中的ODS映像的VM创建的对比。0015 图5示出了用于本公开的ODS进行的使用本地存储的虚拟机的实时迁移的系统组件和操作流程。0016 图6是示出一个实施例中的用于创建新VM的方法的流程图。0017 图7是。
20、示出一个实施例中的用于VM的实时迁移的方法的流程图。0018 图8A-8D示出了本公开的一个实施例的ODS的不同特征的可能不同的用例。具体实施方式0019 本公开的一个实施例中的虚拟机映像的随需映像流式传输(ODS)可以执行写时复制(CoW)、读时复制(CoR)和预取。通过在计算机主机的本地盘(例如直接附加存储(DAS)上保存返回区段的副本来使用,读时复制避免了从远程存储服务器(例如网络附加存储说 明 书CN 103098043 A3/19页7(NAS)重复读取数据区段(sector)。预取利用空闲时间将还未被虚拟机访问的剩余映像从远程存储服务器(例如NAS)复制到本地盘(例如DAS)。在写时。
21、复制和读时复制期间,本公开的一个实施例提供了更新盘上的数据和元数据两者,其中,元数据指示数据现在被存储在本地盘(例如DAS)而不是远程存储服务器(例如NAS)上。0020 本公开的一个实施例中的ODS可以包括新的映像格式以及用于QEMU的相应块设备驱动器。本公开的一个实施例中的ODS可以针对其映像被存储在主机的直接附加存储上的虚拟机来设计。ODS的主要用例包括(1)在直接附加存储(例如DAS,即主机的本地盘)上立即创建虚拟机(VM),而不用等待完成从远程存储服务器向DAS复制VM映像模板,以及(2)在使用DAS来寄放(host)VM的机器之间的实时VM迁移。0021 本公开的一个实施例中的OD。
22、S可以执行写时复制和读时复制两者,以将远程存储服务器上的数据逐渐带到主机的本地盘。对于具有大量VM的云环境,读时复制避免了从远程存储服务器重复读取相同的数据区段,该重复读取会产生过多的网络流量或存储服务器上的输入/输出(I/O)负载。本公开的一个实施例的ODS还可以执行预取。它寻找空闲时间来将还未接触的映像数据从远程存储服务器复制到主机的本地盘。一个实施例中的ODS映像格式包括(1)头部,(2)位图,其指示数据区段被存储在本地盘还是远程存储服务器上,以及(3)以原始格式存储的映像内容。0022 图1是示出由本公开的一个实施例的系统组件和随需虚拟机(VM)流式传输所执行的操作流程的图。存储服务器。
23、102存储相应的一个或多个虚拟机的一个或多个映像模板104。存储服务器102一般位于相对于寄放虚拟机106的主机108的远程,并通过网络100来连接。存储服务器102的例子可以是NAS服务器。存储服务器102可以被共享(例如共享存储服务器(SONAS),并可以保持通过网络文件系统(NFS)输出的映像模板。本地盘112的例子可以是DAS。DAS可以被认为是临时(ephemeral)存储而NAS可以被认为是临时存储。临时存储可被用于存储VM的包含根文件系统的盘映像。当VM终止时,临时存储上的数据会丢失。可选地,用户可以将持久存储附加到VM。持久存储的存在超过VM的生命期,且例如可被用于存储关系型数。
24、据库的持久数据。在云环境中,临时存储是主机的本地盘提供的,可能不用硬件RAID。0023 VM可基于只读映像模板104来创建,所述只读映像模板存储在存储服务器102上并可被所有主机(寄放或运行VM的计算机或机器)访问。VM的虚拟盘114可被存储为主机的文件系统中的普通文件116。主机(计算节点)108可以包括管理程序,例如KVM。管理程序(或虚拟机监视器)是一种软件组件,其允许多个操作系统同时运行在给定机器(硬件或处理器)上。依赖于管理程序,可以支持虚拟盘114的多种格式。例如,KVM/QEMU支持虚拟盘的多种格式。KVM是Linux内核虚拟化基础结构。它将QEMU用于I/O仿真。RAW格式是。
25、在普通文件中存储的物理块设备的内容的逐字节复制。QCOW2是QEMU支持的另一映像格式。QCOW2映像仅存储修改的数据,而未修改的数据总是从支持映像(即存储服务器,例如NAS)读取。0024 开始,主机108的本地盘112不包含用于运行选择的虚拟机106的映像模板。响应于接收到开始或启动VM106的指令,本公开的一个实施例中的ODS将较小的映像元数据118从存储服务器104复制到如116所示的本地盘112。映像元数据包括头部和位图。头部标识映像模板,且位图被用于标识映像模板的哪些部分(例如区段)被本地存储。在其初说 明 书CN 103098043 A4/19页8始状态下,一个实施例中的位图标识。
26、了全部用零填充的映像模板区段。在运行时,不需要将这些填充零的区段从存储服务器104复制到本地盘112。本公开的另一实施例中的ODS可以忽略将小的映像元数据库118从存储服务器104复制到如116所示的本地盘112的步骤。在该情形下,在本地盘112上从头创建元数据,位图中的所有比特被设置为指示所有数据区段都没有被本地存储。正式的实施例具有不复制映像模板中的填充零的区段的优势。VM106使用映像元数据118来启动,且当VM106访问并从存储服务器102读取额外的数据104以用于其启动和执行时,该数据也被复制和保存到本地盘112作为本地映像116。位图中的一个或多个位也被更新,以指示映像模板104中。
27、的相应数据部分或区段已被本地存储。当下一次VM106需要访问同一数据时,本地存储的版本被使用,而不是通过网络来访问存储服务器102上的映像模板104。0025 本公开的ODS的运行时操作可以包括在后台通过网络的异步读时复制、写时复制和预取映像数据。对于异步读时复制,当VM106第一次读取一个区段时,主机108上的用本公开的ODS增强的管理程序通过网络110从远程存储服务器102获取该区段。在后台,主机108上的用本公开的一个实施例的ODS增强的管理程序将该区段存储在其本地ODS文件116中,并相应地设置位图。位图是ODS映像的一部分,并被存储在本地盘上。本公开的一个实施例中,该区段的后续读取总。
28、是直接从本地ODS文件116获取数据。对于直接写入(写时复制)到本地盘,当VM写入一个区段时,主机108上的用本公开的一个实施例中的ODS增强的管理程序直接写入本地ODS文件116,而不需要从存储服务器102获取4KB数据。本公开的一个实施例中的ODS还可以在后台通过网络预取映像数据。通过可配置策略的引导,作为后台操作,主机108上的用本公开的一个实施例中的ODS增强的管理程序可以以流式传输方式通过网络110来预取整个原始映像数据104。例如,预取策略可以要求预取可以在VM106运行12小时之后并在午夜开始,此时网络110和存储服务器102上的工作量较轻。结果,根据该示例性策略,对于生命期小于。
29、12小时的VM,不会预取数据。在一个实施例中,系统管理员或其他用户可以设置策略。0026 图2示出了本公开的一个实施例中的ODS映像格式的简化视图。图2示出的ODS格式的虚拟盘可以被分配给主机或计算机上运行的每个VM。一方面,ODS映像基于只读支持映像。ODS头部202存储对支持映像206的引用,以用于标识虚拟机映像模板。支持映像是指在持久存储中存储的虚拟机映像模板。引用可以是虚拟机映像模板的文件名,例如,存储ODS映像所基于的原始映像的名称的字符串。其他引用可被用于标识虚拟机映像模板。ODS映像格式还包括位图204,例如,其中一个位用于虚拟盘映像中的每个数据区段。该位指示相应区段的当前内容被。
30、存储在ODS映像中还是在支持映像中。例如,如果其相应的区段已从原始映像复制到ODS映像,或者如果该区段已经被VM本地写入,则该位被设置为1。位图的大小与本公开的一个实施例中的映像模板的大小成比例。ODS块设备驱动器例如在QEMU中实现,该QEMU了解ODS格式并处理VM所发出的盘输入/输出(I/O)请求。用于映像数据208的空间开始可以是空的;开始没有数据,且开始不需要保留空间。用于映像数据208的空间的大小可变得与模板映像相同,映像数据从该模板映像被复制。0027 ODS映像格式还可以包括用于扩展盘数据的空间210。用于扩展盘数据的空间210可以是任意大小,且该大小可以随时间改变,以支持映像。
31、大小调整。在模板映像中没有用于该空间210的相应数据。此外,不需要对应于该空间210中的数据的位图。于是,位图的大说 明 书CN 103098043 A5/19页9小不依赖于用于扩展盘数据的空间210的大小;用于扩展盘数据的空间210所引起的ODS映像大小调整不会影响位图。调整ODS映像的大小以添加“用于扩展盘数据的空间”是恒定时间的操作,不管“扩展盘数据”的大小。只需要修改ODS映像的“头部”中的“disk_size”字段。该空间210中的数据仅可被本地使用。用于扩展盘数据的空间是可选的。0028 为了启动新的VM,主机在其本地盘(例如DAS)上创建ODS映像,其对支持映像的引用指向存储服务。
32、器(例如NAS)中存储的映像模板206。例如,仅包含头部和位图的ODS映像可被复制到本地盘(例如DAS)。VM然后可以被立即启动,而不用从存储服务器(例如NAS)向本地盘(例如DAS)复制任何映像数据(模板映像),即ODS映像的“用于盘数据的空间”区段208开始是空的。作为例子,对于10吉字节(GB)初始原始映像,位图可以只有2.5兆字节(MB)。在创建和启动新的VM时,只需要通过网络来复制2.5MB的位图加上小的头部字段。在处理来自VM的盘写请求时,QEMU的ODS驱动器可以将数据存储在ODS映像208中,并相应地更新位图。该行为被称为“写时复制”。0029 在处理来自VM的盘读请求时,OD。
33、S驱动器检查位图204来确定被请求的数据是否在ODS映像中。如果是,从ODS映像读取数据并返回给VM。如果不是,从支持映像206读取数据并返回给VM。当VM继续处理返回的数据时,在后台,返回数据的副本被保存在ODS映像208中且位图204被相应地更新,从而对同一数据的以后的读取请求将从本地盘(例如DAS)上的ODS映像而不是从存储服务器(例如NAS)上的支持映像208获取它们。该行为被称为“读时复制”。使用该读时复制行为,数据区段可从存储服务器(例如NAS)读取至多一次,其有助于避免产生过多的网络流量和存储服务器(例如NAS)上的I/O负载。0030 读时复制将支持映像206的内容从存储服务器。
34、(例如NAS)逐渐迁移到主机的本地盘(例如DAS)。ODS的预取机制还可以利用空闲资源来加速数据迁移。表1示出了本公开的一个实施例中的盘上ODS映像的详细布局的例子。0031 表10032 0033 说 明 书CN 103098043 A6/19页100034 disk_data部分可以存储原始格式的盘内容。具有逻辑块地址LBA=n的区段的内容可被存储在disk_datan*512,其中,512是区段大小。0035 图3是本公开的一个实施例中的KVM/QEMU堆栈(示例性管理程序)中的ODS驱动器。操作系统内核302例如Linux内核可以在硬件处理器304上执行。操作系统内核302可以运行多个。
35、管理程序,例如KVM、KVM的不同供应商版本等。管理程序的另一例子是Xen。管理程序306(例如KVM)允许虚拟机310在硬件处理器304上运行。此外,管理程序306可以支持多种虚拟映像格式308,例如原始、qcow2和本公开的ODS。在虚拟机310启动时,虚拟机试图读取相应虚拟盘(本地盘上的映像格式308)上的第一区段(例如512千字节(KB)。被扩展为与本公开的ODS一起运行的管理程序检测到ODS映像还未在虚拟盘(本地盘)中存在,并开始(执行)本公开的ODS方法。本公开的ODS如这里所述在所需的数据上进行流式传输,在一个实施例中即时启动VM。作为实现,管理程序用户空间程序(例如qemu-k。
36、vm用户空间程序)可被改变来增加ods.c和ods.h,而不用修改其他代码。特别地,不需要对计算机节点的内核(例如Linux)进行修改。0036 图4A和图4B示出了使用RAW映像和ODS映像来创建VM的对比。0037 所示的例子同时创建三个VM。如图4A所示,使用RAW映像格式的VM创建过程需要等待直到将整个映像模板从存储服务器(例如NAS)复制到本地盘(例如DAS),且只有那时VM才被启动。即使很多被复制的映像数据在VM启动过程中不需要且甚至在VM的生命期中都不会被访问,也是这样的情况。本公开的一个实施例中的ODS创建过程如图4B所示。ODS立即启动VM,而不用本地盘(例如DAS)上的任可映像数据,并在它们需要被VM访问时随需将数据从存储服务器(例如NAS)复制到主机的本地盘(例如DAS)。此外,ODS的预取机制寻找资源空闲时间,以将还未被VM访问的剩余映像或映像部分从存储服务器(例如NAS)复制到本地盘(例如DAS)。预取可以是保守的,其在于如果ODS检测到任何资源(例如存储服务器、本地盘或网络)上的争用,ODS可以暂时停止预取并在此后拥塞消失或缓解时,恢复预取。在另一实施例中,一旦映像模板整体被预取操作复制到本地盘,本公开还可以在主机说 明 书CN 103098043 A10。