CN103098043B - 随需虚拟机映像流式传输的方法和系统 - Google Patents
随需虚拟机映像流式传输的方法和系统 Download PDFInfo
- Publication number
- CN103098043B CN103098043B CN201180043347.9A CN201180043347A CN103098043B CN 103098043 B CN103098043 B CN 103098043B CN 201180043347 A CN201180043347 A CN 201180043347A CN 103098043 B CN103098043 B CN 103098043B
- Authority
- CN
- China
- Prior art keywords
- reflection
- data
- virtual machine
- bitmap
- ods
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 107
- 238000003860 storage Methods 0.000 claims abstract description 115
- 230000008569 process Effects 0.000 claims description 46
- 230000006870 function Effects 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 20
- 230000005012 migration Effects 0.000 claims description 16
- 238000013508 migration Methods 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 14
- 230000005540 biological transmission Effects 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 21
- 230000006399 behavior Effects 0.000 description 17
- 238000004590 computer program Methods 0.000 description 15
- 238000005457 optimization Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000006378 damage Effects 0.000 description 3
- 230000005291 magnetic effect Effects 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000002045 lasting effect Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000003362 replicative effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000009415 formwork Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
- Television Signal Processing For Recording (AREA)
Abstract
在一方面,随需映像流式传输(ODS)可以执行写时复制和读时复制两者,以将远程存储服务器上的数据逐渐带到主机的本地盘。可以在资源空闲的时间执行预取,以将数据从远程存储服务器带到主机的本地盘。新映像格式和用于管理程序的相应的块设备驱动器也可被提供。ODS的映像格式可以包括头部和位图,位图指示数据区段是在本地盘上还是在远程存储服务器上,以及例如以原始格式存储的映像内容。
Description
技术领域
本申请一般涉及计算机系统,且更具体而言,涉及例如用于云环境等的随需虚拟机映像流式传输(on demand virtual machine imagestreaming)。
背景技术
在云计算环境中,可以从如下多个源分配虚拟机(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的主要用例包括(1)在直接附加存储(例如DAS,即主机的本地盘)上立即创建虚拟机(VM),而不用等待完成从远程存储服务器向DAS复制VM映像模板,以及(2)在使用DAS来寄放(host)VM的机器之间的实时VM迁移。
本公开的一个实施例中的ODS可以执行写时复制和读时复制两者,以将远程存储服务器上的数据逐渐带到主机的本地盘。对于具有大量VM的云环境,读时复制避免了从远程存储服务器重复读取相同的数据区段,该重复读取会产生过多的网络流量或存储服务器上的输入/输出(I/O)负载。本公开的一个实施例的ODS还可以执行预取。它寻找空闲时间来将还未接触的映像数据从远程存储服务器复制到主机的本地盘。一个实施例中的ODS映像格式包括(1)头部,(2)位图,其指示数据区段被存储在本地盘还是远程存储服务器上,以及(3)以原始格式存储的映像内容。
图1是示出由本公开的一个实施例的系统组件和随需虚拟机(VM)流式传输所执行的操作流程的图。存储服务器102存储相应的一个或多个虚拟机的一个或多个映像模板104。存储服务器102一般位于相对于寄放虚拟机106的主机108的远程,并通过网络100来连接。存储服务器102的例子可以是NAS服务器。存储服务器102可以被共享(例如共享存储服务器(SONAS)),并可以保持通过网络文件系统(NFS)输出的映像模板。本地盘112的例子可以是DAS。DAS可以被认为是临时(ephemeral)存储而NAS可以被认为是临时存储。临时存储可被用于存储VM的包含根文件系统的盘映像。当VM终止时,临时存储上的数据会丢失。可选地,用户可以将持久存储附加到VM。持久存储的存在超过VM的生命期,且例如可被用于存储关系型数据库的持久数据。在云环境中,临时存储是主机的本地盘提供的,可能不用硬件RAID。
VM可基于只读映像模板104来创建,所述只读映像模板存储在存储服务器102上并可被所有主机(寄放或运行VM的计算机或机器)访问。VM的虚拟盘114可被存储为主机的文件系统中的普通文件116。主机(计算节点)108可以包括管理程序,例如KVM。管理程序(或虚拟机监视器)是一种软件组件,其允许多个操作系统同时运行在给定机器(硬件或处理器)上。依赖于管理程序,可以支持虚拟盘114的多种格式。例如,KVM/QEMU支持虚拟盘的多种格式。KVM是Linux内核虚拟化基础结构。它将QEMU用于I/O仿真。RAW格式是在普通文件中存储的物理块设备的内容的逐字节复制。QCOW2是QEMU支持的另一映像格式。QCOW2映像仅存储修改的数据,而未修改的数据总是从支持映像(即存储服务器,例如NAS)读取。
开始,主机108的本地盘112不包含用于运行选择的虚拟机106的映像模板。响应于接收到开始或启动VM 106的指令,本公开的一个实施例中的ODS将较小的映像元数据118从存储服务器104复制到如116所示的本地盘112。映像元数据包括头部和位图。头部标识映像模板,且位图被用于标识映像模板的哪些部分(例如区段)被本地存储。在其初始状态下,一个实施例中的位图标识了全部用零填充的映像模板区段。在运行时,不需要将这些填充零的区段从存储服务器104复制到本地盘112。本公开的另一实施例中的ODS可以忽略将小的映像元数据库118从存储服务器104复制到如116所示的本地盘112的步骤。在该情形下,在本地盘112上从头创建元数据,位图中的所有比特被设置为指示所有数据区段都没有被本地存储。正式的实施例具有不复制映像模板中的填充零的区段的优势。VM 106使用映像元数据118来启动,且当VM 106访问并从存储服务器102读取额外的数据104以用于其启动和执行时,该数据也被复制和保存到本地盘112作为本地映像116。位图中的一个或多个位也被更新,以指示映像模板104中的相应数据部分或区段已被本地存储。当下一次VM 106需要访问同一数据时,本地存储的版本被使用,而不是通过网络来访问存储服务器102上的映像模板104。
本公开的ODS的运行时操作可以包括在后台通过网络的异步读时复制、写时复制和预取映像数据。对于异步读时复制,当VM 106第一次读取一个区段时,主机108上的用本公开的ODS增强的管理程序通过网络110从远程存储服务器102获取该区段。在后台,主机108上的用本公开的一个实施例的ODS增强的管理程序将该区段存储在其本地ODS文件116中,并相应地设置位图。位图是ODS映像的一部分,并被存储在本地盘上。本公开的一个实施例中,该区段的后续读取总是直接从本地ODS文件116获取数据。对于直接写入(写时复制)到本地盘,当VM写入一个区段时,主机108上的用本公开的一个实施例中的ODS增强的管理程序直接写入本地ODS文件116,而不需要从存储服务器102获取4KB数据。本公开的一个实施例中的ODS还可以在后台通过网络预取映像数据。通过可配置策略的引导,作为后台操作,主机108上的用本公开的一个实施例中的ODS增强的管理程序可以以流式传输方式通过网络110来预取整个原始映像数据104。例如,预取策略可以要求预取可以在VM 106运行12小时之后并在午夜开始,此时网络110和存储服务器102上的工作量较轻。结果,根据该示例性策略,对于生命期小于12小时的VM,不会预取数据。在一个实施例中,系统管理员或其他用户可以设置策略。
图2示出了本公开的一个实施例中的ODS映像格式的简化视图。图2示出的ODS格式的虚拟盘可以被分配给主机或计算机上运行的每个VM。一方面,ODS映像基于只读支持映像。ODS头部202存储对支持映像206的引用,以用于标识虚拟机映像模板。支持映像是指在持久存储中存储的虚拟机映像模板。引用可以是虚拟机映像模板的文件名,例如,存储ODS映像所基于的原始映像的名称的字符串。其他引用可被用于标识虚拟机映像模板。ODS映像格式还包括位图204,例如,其中一个位用于虚拟盘映像中的每个数据区段。该位指示相应区段的当前内容被存储在ODS映像中还是在支持映像中。例如,如果其相应的区段已从原始映像复制到ODS映像,或者如果该区段已经被VM本地写入,则该位被设置为1。位图的大小与本公开的一个实施例中的映像模板的大小成比例。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映像可被复制到本地盘(例如DAS)。VM然后可以被立即启动,而不用从存储服务器(例如NAS)向本地盘(例如DAS)复制任何映像数据(模板映像),即ODS映像的“用于盘数据的空间”区段208开始是空的。作为例子,对于10吉字节(GB)初始原始映像,位图可以只有2.5兆字节(MB)。在创建和启动新的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的预取机制还可以利用空闲资源来加速数据迁移。表1示出了本公开的一个实施例中的盘上ODS映像的详细布局的例子。
表1
disk_data部分可以存储原始格式的盘内容。具有逻辑块地址LBA=n的区段的内容可被存储在disk_data[n*512],其中,512是区段大小。
图3是本公开的一个实施例中的KVM/QEMU堆栈(示例性管理程序)中的ODS驱动器。操作系统内核302例如Linux内核可以在硬件处理器304上执行。操作系统内核302可以运行多个管理程序,例如KVM、KVM的不同供应商版本等。管理程序的另一例子是Xen。管理程序306(例如KVM)允许虚拟机310在硬件处理器304上运行。此外,管理程序306可以支持多种虚拟映像格式308,例如原始、qcow2和本公开的ODS。在虚拟机310启动时,虚拟机试图读取相应虚拟盘(本地盘上的映像格式308)上的第一区段(例如512千字节(KB))。被扩展为与本公开的ODS一起运行的管理程序检测到ODS映像还未在虚拟盘(本地盘)中存在,并开始(执行)本公开的ODS方法。本公开的ODS如这里所述在所需的数据上进行流式传输,在一个实施例中即时启动VM。作为实现,管理程序用户空间程序(例如qemu-kvm用户空间程序)可被改变来增加ods.c和ods.h,而不用修改其他代码。特别地,不需要对计算机节点的内核(例如Linux)进行修改。
图4A和图4B示出了使用RAW映像和ODS映像来创建VM的对比。所示的例子同时创建三个VM。如图4A所示,使用RAW映像格式的VM创建过程需要等待直到将整个映像模板从存储服务器(例如NAS)复制到本地盘(例如DAS),且只有那时VM才被启动。即使很多被复制的映像数据在VM启动过程中不需要且甚至在VM的生命期中都不会被访问,也是这样的情况。本公开的一个实施例中的ODS创建过程如图4B所示。ODS立即启动VM,而不用本地盘(例如DAS)上的任可映像数据,并在它们需要被VM访问时随需将数据从存储服务器(例如NAS)复制到主机的本地盘(例如DAS)。此外,ODS的预取机制寻找资源空闲时间,以将还未被VM访问的剩余映像或映像部分从存储服务器(例如NAS)复制到本地盘(例如DAS)。预取可以是保守的,其在于如果ODS检测到任何资源(例如存储服务器、本地盘或网络)上的争用,ODS可以暂时停止预取并在此后拥塞消失或缓解时,恢复预取。在另一实施例中,一旦映像模板整体被预取操作复制到本地盘,本公开还可以在主机的本地盘(例如DAS)上缓存常用的映像模板,从而缓存的映像模板可被用于立即创建新的VM,即在缓存命中时跳过映像复制步骤。
本公开的一个实施例中的ODS在需要数据时使用读时复制来将数据区段从存储服务器(例如NAS)随需复制到本地存储(例如DAS)。可选地,可以在ODS中启用预取,以使用未使用的空闲资源将还未接触的数据区段从存储服务器(例如图1中的102)复制到本地存储(例如图1中的112)。本公开的一个实施例中的ODS可以执行整个映像的预取。在整个映像预取中,本公开的一个实施例中的ODS使用空闲资源将整个映像,例如从第一数据区段到最后一个数据区段,从存储服务器(例如NAS)顺序地复制到本地存储(例如DAS)。可选地,在基于本地性(locality)的预取中,一个实施例可以预取和已经访问的数据区段紧密关联的还未访问的数据区段,而不是顺序预取整个映像。可选地,在基于简档的预取中,一个实施例可以根据离线构建的映像模板简档来预取还未访问的数据区段。简档可以基于数据区段的重要性来区分数据区段的预取优选顺序,或标识经常被一起访问的数据区段,即构造工作集,如果使用缓存术语的话。如果数据区段的状态已经是Sin_ods,该数据区段被预取过程跳过。一旦预取完成,它在ODS映像中设置标志,例如all_data_in_ods_image标志(例如见表1)。然后,VM发出的所有读和写请求都可以在ODS映像disk_data部分上直接操作,而不用检查或更新位图,因为事先知道,不再需要支持映像中的数据。
由于预取的数据不是迫切需要的,预取避免引起包括处理器(例如CPU)、存储盘(例如DAS、NAS)和网络的任何资源上的争用。ODS驱动器监视从存储服务器(例如NAS)读取数据的响应时间Tr以及向本地盘(例如DAS)写入数据的响应时间Tw。如果Tr<Cr且Tw<Cw,ODS驱动器继续预取,其中Cr和Cw是两个恒定的阈值,例如Cr=30毫秒(ms)且Cw=30ms。如果任一个响应时间大于阈值,它将产生随机数来决定是否暂停预取。在一个实施例中,有50%的概率继续预取且有50%的概率暂停预取一段固定的时间。如果它决定暂停预取,它此后将醒来,以通过试验性地将少量数据从存储服务器(例如NAS)复制到本地盘(例如DAS),来探测资源争用是否已消失。它监视响应时间,并决定是否继续预取或回到睡眠。
由于在响应时间大于阈值时确定是否暂停预取中的随机性,在本公开的一个实施例中,当多个ODS实例互相竞争时,在每轮预取操作之后50%的积极预取的ODS实例暂停预取,直到所有ODS实例停止预取或瓶颈资源解除拥塞。
为了降低噪声,响应时间被计算为指数移动平均。
和提交多个并发盘I/O请求的资源管理系统不同,本公开的一个实施例中的ODS中的预取在资源消耗上是保守的。例如,它保持最多一个对存储服务器(例如NAS)上的支持映像的未完成读请求和最多一个对本地盘(例如DAS)上的ODS映像的未完成写请求。在从存储服务器(例如NAS)上预取一些数据区段之后,它立即向存储服务器(例如NAS)提交下一个读请求,并同时将先前返回的数据写到本地盘(例如DAS)。当网络延迟较低(如在数据中心时的情况)且系统没有竞争时,它可以驱使存储服务器(例如NAS)或本地盘(例如DAS)达到完全利用。
可以指定策略来控制预取何时开始。例如,对于快速VM创建的用例,预取可被配置为在VM被创建的12个小时之后启动,从而不会针对短寿命的VM来执行预取。对于VM迁移的使用,预取可被配置为在VM被迁移之后立即启动,从而虚拟盘映像的迁移可以更早完成。
本公开的另一实施例中的ODS可被用于实时VM迁移。例如,在云环境中,实时VM迁移的能力极大地提升了云维护和操作。例如,随着时间流逝,主机不可避免地需要硬件维护(例如替换不可靠的CPU风扇)或软件维护(例如对管理程序应用安全补丁;对于KVM,管理程序是Linux)。某些维护操作需要重启主机并可以导致在主机上运行的VM的停机时间。使用实时VM迁移的能力,在维护操作开始之前,受影响的VM可以被迁移到其他主机,从而不存在用户可感知的停机时间。
为了将VM从源主机迁移到目标主机,所有现有的管理程序(包括KVM、Xen和VMware)需要VM的映像文件被存储在源主机和目标主机都可以访问的共享存储上。即使使用DAS,仍可能使源主机上的VM映像文件可被目标主机(例如通过NFS)访问,从而VM迁移可以成功。但是,在该情形下,目标主机上的VM所产生的所有盘I/O请求将被指向源主机并被源主机处理。源主机的重启将使映像文件不可用并使目标主机上运行的VM失效。
本公开的一个实施例中的ODS支持主机的本地盘(例如DAS)上运行的VM的实时迁移。图5示出了用于本公开的ODS进行的使用本地存储的虚拟机的实时迁移的系统组件和操作流程。源主机是物理计算机或机器,并使用其本地盘510上的VM的ODS映像504来运行VM 508。目标主机506是另一物理计算机或机器,VM 508被迁移到该目标主机。为了方便说明,源主机502上的VM 508被称为源VM;目标主机506上的VM被称为目标VM 512。在迁移开始之前,源主机502通过NFS将VM的映像文件504输出到目标主机506,从而该映像文件可被目标主机通过网络来访问。目标主机506在其本地盘514(例如DAS)上创建ODS映像516,其具有ODS映像的元数据的头部字段,该字段引用或指向源主机输出的作为支持映像的映像文件。VM 508然后可被立即迁移,而不用将VM映像文件从源主机502实际复制到目标主机506。即,可以仅使用开始仅包含对支持映像的引用的ODS映像516在目标主机506上启动目标VM 512。当目标VM 512在目标主机506上不中断地运行时,本公开的一个实施例中的ODS允许目标VM 512通过读时复制来引入数据。此外,本公开的一个实施例中的ODS使用预取将剩余映像从源主机502复制到目标主机506。一旦预取完成,VM的映像文件被完全复制到目标主机506,且目标VM 512不再以任何方式依赖于源主机502。源主机502然后可以被关闭以便维护。
通过用于使用本地存储的虚拟机实时迁移的上述ODS过程,VM可被立即迁移而不用移动本地存储上的数据。迁移的VM(目标VM)可以继续在新的位置运行,且在目标VM需要数据时该数据可随需来复制。目标VM产生的写入被本地存储。资源的空闲时间被用于预取留在原始主机(源主机)上的数据。一旦将所有数据从源主机预取到目标主机,迁移完全完成。
图6是示出一个实施例中的用于创建新VM的随需虚拟机映像流式传输方法的流程图。在602,该方法可以包括将和选择的虚拟机相关的映像元数据从存储服务器复制到主机的本地存储,该存储服务器存储了与一个或多个虚拟机分别对应的一个或多个映像模板。主机的本地存储开始不包含虚拟机的映像模板。在604,该方法可以包括使用复制的映像元数据在主机上启动选择的虚拟机。在604,该方法可以包括,如果所需的数据未被存储在主机的本地存储上,允许选择的虚拟机从存储服务器上的映像模板读取在主机上继续执行选择的虚拟机所需的数据。在步骤608,该方法可以包括,如果读取的映像模板数据未被存储在主机的本地存储上,将读取的映像模板数据从存储服务器复制到主机的本地存储。对同一数据的后续读取是从主机的本地存储进行的。在610,该方法可以包括设置位图中的位,以指示读取的数据被存储在主机的本地存储上。在612,选择的虚拟机对映像模板的数据写入被写到主机的本地存储。在614,资源空闲时间可被用于将和选择的虚拟机相关的映像模板数据从存储服务器预取到主机的本地存储。在另一方面,在映像预取期间响应时间可被监视,且如果检测到长响应时间,例如,如果响应时间超过阈值,则预取可被暂停。
在一个方面,从存储服务器复制的映像元数据开始包括对映像模板的引用。可以用位图在主机的本地存储上增强映像元数据,该位图将位映射到映像模板的相应区段。在另一方面,除了对映像模板的引用,从存储服务器复制的映像元数据还可以包含该位图。检查位图中与运行虚拟机所需的数据对应的位,以确定运行选择的虚拟机所需的映像模板数据是否被存储在主机的本地存储上。取决于位图中的该位,选择的虚拟机读取存储服务器上的映像模板或主机的本地存储上的复制的映像模板。存储服务器和主机可以是云环境中的计算机,在该云环境中,例如,为云的客户安装了多个虚拟机。
图7是示出例如用于VM的实时迁移的随需虚拟机流式传输的方法的流程图。在702,该方法可以包括将和虚拟机相关的映像元数据从源计算机复制到目标计算机,该源计算机存储与虚拟机对应的映像模板。该目标计算机开始不包含虚拟机的映像模板。在704,该方法可以包括使用复制的映像元数据在目标计算机上启动虚拟机。在706,该方法可以包括,如果所需的映像模板数据未被存储在目标计算机上,允许目标计算机上的虚拟机读取源计算机上的映像模板数据,该数据是在目标计算机上继续执行虚拟机所需的。在708,该方法可以包括,如果读取的映像模板数据未被存储在目标计算机上,将读取的映像模板数据从源计算机复制到目标计算机。对同一数据的后续读取是从目标计算机上的复制的数据进行的。在710,该方法可以包括设置位图中的位,以指示读取的数据被存储在目标计算机上。在712,虚拟机数据写入被写到目标计算机。在714,资源空闲时间可被用于将和虚拟机相关的映像模板数据从源计算机预取到目标计算机。
在一个方面,从源计算机复制的映像元数据开始包括对映像模板的引用。可以用位图在目标计算机上增强映像元数据,该位图将位映射到映像模板的相应区段。在另一方面,除了对映像模板的引用,从源计算机复制的映像元数据还可以包含该位图。检查位图中与运行虚拟机所需的数据对应的位,以确定运行虚拟机所需的映像模板数据是否被存储在目标计算机上。取决于位图中的该位,虚拟机读取源计算机上的映像模板或目标计算机上的复制的映像模板。图7中示出的方法可被执行,以用于虚拟机从源计算机到目标计算机的直接迁移,而不需要使用单独的存储服务器。VM可被立即迁移,而不用迁移其映像文件。当VM在目标主机上不中断地运行时,本公开的一个实施例中的ODS可以使用读时复制和预取将映像文件从源主机逐渐迁移到目标主机。一旦预取完成,VM不再需要依赖于源主机,该源主机可被关闭以进行维护。
在一方面,ODS的特征(写时复制、读时复制以及预取)可被单独启用以支持不同的用例。图8A-8D示出了本公开的一个实施例中的ODS的不同特征的可能的不同用例。在图8A中,ODS中仅启用了写时复制。该最基本的配置可被用作QEMU的现有COW映像格式的替换,同时提供下列好处:1)ODS尊重QEMU的cache=none选项和cache=writethrough选项,并确保电源故障时的数据完整性。2)ODS的位图部分和盘数据部分被合适地排列在页边界上,并提供优良的性能。在图8A的设置(该设置可以是云以及非云环境)中,用于ODS映像和映像模板的存储选项是灵活的。两者可以都被存储在主机的本地盘(例如DAS)上,两者可以都被存储在存储服务器(例如NAS)上,或者一个被存储在主机的本地盘(例如DAS)上而另一个被存储在存储服务器(例如NAS)上。
图8B和8C中的设置可适用于云环境,其中映像模板被存储在存储服务器(例如NAS)上且ODS映像被存储在主机的本地盘(例如DAS)上。它们支持快速VM创建并可以将映像模板的内容逐渐迁移到ODS映像中,以避免网络和存储服务器NAS上的过多负载。
图8D示出了一种设置,其中,映像模板被存储在存储服务器(例如NAS)上,且三个ODS映像都被存储在主机的本地存储(例如DAS)上。该设置允许多个VM使用单独的写时复制ODS映像,但共享“ODS(CoR+预取)”映像的单个只读副本,其在本地存储(例如DAS)上提供了映像模板的内容的镜像。该设置避免了多次将映像模板的内容从远程网络存储服务器(例如NAS)复制到主机的本地存储(例如DAS),每次用于不同的VM。
本公开还提供了数据完整性。假设下列事件按顺序发生:(1)VM提交盘写请求;(2)ODS驱动器(在某些处理之后)应答写操作的成功完成;以及(3)主机立即断电。在电源恢复后,VM对同一区段的下一次读取将得到故障之前写入的内容。
上面的表1示出了本公开的一个实施例中的盘上的ODS映像的示例性布局。本公开的一个实施例中的ODS保持数据完整性,而不管电源故障何时发生。例如,在执行写时复制和读时复制时,本公开的一个实施例中的ODS可以分别更新盘数据和位图。在下面解释的本公开的一个实施例中,两次更新之间的电源故障仍将不会损害数据完整性。
位图中的位可以处于两个状态中的一个,Sin_backing=0或Sin_ods=1,这分别意味着相应区段的内容在支持映像中或ODS映像中。区段的状态仅可以从Sin_backing改变为Sin_ods,而永不能从Sin_ods改变为Sin_backing。有两种情形可以将区段的状态从Sin_backing改变为Sin_ods:写时复制和读时复制。
写时复制在ODS处理来自VM的盘写请求时发生。简单起见,下面的讨论假设写请求跨越两个盘区段(d1,d2)。令bit(d1)和bit(d2)分别表示位图中d1和d2的状态。进一步假设,在写操作之前,bit(d1)=Sin_backing且bit(d2)=Sin_backing。涉及更多数据区段和不同初始状态的其他情形可以以和下面的例子类似的方式来分析。
处理ODS中的写请求可涉及下列顺序操作:
·ODS-W1:VM发出对两个区段(d1,d2)的写请求。
·ODS-W2:ODS驱动器将d1存储在盘上的ODS映像的disk_data部分中。
·ODS-W3:ODS驱动器将d2存储在盘上的ODS映像的disk_data部分中。
·ODS-W4:ODS驱动器将bit(d1)从Sin_backing更新为Sin_ods。
·ODS-W5:ODS驱动器将bit(d2)从Sin_backing更新为。
·ODS-W6:ODS驱动器向VM应答写操作的完成。
注意到bit(d1)和bit(d2)可以属于同一区段,且因此可以在单次更新中执行ODS-W4和ODS-W5。考虑到最坏情形分析,为最坏情形分析将ODS-W4和ODS-W5分开。
主机可能会在上述任何步骤之后发生故障。本公开示出了ODS保持数据完整性而不管故障。特别地,ODS不会引入比对RAW映像格式可能发生的更多的复杂度。即,ODS中的数据完整性至少和RAW映像格式中的数据完整性一样好。
如果VM使用RAW映像格式,处理该盘写入涉及下列操作序列:
·RAW-W1:VM发出对两个区段(d1,d2)的写请求。
·RAW-W2:RAW驱动器将d1存储在盘上。
·RAW-W3:RAW驱动器将d2存储在盘上。
·RAW-W4:ODS驱动器向VM应答写操作的完成。
在VM的写操作之前,d1和d2的“旧”内容被存储在支持映像中。在VM的写操作之后,其“新”内容被存储在ODS映像中。现在一个一个来考虑ODS的故障情形:
·在ODS-W1之后发生故障。在该情形下,ODS的行为等价于RAW映像格式在RAW-W1之后的电源故障。影响是写操作简单地丢失了,这是被允许的正确的行为,因为驱动器还没有向VM应答写入的完成。
·在ODS-W2之后发生故障。在该情形下,d1被写入到ODS映像,但bit(d1)未被更新并保持为Sin_backing。在电源恢复后,VM对d1的下一次读取从支持映像获取其内容,好像ODS映像中的dl内容不存在。该行为是正确的,并等价于RAW映像格式在RAW-W1之后的电源故障。影响是写操作简单地丢失了,这是被允许的正确的行为,因为驱动器还没有向VM应答写入的完成。
·在ODS-W3之后发生故障。类似于上面,在电源恢复后,VM对d1或d2的下一次读取从支持映像获取旧内容,好像ODS映像中的新内容不存在。该行为是正确的,并等价于RAW映像格式在RAW-W1之后的电源故障。
·在ODS-W4之后发生故障。在电源恢复后,VM对d1的下一次读取从ODS映像获取其新内容,而VM对d2的下一次读取从支持映像获取其旧内容(因为bit(d1)=Sin_ods且bit(d2)=Sin_backing)。该行为是正确的,并等价于RAW映像格式在RAW-W2之后的电源故障。
·在ODS-W5之后发生故障。在电源恢复之后,VM对d1或d2的下一次读取从ODS映像获取新内容(因为bit(d1)=Sin_ods且bit(d2)=Sin_ods)。该行为是正确的,并等价于RAW映像格式在RAW-W3之后的电源故障,即,写操作完成但还没有被应答。
·在ODS-W6之后发生故障。在电源恢复之后,VM对d1或d2的下一次读取从ODS映像获取新内容(因为bit(d1)=Sin_ods且bit(d2)=Sin_ods)。该行为是正确的,并等价于RAW映像格式在RAW-W4之后的电源故障。
上述分析证明了本公开的一个实施例中的ODS可以在写时复制期间保持数据完整性。按照类似的过程,可以证明本公开的一个实施例中的ODS还可以通过遵循正确的更新顺序—首先更新ODS映像的盘数据部分,然后更新位图部分—在读时复制期间保持数据完整性。
本公开的一个实施例中的ODS的实现可以减少盘输入/输出(I/O)开销。例如,与RAW映像格式相比,ODS的朴素(naive)实现可以造成读取和写入位图的开销。在最坏的情形下,来自VM的一组顺序的写请求会在主机的文件系统上产生下列写序列:写s1、写bit(s1)、写s2、写bit(s2)、写s3、写bit(s3),等等。这里,s1、s2和s3是具有连续逻辑块地址的区段,且bit(si)是si在位图中的相应位。在该例子中,盘头可以在ODS映像的盘数据区段和位图部分之间来回移动。在本公开的一个实施例中展示了一种技术,以在最常见的情形下消除与更新位图相关的开销,而不会损害数据完整性。
在云环境中,VM映像模板的大小典型地比分配给VM的临时存储空间小得多。例如,10GB是为在DAS上运行的已知VM所允许的最大映像模板大小,而提供给该VM的临时存储空间为170GB或更多。通过基于映像模板来扩展VM的根盘,或者通过将额外的虚拟盘附加到VM,可以向VM提供额外的临时存储空间。另一已知的云的目标是公司客户,并提供更为灵活的配置。它允许VM使用比10GB大得多的根盘。
下面是在云中准备Linux映像模板的过程。映像模板使用RAW映像格式。假设开始的映像模板大小是50GB。它首先被安装了所需的软件并被完全测试过。接下来,通过使用resize2fs工具,映像模板中的ext3文件系统的大小被调整为最小的大小(例如从50GB调低为12GB)。映像模板最后被截断以匹配最小的文件系统大小(例如从50GB到12GB)。调整大小和截断的步骤去除了在安装和测试时产生的垃圾数据,并产生最小大小的映像模板。小的映像模板有助于降低在基于映像模板来创建新的VM时,从NAS传输到DAS的数据量。
按照上面的例子,12GB数据模板可被用于创建VM,其根盘的大小可以依赖于用户付费多少而变化。例如,下列QEMU命令基于NFS上存储的12GB映像模板,在DAS上创建100GB的ODS映像。
qemu-img create-f ods-b/nfs/template.raw vm.ods 100G
在使用fdisk将虚拟盘分区大小从12GB扩展为100GB之后,resize2fs可被用于将ODS映像中的ext3文件系统从12GB扩展为100GB,其将成为VM的大根文件系统。注意到使用resize2fs来扩展文件系统是快速的操作,因为它不需要重新分配块。
在表1示出的ODS映像格式中,盘数据大小是VM所感知的ODS映像的大小,且有效支持映像的大小是支持映像的大小。对于上面的例子,盘数据大小=100G,且有效支持映像大小=12G。
图2示出了ODS映像可大于支持映像的概念。对于其逻辑块地址(LBA)超过支持映像大小的数据区段,其内容不能位于支持映像中,且仅能位于ODS映像中。由于区段的状态是事先知道的,不需要捕获ODS映像的位图部分中的区段状态。结果,位图的大小与支持映像的大小成比例,而不是与ODS映像的大小成比例。
对于指向10GB支持映像的2TB ODS映像,位图大小仅为2.5MB。由于其大小很小,整个位图可被容易地缓存在存储器中,这避免了从盘重复读取位图的开销。在已知的云中,10GB是在DAS上运行VM所允许的最大映像模板大小。在处理VM对逻辑块地址(LBA)超过支持映像大小的区段S的读请求时,ODS驱动器知道,简单地基于LBA,该区段不能在支持映像中,且因此从ODS映像的盘数据部分读取它。在处理VM对区段S的写请求时,ODS驱动器将该数据直接写到盘数据部分,且不需要更新位图(实际上,在位图中甚至没有区段S的相应位)。
因为映像模板被resize2fs降低为其最小大小,且由于其模板性质(例如可执行程序),映像模板中的数据大部分是只读的,来自VM目标区段的大部分盘写请求的地址超过支持映像的大小。对于这些写请求,ODS驱动器将数据直接写到本地盘(例如DAS),且没有更新位图的开销。
下面在本公开的一个实施例中描述了对稀疏映像模板的一种优化,在所述稀疏映像模板中,很多数据区段被零填充。对于RAW映像模板image.raw,qemu-img工具可被用于创建ODS映像模板image.ods,其支持映像是image.raw。image.ods的大小等于image.raw的大小。在创建image.ods时,qemu-img可以搜索填充零的区段S,并将其在位图中的状态设置为Sin_ods。非零区段的状态被设置为Sin_backing。在运行时,当VM读取状态为Sin_ods的区段S时,ODS驱动器从ODS映像的盘数据部分读取并获得返回的填充零的区段,这是想要的行为。该情形发生,是因为ODS映像被存储在主机的文件系统中作为稀疏文件,且区段S先前没有被写入过,且因此主机操作系统(OS)返回填充零的区段。
ODS映像模板image.ods和image.raw一起被存储在NAS上。在主机上创建新的VM时,它将image.ods从存储服务器(例如NAS)复制到本地存储(例如DAS),并将的image.ods大小调整为更大的目标大小。复制image.ods很快,因为其盘数据部分是空的且因此image.ods的大小较小。特别地,对于10GB的image.raw,image.ods仅为大约2.5MB。将image.ods的大小调整为更大的虚拟盘可以仅包括将表1中的disk_data_size字段更新为更大的值。当VM启动时,ODS驱动器会将盘数据部分自动截断为disk_data_size字段所指示的大小。
当VM启动时,ODS驱动器将ODS映像位图部分从盘载入到存储器中,其包含数据区段初始状态。在本公开中,位图的这两个副本分别被称为盘上状态和存储器中状态。在运行时,ODS驱动器总是使存储器中状态保持最新,但不会积极更新盘上状态,以降低盘I/O开销。但是,确保了在电源故障情况下,盘上状态中的陈旧信息永不会损害数据完整性。
当VM读取其存储器中状态为Sin_ods的区段时,ODS驱动器从ODS映像读取该区段并将它返回给VM。不涉及另外的开销。当VM读取其存储器中状态为Sin_backing的区段时,ODS驱动器从支持映像读取该区段并将它返回给VM。在VM继续处理返回的数据之后,在后台(即异步地),ODS驱动器将区段的内容写入到ODS映像盘数据部分,并将该区段的存储器中状态从Sin_backing更新为Sin_ods。但是,该区段的盘上状态不会被更新并保持为Sin_backing,这降低了盘I/O开销。存储器中状态的“脏”位可被周期性地(例如每个小时)或在VM关闭时不积极地(lazily)清空(flush)以更新盘上状态。如果主机在盘上状态被更新之前断电,在电源恢复后,ODS驱动器将陈旧的盘上状态重新载入到存储器中,且该区段的状态被观察为Sin_backing。在处理VM对该区段的下一次读取时,ODS驱动器再次重复读时复制过程:从支持映像读取该区段,将它返回给VM,将它异步地写到ODS映像,并将存储器中状态从Sin_backing更新为Sin_ods。不用在写时复制期间立即更新盘上状态,VM在恢复后仍然得到正确的区段内容,尽管它可能忽略该区段的内容已经被复制到ODS映像。
当VM写入区段时,ODS驱动器检查盘上状态(而不是存储器中状态)来确定合适的动作。如果该区段的盘上状态为Sin_ods(该区段的存储器中状态也是Sin_ods),ODS驱动器将该区段直接写到ODS映像,并向VM应答写操作已完成。不涉及任何位图更新开销。如果区段的盘上状态为Sin_backing(该区段的存储器中状态可以是Sin_backing或Sin_ods),ODS驱动器将该区段写到ODS映像,将盘上状态更新为Sin_ods(将存储器中状态也更新为Sin_ods,如果它当前是Sin_backing),并向VM应答写入操作的完成。在该情形下,它可能带来更新盘上状态的开销。
在另一实施例中,可以提供异步实现来降低存储器开销。QEMU中的所有块设备驱动器实现BlockDriver接口,其向同步I/O和异步I/O两者提供API。前者仅允许块设备一次处理一个未完成的I/O请求。后者通过使块设备驱动器通过回调函数通知VM关于I/O操作的完成,允许该块设备同时处理多个未完成的I/O请求。
本公开的一个实施例中的ODS实现异步接口。在某些极端情况下,在同一数据区段上进行写时复制和读时复制被小心地处理。假设VM提交对存储器中状态为Sin_backing的区段d的读请求Rd,然后在读取完成之前提交对同一区段d的写请求Wd。在处理该情况时,假设ODS驱动器以下列顺序完成操作:
1.从支持映像读取该区段的旧内容,作为用于Rd的读时复制操作的一部分。
2.将该区段的新内容写到ODS映像,作为用于Wd的写时复制操作的一部分。
3.将该区段的旧内容复制到ODS映像,作为用于Rd的读时复制操作的一部分。
在对同一数据区段进行写时复制和读时复制时,会发生竞争的状况。留在ODS映像中的是区段旧内容,这是不正确的输出。为了合适地处理该情况和其他类似的竞争情况,在对数据区段d执行读时复制时,ODS驱动器检查是否有针对d的未完成的写时复制操作。如果是,读时复制操作被抛弃。类似地,在对数据区段d执行写时复制时,ODS驱动器检查是否有针对d的未完成的读时复制操作。如果是,写时复制操作被延迟,直到未完成的读时复制操作完成,这确保了新内容被留在盘上。
本公开的一个实施例中的ODS可以执行下列优化:
·ODS映像的位图部分的大小与支持映像的大小成比例,而不是与ODS映像的大小成比例。对于指向10GB支持映像的2TB ODS映像,位图大小仅为2.5MB。注意到10GB是为在DAS上运行的已知云的VM所允许的最大映像模板大小。
·由于较小的位图大小,该位图的完整副本可被保持在存储器中,以避免重复读取盘上的位图的开销。
·一旦预取完成,ODS映像几乎和RAW映像相同地工作。VM发出的盘读或写请求直接针对ODS映像的盘数据部分来执行,而没有检查存储器中位图或更新盘上位图的任何开销。
·在处理VM对逻辑块地址超过支持映像大小的区段的读或写请求时,ODS驱动器直接读取或写入ODS映像的盘数据部分,而没有检查存储器中位图或更新盘上位图的任何开销。
·在处理VM对存储器中状态已经是Sin_ods的区段的读请求时,从ODS映像直接读取该区段,而没有更新盘上的位图的开销。
·读时复制操作仅更新存储器中的位图而不会立即更新盘上的位图。
·读时复制操作不在向VM返回数据的关键路径上。该数据在后台被异步地保存到ODS映像,而VM继续处理从支持映像读取的数据。
·在处理VM对盘上状态已经是Sin_ods的区段的写请求时,没有更新盘上的位图的开销。
·如果支持映像中的区段被完全填充为零,其在ODS映像的盘上位图中的初始状态被设置为Sin_ods,从而读取和写入该区段被当作好像该区段已经在ODS映像中,而没有更新盘上的位图的开销。
·调整ODS映像大小是恒定时间的操作,其仅需要更新表1中示出的布局中的disk_data_size字段。
本公开的一个实施例中的ODS的概念包括写时复制、读时复制和预取。理论上,可以以已被QEMU支持的现有写时复制格式(例如CoW和QCOW2)来实现读时复制和预取,这避免了引入新映像格式的复杂性。本公开的一个实施例中的新ODS映像格式在最常见情况下实现了高性能。COW格式几乎等同于ODS格式。它还包括头部、位图部分和盘数据部分。COW驱动器的当前实现忽略了QEMU的cache=none选项和cache=writethrough选项。结果,它会在电源故障时破坏盘数据。该实现问题可能被解决,但COW格式自身具有基本限制—其盘数据部分不和4KB页边界对齐。即使VM读和写请求与虚拟盘的4KB页边界对齐,在请求被转换以对COW映像盘数据部分进行操作时,它可能不再与主机文件系统4KB页边界对齐。因为主机页高速缓存在4KB页上操作,不对齐的请求会导致主机上的多次I/O。例如,VM发出的对齐的4KB写入可被转换为主机中的未对齐的4KB写入,这导致低效的读-修改-写行为,即,读取8KB、修改4KB、并写回8KB。通过添加如表1所示的填充部分以确保bitmap部分和disk_data部分合适地与4KB页边界对齐,本公开的一个实施例中的ODS格式解决了该问题。
QCOW2是QEMU的本机格式。它和COW及ODS显著的不同在于,不是利用主机文件系统对稀疏文件的支持,它实现其自己的两级索引来支持稀疏映像文件。该索引将逻辑块地址映射到映像文件中块内容被实际存储的位置。该地址映射灵活性允许QCOW2提供增强的特征,例如快照和压缩。
另一方面,QCOW2的两级索引也会带来开销,特别是读取和更新索引的额外盘查找。与ODS中的优化相比,以读时复制和预取增强的QCOW2的可能实现具有下列限制:
·索引大小与(较大的)QCOW2映像的大小成正比,而不是与(较小的)支持映像大小成正比。结果,索引无法被完全缓存在存储器中。
·即使是在预取完成后,它仍需要读取盘上索引,以处理VM所发出的读请求,这意味着额外的盘I/O操作。
·即使是在预取完成后,它仍需要读取(并可能写入)盘上索引,以处理VM所发出的写请求。
·在处理VM对逻辑块地址超过支持映像大小的区段的读或写请求时,它仍需要读或写索引。
·读时复制和预取操作很可能更频繁地更新盘上索引,因为它不能将整个索引保持在存储器中。
本公开的ODS中的优化消除了在最常见的情况下更新盘上位图的开销。相反,QCOW2的两级索引无法实现相同水平的优化。由于QCOW2的高级特征(即快照、压缩和加密)在云中未被使用,本公开的一个实施例可选择提供更好性能的更简单的图像格式,即ODS格式。QCOW2的快照能力具有用于云的最大可能。云典型地提供两种类似于快照的功能:1)可靠的备份,以及2)捆绑(bundle)映像,即,获取根文件系统的快照,将它转换为映像模板,并向云注册该映像模板以便未来重用。但是,QCOW2的快照被存储在DAS的QCOW2映像中,因此不是可靠的备份机制,且不能被用作映像模板以在另一主机上创建新的VM。
本公开的一个实施例可以同时支持快速虚拟机(VM)创建和云中的良好运行时性能。现有解决方案存在至少两个限制:1)由于在创建之前复制整个映像而引起的较慢VM创建时间(例如KVM中的原始映像格式驱动器);2)由于从远程存储服务器重复读取数据而引起的高网络流量和较差运行时性能(例如KVM中的qcow2映像格式驱动器)。
在一个实施例中,本公开的随需映像流式传输(ODS)可以同时提供快速VM供应和良好运行时性能。本公开的ODS可以用新的“ods”映像格式和相应的驱动器来增强管理程序。与某些现有云中使用的原始映像格式相比,不仅是在供应的时候,还在VM的生命期中累积地,ODS带来较少的网络流量和存储服务器上较少的输入/输出(I/O)负载。和某些现有云中使用的原始映像格式不同,ODS可以启动VM而不用通过网络来完全复制映像模板。它可以即时启动VM,然后在数据块被VM访问时随需从存储服务器取回该数据库。
和仅执行写时复制而没有读时复制、从而会从存储服务器重复读取同一数据块的QCOW2映像格式不同,本公开的一个实施例中的ODS可以最多从存储服务器读取数据块一次,然后将该块存储在本地盘上以便以后重用。本公开的ODS与QCOW2相比的另一优势是,QCOW2在本地盘上的数据布局和原始映像格式不同;另一方面,本公开的ODS的数据块布局可以和原始映像格式的相同。结果,ODS的运行时性能会优于QCOW2。
实验表明,1)本公开的ODS可以在14秒内启动已知的操作系统服务器,同时通过网络传输少于17兆字节(MB)的数据,并且2)ODS的运行时性能和原始映像格式一样好。
在另一实施例中,本公开的ODS还可以包括高级的特征,其在资源例如盘、网络和CPU空闲时在后台从存储服务器预取整个VM映像。该特征隐藏了网络延迟,并将资源消耗均匀地分布,而不是等待并在VM创建时复制整个VM映像。
本公开的ODS可在云环境中使用。ODS还可在非云环境中使用。另外ODS可以仅启用写时复制,例如,以用作高性能CoW格式。此外,ODS的实现对客户VM(在管理程序上运行的选择的VM等)来说可以是透明的,且因此可被广泛应用。
本公开的ODS可以被实现为管理程序的一部分或者管理程序的扩展或类似功能,例如,提供管理程序的所有功能而不用对客户VM进行任何修改。现有的任何管理程序没有提供ODS的能力即写时复制、读时复制和预取。
ODS映像的位图部分的大小与支持映像的大小成比例,而不是与ODS映像的大小成比例。此外,由于位图的较小大小,位图的完全副本可被保持在存储器中,这避免了重复读取盘上位图的开销。在一方面,读时复制操作可仅更新存储器中位图,而不需要立即更新盘上位图,这有助于降低盘I/O开销。
在处理VM对逻辑块地址超过支持映像大小的区段的读和/或写请求时,ODS驱动器直接读取和/或写入ODS映像的盘数据部分,而没有检查存储器中位图和/或更新盘上位图的任何开销。同时,一旦预取完成,VM发出的盘读和/或写请求直接针对ODS映像的盘数据部分来执行,而没有检查存储器中位图和/或更新盘上位图的任何开销。
在另一方面,读时复制操作不会在将数据返回到VM的关键路径上,且该数据可在后台被异步地保存到ODS映像,而VM继续处理来从支持映像读取的数据。
在又一方面,如果支持映像中的数据区段被完全以零填充,它在ODS映像的盘上位图中的初始状态被设置,好像该区段已经在ODS映像中,这避免了更新盘上位图和从存储服务器读取该数据区段的开销。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品(article ofmanufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本公开的系统和方法可在包括处理单元的计算机系统中执行,该处理单元含有一个或多个处理器和/或核、存储器和实施计算机处理系统的其他系统组件(没有在附图中清楚示出),或执行计算机程序产品的计算机。计算机程序产品可包括介质,例如硬盘、诸如紧致盘的紧凑的存储介质或其他存储设备,其可用本领域技术人员已知或将来会知晓的处理技术被读取,以将计算机程序产品提供给处理系统以执行。
计算机程序产品可包括能实施在此描述的方法的所有特点,且当其被加载到计算机系统中时,可执行方法。计算机程序、软件程序、程序或软件,在本上下文中指一组指令以任何语言、代码或符号的任何表示,该组指令旨在使得具有信息处理能力的系统直接执行特定功能或在以下任一个或二者后执行特定功能:(a)转换到另一种语言、代码或符号;和/或(b)在不同材料形式中再现。
执行本公开的系统和方法的计算机处理系统也包括显示设备,诸如监视器或显示屏,其用于展示输出显示并提供显示,通过所述显示用户可输入数据并与处理系统交互,例如,通过与诸如键盘或鼠标设备或指点设备的输入设备合作。计算机处理系统也可直接或经由远程连接而连接或耦合到一个或多个外围设备,诸如打印机、扫描仪、扬声器和任何其他设备。计算机处理系统可经由本地以太网、WAN连接、因特网等中的一个或多个或经由连接不同的计算系统并允许其彼此通信的任何其他联网技术连接到或耦合到一个或多个其他的处理系统,诸如服务器、其他的远程计算机处理系统、网络存储设备。本公开的系统和方法的各种功能和模块可被分布地实现或实施在不同的处理系统上或任何单个平台上,例如访问本地或分布地存储在网络上的数据。
此处使用的术语仅是为了描述特定实施例,且不旨在限制本发明。如在此使用的,单数形式“一”、“一个”和“该”也旨在包括多数形式,除非上下文另有清楚的规定。还将理解,术语“包括”和/或“包含”,当在本说明中使用时,明确说明存在所陈述的特点、整体、步骤、操作、元件和/或组件,但不排除一个或多个其他的特点、整体、步骤、操作、元件、组件和/或其组的存在或添加。
以下权利要求中的所有装置或步骤加功能元件(如适用)的相应的结构、材料、操作和等价物旨在包括用于结合在权利要求中特意阐明的其他元件而执行该功能的任何结构、材料或操作。本发明的说明已出于解释和描述的目的被展示,但不旨在将本发明限制在公开的形式。许多修改和变化对于本领域普通技术人员来说是明显的,且不脱离本发明的精神和范围。选择并描述实施例是为了最好地解释本发明的原理和实际应用,且使得本领域普通技术人员能理解本发明的具有适用于所打算的特定用户的各种修改的各种实施例。
本公开的各方面可被实施为程序、软件或实施在计算机或机器可用或可读介质上的计算机指令,当其在计算机、处理器和/或机器上被执行时,使得计算机或机器执行方法的步骤。也提供了可由机器读取的程序存储设备,其有形地实施可由机器执行以执行在本公开中描述的各种功能和方法的指令程序。
本公开的系统和方法可实施并运行在通用计算机或专用计算机系统中。计算机系统可以是任何类型的已知或将知晓的系统,且可典型地包括处理器、存储器、存储设备、输入/输出设备、内部总线和/或用于结合通信硬件和软件等与其他计算机系统通信的通信接口。
在本发明中使用的术语“计算机系统”和“计算机网络”可包括固定和/或便携式计算机硬件、软件、外设和存储设备的各种组合。计算机系统可包括多个互联或以其他方式连接以合作地执行的单个组件,或可包括一个或多个独立组件。本申请的计算机系统的硬件和软件组件可包括且可被包括在固定和便携设备中,所述设备诸如台式计算机、笔记本计算机和/或服务器。模块可以是实施某些“功能”的设备、软件、程序或系统的组件,其可被实施为软件、硬件、固件、电子电路等。
以上描述的各实施例是说明性示例,不应理解为本发明限于这些具体实施例。因此,本领域技术人员可进行许多修改和变更,而不偏离由所附权利要求所定义的本发明的精神或范围。
Claims (20)
1.一种用于虚拟机映像流式传输的方法,包括:
将和选择的虚拟机相关的映像元数据从存储服务器复制到主机的本地存储,该存储服务器存储与一个或多个虚拟机分别对应的一个或多个映像模板,其中,主机的本地存储开始不包含选择的虚拟机的映像模板,并且映像元数据包括头部和位图,头部标识映像模板,且位图被用于标识映像模板的哪些部分被本地存储;
使用复制的映像元数据在主机上启动选择的虚拟机;
如果在主机上继续执行选择的虚拟机所需的数据未存储在主机的本地存储上,允许选择的虚拟机从存储服务器上的映像模板读取该所需的数据;
如果读取的映像模板数据未存储在主机的本地存储上,将读取的映像模板数据从存储服务器复制到主机的本地存储,其中,对同一数据的后续读取是从主机的本地存储进行的;
设置位图中的位,以指示读取的数据被存储在主机的本地存储上;以及
利用资源空闲时间将和选择的虚拟机相关的映像模板数据从存储服务器预取到主机的本地存储。
2.如权利要求1所述的方法,其中,所述映像元数据开始包括对映像模板和位图的引用,该位图将位映射到映像模板的相应区段。
3.如权利要求1所述的方法,其中,在映像预取期间监视响应时间,且如果响应时间超过阈值,则暂停预取。
4.如权利要求1所述的方法,其中,所述位图的大小与存储服务器上的映像模板的大小成比例,而不是与主机的本地存储上存储的相应映像的大小成比例。
5.如权利要求1所述的方法,其中,所述位图的完整副本被保持在存储器中。
6.如权利要求1所述的方法,其中,通过直接读取和/或写入位于主机的本地存储中的区段而不用检查位图和/或不用更新位图,来处理选择的虚拟机对逻辑块地址超过存储服务器上的映像模板大小的区段的读和/或写请求。
7.如权利要求1所述的方法,其中,在预取完成之后,直接使用存储在主机的本地存储中的映像数据,来执行选择的虚拟机所发出的一个或多个盘读和/或写请求,而不用检查位图和/或更新位图。
8.如权利要求1所述的方法,位图被保持在存储器中以及在主机的盘上,且其中,读时复制操作仅更新存储器中的位图而不会立即更新盘上的位图。
9.如权利要求1所述的方法,其中,读时复制操作不是在将数据返回到虚拟机的关键路径上,且数据在后台被异步地保存到随需映像流式传输映像,而同时虚拟机继续处理从支持映像读取的数据。
10.如权利要求1所述的方法,其中,如果存储服务器上的映像模板中的数据区段被完全填充为零,则主机的本地存储中存储的位图中的数据区段的初始状态被设置,就好像该数据区段已经被复制到主机的本地存储。
11.如权利要求1所述的方法,其中,所述方法在管理程序中实现,提供管理程序的功能而不用对选择的虚拟机进行修改。
12.一种用于随需虚拟机映像流式传输的方法,包括:
将和虚拟机相关的映像元数据从源计算机复制到目标计算机,该源计算机存储与虚拟机对应的映像模板,其中,该目标计算机开始不包含虚拟机的映像模板,并且映像元数据包括头部和位图,头部标识映像模板,且位图被用于标识映像模板的哪些部分被本地存储;
使用复制的映像元数据在目标计算机上启动虚拟机;
如果在目标计算机上继续执行虚拟机所需的映像模板数据未存储在目标计算机上,允许目标计算机上的虚拟机读取源计算机上的该所需的映像模板数据;
如果读取的映像模板数据未被存储在目标计算机上,将读取的映像模板数据从源计算机复制到目标计算机,其中,对同一数据的后续读取会读取在目标计算机上的复制数据;以及
设置位图中的位,以指示读取的数据存储在目标计算机上。
13.如权利要求12所述的方法,所述映像元数据开始包括对映像模板和位图的引用,该位图将位映射到映像模板的相应区段。
14.如权利要求12所述的方法,还包括通过检查位图中的位来确定运行虚拟机所需的数据是否存储在目标计算机上,其中,依赖于位图中的位,虚拟机从源计算机或从目标计算机读取数据。
15.如权利要求12所述的方法,还包括利用资源空闲时间将和虚拟机相关的映像模板的数据从源计算机预取到目标计算机。
16.如权利要求12所述的方法,其中,所述步骤被执行,以用于从源计算机到目标计算机的虚拟机实时迁移,其中,不使用单独的存储服务器。
17.一种随需虚拟机映像流式传输的系统,包括:
目标计算机,其操作以从源计算机复制和虚拟机相关的映像元数据,该源计算机存储与虚拟机对应的映像模板,其中,该目标计算机开始不包含虚拟机的映像模板,并且映像元数据包括头部和位图,头部标识映像模板,且位图被用于标识映像模板的哪些部分被本地存储;以及
存储设备,其本地附加到目标计算机,
所述目标计算机还操作以使用复制的映像元数据在目标计算机上启动虚拟机,且如果在目标计算机上继续执行虚拟机所需的映像模板数据未存储在目标计算机上,允许目标计算机上的虚拟机读取源计算机上的该所需的映像模板数据,
如果读取的映像模板数据未存储在目标计算机上,所述目标计算机还操作以将读取的映像模板数据从源计算机复制到本地附加到目标计算机的存储设备,其中,对同一数据的后续读取是从本地附加到目标计算机的存储设备进行的,
所述目标计算机还操作以设置位图中的位,来指示读取的数据存储在目标计算机上。
18.如权利要求17所述的系统,其中,所述映像元数据开始包括对映像模板的引用。
19.如权利要求18所述的系统,其中,所述映像元数据还包括位图,该位图将位映射到映像模板的相应区段。
20.如权利要求17所述的系统,还包括利用资源空闲时间将和虚拟机相关的映像模板数据从源计算机预取到目标计算机。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/879,594 | 2010-09-10 | ||
US12/879,594 US8490088B2 (en) | 2010-09-10 | 2010-09-10 | On demand virtual machine image streaming |
PCT/US2011/039209 WO2012033554A1 (en) | 2010-09-10 | 2011-06-06 | On demand virtual machine image streaming |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103098043A CN103098043A (zh) | 2013-05-08 |
CN103098043B true CN103098043B (zh) | 2015-04-22 |
Family
ID=45807931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180043347.9A Expired - Fee Related CN103098043B (zh) | 2010-09-10 | 2011-06-06 | 随需虚拟机映像流式传输的方法和系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8490088B2 (zh) |
JP (1) | JP5657121B2 (zh) |
CN (1) | CN103098043B (zh) |
DE (1) | DE112011103026B4 (zh) |
GB (1) | GB2498129B (zh) |
WO (1) | WO2012033554A1 (zh) |
Families Citing this family (159)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8352482B2 (en) | 2009-07-21 | 2013-01-08 | Vmware, Inc. | System and method for replicating disk images in a cloud computing based virtual machine file system |
US8352490B2 (en) | 2009-10-22 | 2013-01-08 | Vmware, Inc. | Method and system for locating update operations in a virtual machine disk image |
US20110126197A1 (en) * | 2009-11-25 | 2011-05-26 | Novell, Inc. | System and method for controlling cloud and virtualized data centers in an intelligent workload management system |
US9086892B2 (en) * | 2010-11-23 | 2015-07-21 | International Business Machines Corporation | Direct migration of software images with streaming technique |
CN102073462B (zh) * | 2010-11-29 | 2013-04-17 | 华为技术有限公司 | 虚拟存储迁移方法、系统和虚拟机监控器 |
US8566496B2 (en) * | 2010-12-03 | 2013-10-22 | Lsi Corporation | Data prefetch in SAS expanders |
CN102567042B (zh) * | 2010-12-14 | 2015-04-15 | 国际商业机器公司 | 利用引导块重定位来管理多个软件镜像的方法和系统 |
US9223605B2 (en) * | 2011-07-01 | 2015-12-29 | V3 Systems Holdings, Inc. | Virtual machine allocation internal and external to physical environment |
US9326001B2 (en) * | 2011-03-22 | 2016-04-26 | International Business Machines Corporation | Scalable image distribution in virtualized server environments |
US9058196B2 (en) * | 2011-04-12 | 2015-06-16 | Red Hat Israel, Ltd. | Host machine level template caching in virtualization environments |
US20120272236A1 (en) * | 2011-04-20 | 2012-10-25 | Ayal Baron | Mechanism for host machine level template caching in virtualization environments |
EP2737398A4 (en) * | 2011-07-29 | 2015-01-07 | Hewlett Packard Development Co | MIGRATION OF VIRTUAL MACHINES |
US9367453B1 (en) * | 2011-09-30 | 2016-06-14 | Emc Corporation | System and method for migrating cache data |
US9367452B1 (en) | 2011-09-30 | 2016-06-14 | Emc Corporation | System and method for apportioning storage |
TWI539296B (zh) * | 2011-12-12 | 2016-06-21 | 和沛科技股份有限公司 | 虛擬機器的搬移位置計算程序的觸發方法及其應用程式 |
US8938550B2 (en) * | 2011-12-15 | 2015-01-20 | Microsoft Corporation | Autonomous network streaming |
US8832296B2 (en) * | 2011-12-15 | 2014-09-09 | Microsoft Corporation | Fast application streaming using on-demand staging |
US9021096B2 (en) * | 2012-01-23 | 2015-04-28 | International Business Machines Corporation | Performing maintenance operations on cloud computing node without requiring to stop all virtual machines in the node |
US8880687B1 (en) * | 2012-02-06 | 2014-11-04 | Netapp, Inc. | Detecting and managing idle virtual storage servers |
TWI507891B (zh) * | 2012-03-23 | 2015-11-11 | Egis Technology Inc | 具雲端儲存空間管理功能之電子裝置、雲端儲存系統、其方法及其電腦程式產品 |
US9342537B2 (en) | 2012-04-23 | 2016-05-17 | Commvault Systems, Inc. | Integrated snapshot interface for a data storage system |
US9805197B2 (en) * | 2012-06-11 | 2017-10-31 | Ent. Services Development Corporation Lp | Secure host operating system running a virtual guest operating system |
US20140050407A1 (en) | 2012-08-17 | 2014-02-20 | International Business Machines Corporation | Virtual Machine Image Access De-Duplication |
US9858095B2 (en) | 2012-09-17 | 2018-01-02 | International Business Machines Corporation | Dynamic virtual machine resizing in a cloud computing infrastructure |
US9507586B2 (en) * | 2012-10-05 | 2016-11-29 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Virtual machine based controller and upgrade mechanism |
US9110762B2 (en) | 2012-12-04 | 2015-08-18 | Microsoft Technology Licensing, Llc | Virtual machine-preserving host updates |
US9058299B2 (en) * | 2013-01-08 | 2015-06-16 | Red Hat Israel, Ltd. | Efficient copying between storage devices |
US9886346B2 (en) | 2013-01-11 | 2018-02-06 | Commvault Systems, Inc. | Single snapshot for multiple agents |
US9633027B1 (en) * | 2013-03-14 | 2017-04-25 | EMC IP Holding Company LLC | High speed backup |
US9098322B2 (en) | 2013-03-15 | 2015-08-04 | Bmc Software, Inc. | Managing a server template |
WO2014195957A1 (en) | 2013-06-03 | 2014-12-11 | Hewlett-Packard Development Company, L.P. | Restoring a file system object |
CN103324446A (zh) * | 2013-06-07 | 2013-09-25 | 曙光信息产业(北京)有限公司 | 一种高性能弹性容量虚拟机磁盘的实现方法 |
US10489175B2 (en) * | 2013-06-10 | 2019-11-26 | Amazon Technologies, Inc. | Pre-configure and pre-launch compute resources |
US20150067283A1 (en) * | 2013-08-27 | 2015-03-05 | International Business Machines Corporation | Image Deduplication of Guest Virtual Machines |
US9563385B1 (en) * | 2013-09-16 | 2017-02-07 | Amazon Technologies, Inc. | Profile-guided data preloading for virtualized resources |
US9841927B2 (en) * | 2013-09-23 | 2017-12-12 | Red Hat Israel, Ltd | Remote direct memory access with copy-on-write support |
CN103631903B (zh) * | 2013-11-22 | 2017-09-01 | 曙光信息产业股份有限公司 | 一种数据库同步数据的系统 |
US20150154042A1 (en) * | 2013-12-04 | 2015-06-04 | Hitachi, Ltd. | Computer system and control method for virtual machine |
US10503531B2 (en) | 2013-12-24 | 2019-12-10 | Red Hat, Inc. | Loading runtime configuration files into virtual machine instances which when executed transform a stored virtual machine image into a customized configuration |
KR102237566B1 (ko) * | 2014-01-23 | 2021-04-07 | 한국전자통신연구원 | 완전 복제된 가상 머신의 디스크 이미지 파일 캐싱 시스템 및 방법 |
US9639426B2 (en) | 2014-01-24 | 2017-05-02 | Commvault Systems, Inc. | Single snapshot for multiple applications |
US9851918B2 (en) * | 2014-02-21 | 2017-12-26 | Red Hat Israel, Ltd. | Copy-on-write by origin host in virtual machine live migration |
US9672165B1 (en) * | 2014-05-21 | 2017-06-06 | Veritas Technologies Llc | Data management tier coupling primary storage and secondary storage |
CN105446827B (zh) * | 2014-08-08 | 2018-12-14 | 阿里巴巴集团控股有限公司 | 一种数据库故障时的数据存储方法和设备 |
US9774672B2 (en) | 2014-09-03 | 2017-09-26 | Commvault Systems, Inc. | Consolidated processing of storage-array commands by a snapshot-control media agent |
US10048974B1 (en) | 2014-09-30 | 2018-08-14 | Amazon Technologies, Inc. | Message-based computation request scheduling |
US9323556B2 (en) | 2014-09-30 | 2016-04-26 | Amazon Technologies, Inc. | Programmatic event detection and message generation for requests to execute program code |
US9715402B2 (en) | 2014-09-30 | 2017-07-25 | Amazon Technologies, Inc. | Dynamic code deployment and versioning |
US9830193B1 (en) | 2014-09-30 | 2017-11-28 | Amazon Technologies, Inc. | Automatic management of low latency computational capacity |
US9600312B2 (en) | 2014-09-30 | 2017-03-21 | Amazon Technologies, Inc. | Threading as a service |
US9146764B1 (en) | 2014-09-30 | 2015-09-29 | Amazon Technologies, Inc. | Processing event messages for user requests to execute program code |
US9678773B1 (en) | 2014-09-30 | 2017-06-13 | Amazon Technologies, Inc. | Low latency computational capacity provisioning |
US9448731B2 (en) | 2014-11-14 | 2016-09-20 | Commvault Systems, Inc. | Unified snapshot storage management |
US9804965B2 (en) * | 2014-12-03 | 2017-10-31 | Electronics And Telecommunications Research Institute | Virtual machine host server apparatus and method for operating the same |
US9413626B2 (en) | 2014-12-05 | 2016-08-09 | Amazon Technologies, Inc. | Automatic management of resource sizing |
US9495189B2 (en) * | 2014-12-30 | 2016-11-15 | Vmware, Inc. | Live replication of a virtual machine exported and imported via a portable storage device |
CN104598170B (zh) | 2015-01-30 | 2017-12-05 | 华为技术有限公司 | 确定读写路径的方法和装置 |
US10459802B2 (en) | 2015-01-30 | 2019-10-29 | Hewlett-Packard Development Company, L.P. | Backup image restore |
US9733967B2 (en) | 2015-02-04 | 2017-08-15 | Amazon Technologies, Inc. | Security protocols for low latency execution of program code |
US9588790B1 (en) | 2015-02-04 | 2017-03-07 | Amazon Technologies, Inc. | Stateful virtual compute system |
US11061705B2 (en) | 2015-03-16 | 2021-07-13 | Bmc Software, Inc. | Maintaining virtual machine templates |
US9984088B1 (en) | 2015-03-31 | 2018-05-29 | Maginatics Llc | User driven data pre-fetch |
US9785476B2 (en) | 2015-04-08 | 2017-10-10 | Amazon Technologies, Inc. | Endpoint management system and virtual compute system |
US9930103B2 (en) | 2015-04-08 | 2018-03-27 | Amazon Technologies, Inc. | Endpoint management system providing an application programming interface proxy service |
US9900386B2 (en) * | 2015-04-09 | 2018-02-20 | International Business Machines Corporation | Provisioning data to distributed computing systems |
US11294657B2 (en) | 2015-05-15 | 2022-04-05 | Hewlett-Packard Development Company, L.P. | Data copying |
WO2016201589A1 (en) * | 2015-06-17 | 2016-12-22 | Intel Corporation | Computing apparatus and method with persistent memory |
US10284433B2 (en) | 2015-06-25 | 2019-05-07 | International Business Machines Corporation | Data synchronization using redundancy detection |
US9910906B2 (en) | 2015-06-25 | 2018-03-06 | International Business Machines Corporation | Data synchronization using redundancy detection |
CN105335253B (zh) * | 2015-10-28 | 2019-01-15 | 北京百度网讯科技有限公司 | 创建虚拟机系统盘快照的方法和装置 |
CN105278999A (zh) * | 2015-11-19 | 2016-01-27 | 国云科技股份有限公司 | 一种安全高效虚拟机软件部署的方法 |
CN105426216B (zh) * | 2015-12-11 | 2019-01-15 | 中南大学 | 一种基于透明计算的智能终端软件更新方法 |
CN105468541B (zh) * | 2015-12-11 | 2019-01-08 | 中南大学 | 一种面向透明计算智能终端的缓存管理方法 |
US9811434B1 (en) | 2015-12-16 | 2017-11-07 | Amazon Technologies, Inc. | Predictive management of on-demand code execution |
US10754701B1 (en) | 2015-12-16 | 2020-08-25 | Amazon Technologies, Inc. | Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions |
US10067801B1 (en) | 2015-12-21 | 2018-09-04 | Amazon Technologies, Inc. | Acquisition and maintenance of compute capacity |
US9910713B2 (en) | 2015-12-21 | 2018-03-06 | Amazon Technologies, Inc. | Code execution request routing |
US10230785B1 (en) * | 2015-12-28 | 2019-03-12 | Amazon Technologies, Inc. | Post data synchronization for domain migration |
CN105677256A (zh) * | 2016-01-08 | 2016-06-15 | 中电科华云信息技术有限公司 | 基于本地缓存的虚拟磁盘系统及调度方法 |
US10503753B2 (en) | 2016-03-10 | 2019-12-10 | Commvault Systems, Inc. | Snapshot replication operations based on incremental block change tracking |
CN107203480B (zh) * | 2016-03-17 | 2020-11-17 | 华为技术有限公司 | 一种数据预取方法以及装置 |
US10891145B2 (en) | 2016-03-30 | 2021-01-12 | Amazon Technologies, Inc. | Processing pre-existing data sets at an on demand code execution environment |
US11132213B1 (en) | 2016-03-30 | 2021-09-28 | Amazon Technologies, Inc. | Dependency-based process of pre-existing data sets at an on demand code execution environment |
US9880872B2 (en) | 2016-06-10 | 2018-01-30 | GoogleLLC | Post-copy based live virtual machines migration via speculative execution and pre-paging |
US10416892B2 (en) | 2016-06-24 | 2019-09-17 | International Business Machines Corporation | Fileset-based data locality enablement in distributed file systems |
US10282229B2 (en) | 2016-06-28 | 2019-05-07 | Amazon Technologies, Inc. | Asynchronous task management in an on-demand network code execution environment |
US10102040B2 (en) | 2016-06-29 | 2018-10-16 | Amazon Technologies, Inc | Adjusting variable limit on concurrent code executions |
US10218811B1 (en) | 2016-06-29 | 2019-02-26 | Oath (Ameericas) Inc. | Systems and methods for utilizing unused network capacity for prefetch requests |
US10277708B2 (en) | 2016-06-30 | 2019-04-30 | Amazon Technologies, Inc. | On-demand network code execution with cross-account aliases |
WO2018011881A1 (ja) * | 2016-07-12 | 2018-01-18 | 株式会社日立製作所 | ストレージ装置及び計算機システム |
US10089135B2 (en) | 2016-08-09 | 2018-10-02 | International Business Machines Corporation | Expediting the provisioning of virtual machines based on cached repeated portions of a template |
CN106293535B (zh) * | 2016-08-12 | 2020-04-03 | 浪潮(北京)电子信息产业有限公司 | 一种nas的性能优化方法及装置 |
US10884787B1 (en) | 2016-09-23 | 2021-01-05 | Amazon Technologies, Inc. | Execution guarantees in an on-demand network code execution system |
US10061613B1 (en) | 2016-09-23 | 2018-08-28 | Amazon Technologies, Inc. | Idempotent task execution in on-demand network code execution systems |
US11119813B1 (en) | 2016-09-30 | 2021-09-14 | Amazon Technologies, Inc. | Mapreduce implementation using an on-demand network code execution system |
US20180095975A1 (en) * | 2016-09-30 | 2018-04-05 | Hewlett Packard Enterprise Development Lp | Managing file formats |
US10303486B2 (en) * | 2017-03-03 | 2019-05-28 | Microsoft Technology Licensing, Llc | Capturing pre-fetch blocks of an operating system to improve boot performance in a cloud environment |
US10482632B2 (en) * | 2017-04-28 | 2019-11-19 | Uih America, Inc. | System and method for image reconstruction |
US20190079788A1 (en) * | 2017-09-08 | 2019-03-14 | Cisco Technology, Inc. | Predictive image storage system for fast container execution |
EP3502877B1 (en) | 2017-09-29 | 2021-03-03 | Huawei Technologies Co., Ltd. | Data loading method and apparatus for virtual machines |
WO2019104061A1 (en) * | 2017-11-22 | 2019-05-31 | Vital Images, Inc. | Automatic detection and generation of medical imaging data analytics |
US10564946B1 (en) | 2017-12-13 | 2020-02-18 | Amazon Technologies, Inc. | Dependency handling in an on-demand network code execution system |
US10733085B1 (en) | 2018-02-05 | 2020-08-04 | Amazon Technologies, Inc. | Detecting impedance mismatches due to cross-service calls |
US10831898B1 (en) | 2018-02-05 | 2020-11-10 | Amazon Technologies, Inc. | Detecting privilege escalations in code including cross-service calls |
US10353678B1 (en) | 2018-02-05 | 2019-07-16 | Amazon Technologies, Inc. | Detecting code characteristic alterations due to cross-service calls |
US10540112B2 (en) | 2018-02-06 | 2020-01-21 | Nutanix, Inc. | System and method for migrating virtual machines with storage while in use |
US10725752B1 (en) | 2018-02-13 | 2020-07-28 | Amazon Technologies, Inc. | Dependency handling in an on-demand network code execution system |
US20210334003A1 (en) * | 2018-02-14 | 2021-10-28 | Commvault Systems, Inc. | Private snapshots based on sparse files and data replication |
US10732885B2 (en) * | 2018-02-14 | 2020-08-04 | Commvault Systems, Inc. | Block-level live browsing and private writable snapshots using an ISCSI server |
US10776091B1 (en) | 2018-02-26 | 2020-09-15 | Amazon Technologies, Inc. | Logging endpoint in an on-demand code execution system |
US10853115B2 (en) | 2018-06-25 | 2020-12-01 | Amazon Technologies, Inc. | Execution of auxiliary functions in an on-demand network code execution system |
US10649749B1 (en) | 2018-06-26 | 2020-05-12 | Amazon Technologies, Inc. | Cross-environment application of tracing information for improved code execution |
US11146569B1 (en) | 2018-06-28 | 2021-10-12 | Amazon Technologies, Inc. | Escalation-resistant secure network services using request-scoped authentication information |
US10949237B2 (en) | 2018-06-29 | 2021-03-16 | Amazon Technologies, Inc. | Operating system customization in an on-demand network code execution system |
US11099870B1 (en) | 2018-07-25 | 2021-08-24 | Amazon Technologies, Inc. | Reducing execution times in an on-demand network code execution system using saved machine states |
US11099917B2 (en) | 2018-09-27 | 2021-08-24 | Amazon Technologies, Inc. | Efficient state maintenance for execution environments in an on-demand code execution system |
US11243953B2 (en) | 2018-09-27 | 2022-02-08 | Amazon Technologies, Inc. | Mapreduce implementation in an on-demand network code execution system and stream data processing system |
WO2020096561A1 (en) * | 2018-11-05 | 2020-05-14 | Hewlett-Packard Development Company, L.P. | Recovery image downloads via data chunks |
US11943093B1 (en) | 2018-11-20 | 2024-03-26 | Amazon Technologies, Inc. | Network connection recovery after virtual machine transition in an on-demand network code execution system |
US10884812B2 (en) | 2018-12-13 | 2021-01-05 | Amazon Technologies, Inc. | Performance-based hardware emulation in an on-demand network code execution system |
US10802813B2 (en) | 2018-12-19 | 2020-10-13 | Atlassian Pty Ltd. | Systems and methods for updating virtual machines |
JP7197783B2 (ja) | 2019-01-11 | 2022-12-28 | 富士通株式会社 | 情報処理システム、管理装置および管理プログラム |
US11163614B1 (en) * | 2019-01-26 | 2021-11-02 | Evolute, Inc. | Systems and methods for migrating virtual machines to containers |
US11010188B1 (en) | 2019-02-05 | 2021-05-18 | Amazon Technologies, Inc. | Simulated data object storage using on-demand computation of data objects |
US11861386B1 (en) | 2019-03-22 | 2024-01-02 | Amazon Technologies, Inc. | Application gateways in an on-demand network code execution system |
US11119809B1 (en) | 2019-06-20 | 2021-09-14 | Amazon Technologies, Inc. | Virtualization-based transaction handling in an on-demand network code execution system |
US11190609B2 (en) | 2019-06-28 | 2021-11-30 | Amazon Technologies, Inc. | Connection pooling for scalable network services |
US11159528B2 (en) | 2019-06-28 | 2021-10-26 | Amazon Technologies, Inc. | Authentication to network-services using hosted authentication information |
US11115404B2 (en) | 2019-06-28 | 2021-09-07 | Amazon Technologies, Inc. | Facilitating service connections in serverless code executions |
US11360948B2 (en) | 2019-09-27 | 2022-06-14 | Amazon Technologies, Inc. | Inserting owner-specified data processing pipelines into input/output path of object storage service |
US10908927B1 (en) | 2019-09-27 | 2021-02-02 | Amazon Technologies, Inc. | On-demand execution of object filter code in output path of object storage service |
US10996961B2 (en) | 2019-09-27 | 2021-05-04 | Amazon Technologies, Inc. | On-demand indexing of data in input path of object storage service |
US11250007B1 (en) | 2019-09-27 | 2022-02-15 | Amazon Technologies, Inc. | On-demand execution of object combination code in output path of object storage service |
US11416628B2 (en) | 2019-09-27 | 2022-08-16 | Amazon Technologies, Inc. | User-specific data manipulation system for object storage service based on user-submitted code |
US11394761B1 (en) | 2019-09-27 | 2022-07-19 | Amazon Technologies, Inc. | Execution of user-submitted code on a stream of data |
US11550944B2 (en) | 2019-09-27 | 2023-01-10 | Amazon Technologies, Inc. | Code execution environment customization system for object storage service |
US11023311B2 (en) | 2019-09-27 | 2021-06-01 | Amazon Technologies, Inc. | On-demand code execution in input path of data uploaded to storage service in multiple data portions |
US11263220B2 (en) | 2019-09-27 | 2022-03-01 | Amazon Technologies, Inc. | On-demand execution of object transformation code in output path of object storage service |
US11023416B2 (en) | 2019-09-27 | 2021-06-01 | Amazon Technologies, Inc. | Data access control system for object storage service based on owner-defined code |
US11656892B1 (en) | 2019-09-27 | 2023-05-23 | Amazon Technologies, Inc. | Sequential execution of user-submitted code and native functions |
US11106477B2 (en) | 2019-09-27 | 2021-08-31 | Amazon Technologies, Inc. | Execution of owner-specified code during input/output path to object storage service |
US11386230B2 (en) | 2019-09-27 | 2022-07-12 | Amazon Technologies, Inc. | On-demand code obfuscation of data in input path of object storage service |
US11055112B2 (en) | 2019-09-27 | 2021-07-06 | Amazon Technologies, Inc. | Inserting executions of owner-specified code into input/output path of object storage service |
US11119826B2 (en) | 2019-11-27 | 2021-09-14 | Amazon Technologies, Inc. | Serverless call distribution to implement spillover while avoiding cold starts |
US10942795B1 (en) | 2019-11-27 | 2021-03-09 | Amazon Technologies, Inc. | Serverless call distribution to utilize reserved capacity without inhibiting scaling |
US11714682B1 (en) | 2020-03-03 | 2023-08-01 | Amazon Technologies, Inc. | Reclaiming computing resources in an on-demand code execution system |
US11188391B1 (en) | 2020-03-11 | 2021-11-30 | Amazon Technologies, Inc. | Allocating resources to on-demand code executions under scarcity conditions |
US11775640B1 (en) | 2020-03-30 | 2023-10-03 | Amazon Technologies, Inc. | Resource utilization-based malicious task detection in an on-demand code execution system |
US11409619B2 (en) | 2020-04-29 | 2022-08-09 | The Research Foundation For The State University Of New York | Recovering a virtual machine after failure of post-copy live migration |
CN113835822A (zh) * | 2020-06-23 | 2021-12-24 | 中兴通讯股份有限公司 | 跨云平台虚拟机迁移方法、装置、存储介质及电子装置 |
US11550713B1 (en) | 2020-11-25 | 2023-01-10 | Amazon Technologies, Inc. | Garbage collection in distributed systems using life cycled storage roots |
US11593270B1 (en) | 2020-11-25 | 2023-02-28 | Amazon Technologies, Inc. | Fast distributed caching using erasure coded object parts |
CN112988077B (zh) * | 2021-04-27 | 2021-07-23 | 云宏信息科技股份有限公司 | 一种虚拟磁盘复制方法和计算机可读存储介质 |
US11388210B1 (en) | 2021-06-30 | 2022-07-12 | Amazon Technologies, Inc. | Streaming analytics using a serverless compute system |
US11880282B2 (en) | 2021-09-15 | 2024-01-23 | Trilio Data, Inc. | Container-based application data protection method and system |
CN113885808B (zh) * | 2021-10-28 | 2024-03-15 | 合肥兆芯电子有限公司 | 映射信息记录方法以及存储器控制电路单元与存储装置 |
US11968280B1 (en) | 2021-11-24 | 2024-04-23 | Amazon Technologies, Inc. | Controlling ingestion of streaming data to serverless function executions |
US12015603B2 (en) | 2021-12-10 | 2024-06-18 | Amazon Technologies, Inc. | Multi-tenant mode for serverless code execution |
US11979454B2 (en) * | 2022-08-29 | 2024-05-07 | Vertiv It Systems, Inc. | Writeback to a virtual media mapped image in HTML5 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101419535A (zh) * | 2008-11-19 | 2009-04-29 | 北京航空航天大学 | 虚拟机的分布式虚拟磁盘系统 |
CN101443748A (zh) * | 2006-05-08 | 2009-05-27 | 微软公司 | 将机器转换为虚拟机 |
CN101443746A (zh) * | 2006-05-18 | 2009-05-27 | 李尚奎 | 用于保护客户端及服务器的方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7062517B2 (en) | 2002-08-14 | 2006-06-13 | Hitachi, Ltd. | Method and apparatus for centralized computer management |
US7849462B2 (en) | 2005-01-07 | 2010-12-07 | Microsoft Corporation | Image server |
US7506071B2 (en) | 2005-07-19 | 2009-03-17 | International Business Machines Corporation | Methods for managing an interactive streaming image system |
WO2008115012A1 (en) | 2007-03-20 | 2008-09-25 | Sanggyu Lee | Movable virtual machine image |
US8069341B2 (en) | 2007-06-29 | 2011-11-29 | Microsoft Corporation | Unified provisioning of physical and virtual images |
EP2238535A4 (en) | 2007-12-20 | 2011-03-09 | Virtual Computer Inc | SYSTEMS AND METHODS FOR VIRTUAL COMPUTER MANAGEMENT |
WO2009145274A1 (ja) * | 2008-05-29 | 2009-12-03 | 株式会社シー・オー・コンヴ | ネットワークブートシステム |
US20090328030A1 (en) | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Installing a management agent with a virtual machine |
US8341620B2 (en) | 2009-06-25 | 2012-12-25 | Microsoft Corporation | Streaming optimized virtual application images |
US8356149B2 (en) * | 2009-10-30 | 2013-01-15 | Hewlett-Packard Development Company, L.P. | Memory migration |
US8438564B2 (en) * | 2010-03-30 | 2013-05-07 | Lenovo (Singapore) Pte. Ltd. | Systems and methods for minimizing client computer system set-up time |
-
2010
- 2010-09-10 US US12/879,594 patent/US8490088B2/en not_active Expired - Fee Related
-
2011
- 2011-06-06 WO PCT/US2011/039209 patent/WO2012033554A1/en active Application Filing
- 2011-06-06 DE DE112011103026.6T patent/DE112011103026B4/de active Active
- 2011-06-06 JP JP2013528192A patent/JP5657121B2/ja not_active Expired - Fee Related
- 2011-06-06 GB GB1305422.6A patent/GB2498129B/en active Active
- 2011-06-06 CN CN201180043347.9A patent/CN103098043B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101443748A (zh) * | 2006-05-08 | 2009-05-27 | 微软公司 | 将机器转换为虚拟机 |
CN101443746A (zh) * | 2006-05-18 | 2009-05-27 | 李尚奎 | 用于保护客户端及服务器的方法 |
CN101419535A (zh) * | 2008-11-19 | 2009-04-29 | 北京航空航天大学 | 虚拟机的分布式虚拟磁盘系统 |
Also Published As
Publication number | Publication date |
---|---|
DE112011103026B4 (de) | 2022-03-03 |
GB2498129B (en) | 2017-11-08 |
US8490088B2 (en) | 2013-07-16 |
GB201305422D0 (en) | 2013-05-08 |
GB2498129A (en) | 2013-07-03 |
JP5657121B2 (ja) | 2015-01-21 |
CN103098043A (zh) | 2013-05-08 |
JP2013542486A (ja) | 2013-11-21 |
DE112011103026T5 (de) | 2013-06-13 |
US20120066677A1 (en) | 2012-03-15 |
WO2012033554A1 (en) | 2012-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103098043B (zh) | 随需虚拟机映像流式传输的方法和系统 | |
US9235524B1 (en) | System and method for improving cache performance | |
EP3502877B1 (en) | Data loading method and apparatus for virtual machines | |
US8930947B1 (en) | System and method for live migration of a virtual machine with dedicated cache | |
US9104529B1 (en) | System and method for copying a cache system | |
US8627012B1 (en) | System and method for improving cache performance | |
US8943498B2 (en) | Method and apparatus for swapping virtual machine memory | |
JP5649184B2 (ja) | ブート・ブロックの再配置によって複数のソフトウェア・イメージを管理するための方法、コンピュータ・プログラムおよびシステム | |
JP6882662B2 (ja) | マイグレーションプログラム、情報処理装置およびマイグレーション方法 | |
US10353872B2 (en) | Method and apparatus for conversion of virtual machine formats utilizing deduplication metadata | |
US8812677B2 (en) | Data processing method and apparatus for remote storage system | |
US9665496B2 (en) | Non-volatile memory write mechanism | |
US10929288B1 (en) | Protecting against data loss during garbage collection | |
JP2004127274A (ja) | Raidコントローラおよびデータ記憶システム管理方法 | |
US9164856B2 (en) | Persistent messaging mechanism | |
US20200150950A1 (en) | Upgrade managers for differential upgrade of distributed computing systems | |
US10963182B2 (en) | System and method for on-demand recovery points | |
US8090907B2 (en) | Method for migration of synchronous remote copy service to a virtualization appliance | |
CN110413694A (zh) | 元数据管理方法及相关装置 | |
US9009416B1 (en) | System and method for managing cache system content directories | |
KR102123701B1 (ko) | 네트워크 부트 시스템 | |
JP5996094B2 (ja) | 仮想マシンイメージ管理サーバ、及び仮想マシンイメージ管理方法 | |
US20140208023A1 (en) | Storage system and control method for storage system | |
JP5047346B2 (ja) | データ処理システム、データ移動方法、およびデータ移動プログラム | |
WO2018055751A1 (ja) | 計算機システム及び記憶制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150422 |