对使用外部化存储页面的虚拟机的实时迁移的制作方法

文档序号:11160871阅读:292来源:国知局
对使用外部化存储页面的虚拟机的实时迁移的制造方法与工艺

本发明总体上涉及计算系统,并且特别是涉及用于虚拟机实时迁移的方法和系统。

发明背景

机器虚拟化通常用于各种计算环境,诸如数据中心和云计算。在本领域中已知各种虚拟化解决方案。例如,VMware公司(加利福尼亚州帕罗奥图市)供应用于诸如数据中心、云计算、个人桌面和移动计算的环境的虚拟化软件。

发明概述

本文中所描述的本发明的实施例提供了一种方法,该方法包括在通过通信网络彼此通信的多个计算节点中的第一计算节点上运行虚拟机(VM)。对于由VM访问的存储页面,通过生成在第一计算节点上被本地访问的一个或多个本地存储页面的页面传送状态和其访问不局限于第一节点的一个或多个外部化存储页面的页面传送状态,将VM从第一计算节点迁移到在多个计算节点中的第二计算节点。基于页面传送状态,在第二计算节点上,迁移的VM配有对包括本地存储页面和外部化存储页面两者的存储页面的访问。

在一些实施例中,生成页面传送状态包括为每个存储页面分配选自由以下组成的状态组的状态:在页面被传送到第二计算节点之后用于已经改变的本地页面或用于已经被检索回到第一计算节点的外部化页面的脏状态;用于驻留在第一计算节点外的页面的外部化状态;以及对于已经被成功传送到第二计算节点的页面的传送状态。

在实施例中,迁移VM包括将本地存储页面的内容或唯一标识符和外部化存储页面的唯一标识符从第一计算节点传送到第二计算节点。在另一实施例中,迁移VM包括在VM运行时传送本地存储页面的内容或唯一标识符和外部化存储页面的唯一标识符。在又一实施例中,迁移VM包括在停止第一计算节点上的VM之后传送外部化存储页面的唯一标识符,和在开始第二计算节点上的VM的迁移实例之后传送剩余的存储页面。

在一些实施例中,传送剩余的存储页面包括响应于第二计算节点中发生的页面出错事件请求剩余的存储页面。在其他实施例中,传送剩余的存储页面包括在后台进程中传送剩余的存储页面。在另外其他实施例中,迁移VM包括在停止VM之前将页面传送状态的至少部分从第一计算节点传送到第二计算节点。

在实施例中,迁移VM包括在VM运行在第一计算节点时传送存储页面的至少一些,以及在开始第二计算节点上的VM的迁移实例之前传送剩余的外部化页面。在另一实施例中,迁移VM包括使用第一计算节点中的推送后台进程和第二计算节点中的拉取后台进程中的至少一个,传送本地存储页面的内容或唯一标识符和外部化存储页面的唯一标识符中的至少一些。

根据本发明的实施例,还另外提供了包括通过通信网络彼此通信的多个计算节点的装置,该多个计算节点至少包括含有各自的处理器的第一计算节点和第二计算节点。处理器被配置为在第一计算节点上运行虚拟机(VM)以及通过以下方式将VM从第一计算节点迁移到第二计算节点:对于由VM访问的存储页面,生成在第一计算节点上被本地访问的一个或多个本地存储页面的页面传送状态和其访问不局限于第一节点的一个或多个外部化存储页面的页面传送状态,以及,基于该页面传送状态,在第二计算节点上为迁移的VM提供到包括本地和外部化存储页面两者的存储页面的访问。

根据本发明的实施例,还另外提供了软件产品,该产品包括其中储存有程序指令的有形非临时性计算机可读介质,所述指令在由通过通信网络彼此通信的第一和第二计算节点的处理器读取时使处理器在第一计算节点上运行虚拟机(VM),并通过以下方式使VM从第一计算节点迁移到第二计算节点:对于由VM访问的存储页面,生成在第一计算节点上被本地访问的一个或多个本地存储页面的页面传送状态和其访问不局限于第一节点的一个或多个外部化存储页面的页面传送状态,以及,基于该页面传送状态,在第二计算节点上为迁移的VM提供到包括本地和外部化存储页面两者的存储页面的访问。

根据本发明的实施例,还另外提供了包括运行通过通信网络彼此通信的多个计算节点的方法,该多个计算节点至少包括第一计算节点和第二计算节点。在将运行在第一计算节点上的虚拟机(VM)迁移到第二计算节点之后,识别在VM的迁移期间已经被检索回到第一计算节点的页面的去重复(de-duplicated)页面的页面状态信息从第一计算节点被接收。不管来自其他计算节点的任何附加的指示,使用该页面状态信息,以用于去重复在第二计算节点中所识别的页面。

根据本发明的实施例,还另外提供了包括通过通信网络彼此通信的多个计算节点的系统,该多个计算节点至少包括含有各自的处理器的第一计算节点和第二计算节点。在将运行在第一计算节点上的虚拟机(VM)迁移到第二计算节点之后,第二计算节点的处理器被配置为从第一计算节点的处理器接收识别在VM的迁移期间已经被检索回到第一计算节点的去重复页面的页面状态信息,以及,使用该页面状态信息并不管来自其他计算节点的任何附加指示,去重复在第二计算节点中所识别的页面。

从结合附图进行的本发明的实施例的以下详细描述中,本发明将得到更完全地理解,其中:

附图简述

图1是根据本发明的实施例示意性图示计算节点的集群的框图;

图2是根据本发明的实施例示意性图示虚拟机(VM)实时迁移的图;

图3是根据本发明的实施例示意性图示用于虚拟机的预复制实时迁移的方法的流程图;

图4是根据本发明的实施例示意性图示用于虚拟机的后复制实时迁移的方法的流程图;

图5是根据本发明的实施例示意性图示用于虚拟机的混合实时迁移的流程图;

图6是根据本发明的实施例示意性图示迁移后去重复方法的流程图;以及

图7是根据本发明的实施例示意性图示分布式存储器共享架构的图。

实施例的具体描述

综述

虚拟机(VM)的实时迁移通常涉及以对由VM服务的应用的最小中断将机器的完整状态复制到另一计算节点。VM的原始和迁移实例运行在各自的源和目的计算节点上,并分别被称作源VM和目的VM。出于简洁的目的,计算节点也被简称为“节点”。

本文中所描述的本发明的实施例提供了用于VM实时迁移的改进的方法和系统。在以下的描述中,我们假设被称作存储页面的基本储存单元。在一些实施例中,计算系统包括通过通信网络连接的多个节点。每个节点被配置为运行一个或多个VM。这样的计算系统也被称作节点集群。为了有效地使用系统存储资源,存储页面可在不同的计算节点之间共享或以其他方式分配。因此,运行在给定计算节点上的VM可访问被本地储存在相同节点上的存储页面,以及驻留在其他计算节点上的存储页面。

在给定节点上由VM访问但被储存在不同节点上的存储页面在本文中被称作外部化页面。例如,为了减轻存储压力,存储页面的重复副本可被去重复(即,被丢弃),以在节点集群中只保留少量的重复副本。作为另一示例,本地存储压力可通过将本地存储页面(例如,很少被访问的页面)远程交换(例如,移出)到具有可用的储存空间的其他计算节点而得到解决。除了去重复的和远程交换的页面之外或可将其替代地,所公开的技术可以以任何其他合适的方式和出于任何其他的原因使用已经被外部化的页面。使用被分配到外部化页面的唯一标识符,计算节点可将给定的VM的外部化页面检索回。外部化页面的检索被称作“页入”操作。

在VM实时迁移中,源VM访问的本地和外部化存储页面两者对于目的计算节点上的VM的迁移实例应是可访问的。注意到的是,存储页面相对于源节点是本地的,其可迁移到相对于目的节点表现为外部化的各自页面,反之亦然。

如以下将解释的,外部化页面的迁移通常涉及只传送各自的页面标识符而不是页面内容。虽然在一些公开的实施例中本地页面的迁移涉及传送页面内容,但在可选实施例中,本地页面中的至少一些可通过传送本地页面的唯一标识符而不是它们的内容来迁移,在这种情况下,本地页面相对于目的VM变成外部化。

在一些实施例中,本地存储页面通过将来自源节点的页面的内容复制到目的节点来迁移。为了传送外部化页面,原则上有可能首先将外部化页面的内容检索回到源节点,并随后将所检索的页面复制到目的节点。然而,这种方法是非常低效的,这是由于它涉及增加网络流量并引发高延迟的不必要的页面复制操作。此外,除了本地页面之外,传送被检索到本地页面中的外部化页面可能导致在目的节点处的存储压力并要求去重复和/或远程交换的不必要的迁移后操作。

在以下所公开的示例实施例中,迁移程序通过复制页面的内容来迁移本地存储页面,并通过传送外部化页面的唯一页面标识符来迁移外部化页。在其他实施例中,本地页面中的至少一些可通过传送它们的唯一标识符而不是它们的内容来迁移。

在一些实施例中,当VM迁移完成时,目的VM代替源VM。换句话说,在迁移的过程期间的某一时刻处,源VM停止且目的VM被激活。在以下的描述中,我们描述了采用不同方法来降低停机时间周期的各种实施例,在该停机时间周期期间,源VM已经停止且目的VM还未被激活:(i)预复制实时迁移-在源VM仍在运行的同时传送存储页面,并在完整状态被传送之后激活目的VM,(ii)复制后实时迁移-在停止源VM和传送源VM状态的部分之后激活目的VM,并作为后台进程且通过目的VM请求丢失的存储页面来传送剩余的VM状态,以及(iii)混合实时迁移-组合的预复制和复制后实时迁移。

在所公开的实施例中,基于在源计算节点上被本地访问的一个或多个本地存储页面的动态页面状态或传送状态,和其访问对于第一节点来说不是本地的一个或多个外部化存储页面的动态页面状态或传送状态,迁移程序传送存储页面。页面传送状态识别在其已被迁移到目的节点之后已经改变的存储页面,并因此应被重新传送。在一些实施例中,页面传送状态选自以下状态:脏(DIRTY)、外部化(EXTERNALIZED)和传送(TRANSFERRED),并按页面被储存在页面状态位图(PSB)中。

脏页面指在页面已经被传送到目的节点之后(例如,通过仍在运行的源VM)被修改的页面,即,其内容被修改的本地页面或被检索回的外部化页面。外部化页面指驻留在除了源节点之外的节点上的页面,以及传送页面是已经被成功传送到目的节点的页面(本地的或外部化的)。

在所公开的实施例中的一些,源和/或目的节点在PSB中扫描存储页面的状态。基于PSB状态,本地页面通过将它们的内容复制到目的节点来传送,以及外部化页面通过仅传送它们的(通常短得多)唯一标识符来传送。此外,已经被传送但在源VM仍在运行的同时转变为脏或外部化的页面被重新传送。可选地,页面外部化在迁移期间被禁止。

在实施复制后或混合实时迁移的一些实施例中,目的VM在传送本地和外部化页面的部分迁移之后开始。在该部分迁移之后,被激活的目的VM可能会遭遇在执行客户应用时引起页面错误事件的丢失页面。目的VM从源节点请求丢失页面或其在PSB中的状态等同脏或外部化的页面。在响应于页面错误事件接收到与外部化页面有关的状态信息之后,目的VM中的管理程序可基于所接收的页面状态重新投入或重新执行各自的内容检索操作。

在复制后实时迁移程序的不同实施例中,源VM在停止之前收集PSB中关于外部化页面的页面信息,并将PSB传送到目的节点。目的节点扫描PSB并相应地处理外部化页面。

在一些实施例中,源VM首先通过传送本地和外部化页面两者的内容来迁移。如以上所解释的,这可能导致目的VM处的存储压力。在实施例中,源VM生成PSB,该PSB在去重复的页面先于迁移被检索回时对其进行标记。在过程中没有共享其他集群节点的情况下,目的VM接收PSB并执行有效的本地去重复。

在所公开的技术中,VM实时迁移程序使用包括外部化页面的识别的页面信息。该技术实现了传送外部化页面的唯一标识符而不是页面的(通常大的多的)内容。这样的迁移程序避免了不必要的页面传送操作,以及迁移后去重复和远程交换操作。因此,所公开的技术降低了网络流量、CPU负载和存储压力。另外,迁移程序通常不改变在节点集群上的共享存储页面的分布,因此不会引发新的存储压力事件。

系统描述

图1是根据本发明的实施例示意性图示包括多个计算节点24的集群的计算系统20的框图。例如,系统20可包括数据中心、云计算系统、高性能计算(HPC)系统或任何其他合适的系统。

计算节点24(出于简洁的目的简称为“节点”)通常包括服务器,但可选地包括任何其他合适类型的计算节点。系统20可包括任何合适数量的相同类型或不同类型的节点。节点24通过供集群内通信之用的通常是局域网(LAN)的通信网络28来连接。网络28可根据诸如以太网或无线带宽技术的任何合适的网络协议操作。

每个节点24包括中央处理单元(CPU)32。基于计算节点的类型,CPU 32可包括多个处理核和/或多个集成电路(IC)。不管具体的节点配置,节点的处理电路作为整体在本文中被视为节点CPU。每个节点24还包括存储器36(通常是易失性存储器,诸如动态随机存取存储器-DRAM)和用于与网络28进行通信的网络接口卡(NIC)44。节点24中的一些(但不必是全部节点)包括非易失性储存设备40(例如,磁性硬盘驱动器-HDD或固态驱动器-SSD)。

节点24通常运行虚拟机(VM),该虚拟机转而运行客户应用。在一些实施例中,运行在给定节点上的VM访问被储存在多个节点上的存储页面。出于共享节点24之间的存储资源的目的,每个节点的CPU运行分布式页面储存(DPS)代理48。如以下将详细解释的,各个节点中的DPS代理48通过网络28彼此进行通信,以用于协调存储页面的储存。

多个DPS代理在本文中统称为“DPS网络”。可选地或附加地,系统20可使用任何合适的方法(诸如例如,网络中的集中式实体)来管理节点24之间的存储共享。虽然在以下描述中我们假设系统20使用DPS网络来管理存储共享,但在可选实施例中,系统20可使用代替DPS网络或除了DPS网络之外的任何其他合适的架构和协议。

对于VM在计算节点的集群上的资源共享的其他方面在美国专利申请14/181,791和14/260,304中得到了解决,它们被转让给本专利申请的受让人且其公开内容通过引用并入本文。

图1中所示的系统和计算节点配置是纯粹出于概念清晰的目的而选择的示例配置。在可选实施例中,可使用任何其他合适的系统和/或节点配置。系统20的各种元素且特别是节点24的元素,可使用诸如在一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)中的硬件/固件来实施。可选地,一些系统或节点元素(例如,CPU 32)可以以软件或使用硬件/固件和软件元素的组合来实施。在一些实施例中,CPU 32包括通用处理器,其用软件来编程以实行本文中所描述的功能。例如,可通过网络以电子形式将软件下载到处理器,或者可选地或附加地,该软件可被提供和/或储存在非暂时性有形媒介上,诸如磁存储器、光存储器或电子存储器。

共享存储资源

存储器36将关于各个VM的数据储存在基本储存单元中,该基本储存单元在本文中被称作存储页面。运行在给定计算节点上的VM可访问被本地储存在相同计算节点的存储器36上或其他计算节点的存储器36上的存储页面。其内容在本地可用的存储页面在本文中被称作“本地页面”。其内容驻留在另一计算节点上的存储页面被称作“外部化页面”。例如,VM可使用唯一页面标识符经由DPS网络访问外部化页面。本地存储页面可被外部化,以解决如本文中所描述的全局和/或本地存储压力。

在一些实施例中,DPS网络通过运行集群范围的去重复过程处理节点24中的存储压力状况。在许多实际情况下,运行在不同节点上的不同VM使用具有相同内容的存储页面。例如,当使VM的多个实例运行在不同节点上时,包含VM内核代码的存储页面通常将在节点集群上被复制多次。

在一些情境下,可能有利的是只保留这样的页面的少量副本,使这些副本可用于所有相关的VM,并删除多余的副本。所保留的最少量的重复页面副本可取决于容错考虑。该过程被称作去重复。如可理解的,去重复使节点能够释放本地存储器并从而减轻存储压力。

在一些情况下,去重复过程删除了由给定节点中的至少一个VM使用的某一页面的所有副本。因此,页面变成外部化的且本地VM将能够使用诸如通过在页面内容所计算的散列值(hash value)的唯一标识符或使用任何其他合适的指纹标识符来访问页面。外部化的去重复页面的唯一标识符也被称作指纹标识符(FID)。

用于解决存储压力的另一集群范围的过程被称作远程交换。在该过程中,DPS网络将存储页面从第一节点的存储器36(其经受存储压力)移动到第二节点的存储器36(其具有可用的存储资源)。第二节点可将页以压缩的形式来储存。如果存储压力是暂时的,则所交换的页面可在稍后时间处返回到初始节点。被移动到另一计算节点的外部化页面可使用唯一标识符(UID)例如经由DPS网络来被访问。

例如,在以上所引述的美国申请14/181,791中,描述了包括用于存储页面的去重复和远程交换的方法的用于管理存储共享的各种方法。

VM实时迁移的元素

图2是根据本发明的实施例示意性图示虚拟机的实时迁移的图。图2中的三个计算节点24(即节点_A、节点_B和节点_C)可以是以上图1的系统20的部分。在本示例中,在每个计算节点24中,管理程序60运行一个或多个本地VM 64并提供给本地VM资源,诸如存储器、储存器和CPU资源。

在本示例中,节点_A另外运行应被迁移到节点_B的虚拟机VM_SRC 68。在以下的描述中,运行预迁移的VM的节点和VM迁移到的目标节点被分别称作源节点和目的节点。类似地,源节点和目的节点内部的组件也分别被称作源组件和目的组件。

因此,在图2的示例中,VM_SRC是运行在源节点节点_A上的源VM。另外,VM_DST 72是目的VM,其是运行在作为目的节点的节点_B上的VM_A的迁移实例。类似地,源节点和目的节点的管理程序60和存储器36分别被称作源和目的管理程序或存储器。

实时迁移涉及在不终止客户应用的情况下将运行资源VM传送到目的节点。在迁移期间,源VM的完整状态(包括CPU和I/O状态、存储器、储存器和网络连通性)被传送到目的节点。特别地,如以下所描述的,本地和外部化存储页面被传送。

实时迁移的程序通常由源和目的管理程序可能与集中式实体结合来实行。可选地,实时迁移可由诸如DPS网络的分布式实体管理。在一些实施例中,由源VM使用的本地存储页面通过复制页面的内容被传送到目的节点。在一个实施例中,为了处理外部化页面,迁移程序首先将外部化页面检索回到源节点,并随后将该页面的内容复制到目的节点。然而,这样的方法可能产生不必要的页面传送(首先到源节点,随后到目的节点),这增加了网络流量、延迟、存储压力和CPU工作量。此外,由于程序将本地和外部化页面两者的内容传送到目的节点,因此这可能增加目的节点处的存储压力,这可能导致目的节点处的存储页面的额外的去重复和/或远程交换。

在一些实施例中,源VM的本地和外部化页面分别迁移到目的VM中的本地和外部化页面。例如,VM_SRC可访问节点_A的存储器36中的页面以及驻留在系统20中的任何其他节点(诸如节点_B、节点_C或两者)的存储器36上的外部化存储页面。当VM_SRC到节点_B的迁移完成时,VM_SRC本地访问的页面可由VM_DST本地访问,或者可选地,可相对于VM_DST变成外部化的。另外,由VM_SRC以外部化的形式访问的页面也应由VM_DST以外部化的方式访问。这样的迁移程序避免了进行页面内容传送、去重复和远程交换的不必要的操作。

在一些实时迁移情境下,存储页面在源VM仍运行的同时被传送。因此,仍运行的源VM可修改已经被传送的本地页面。另外,已经被传送的本地页面可随后经受去重复或远程交换(即,被外部化),并且已经被传送的外部化页面可在本地被检索返回。这样的传送后页面修改破坏了VM迁移的可靠性,因此应重新传送被修改的页面。

在以下的描述中,术语“脏页”指的是:i)在页面已经被传送到目的节点之后被修改的本地页面,以及ii)在页面已经被传送到目的节点之后被检索返回到源VM的外部化页面。

在一些实施例中,迁移程序在一个或多个传送轮次中迭代地传送存储页面。这样的程序还被称作迭代复制阶段。在第一轮次中,程序传送本地页面的内容和由源VM使用的外部化页面的标识符。在后续的轮次中,迁移程序另外传送其状态在先前轮次期间已经变为脏或外部化的页面。

在所公开的实施例中,源管理程序生成包括对外部化页面做标记的页面信息或状态。该做标记实现了仅传送外部化页面的标识符而不是(通常大得多的)页面的内容。注意到的是,如果页面已经先于迁移驻留在目的内存处,则在源VM处的外部化页面可在目的节点处变成本地的。

在几个公开的实施例中,待传送的存储页面各被分配各自的传送状态:

·脏-源节点应重新发送页面的内容并将页面状态改为传送。

·外部化-源节点应重新发送页面的标识符并将页面状态改为传送。

·传送-页面已经被传送,或者源VM从未访问页面,因此不需要发送页面。

在一些实施例中,源管理程序60生成保持页面信息的页面状态位图(PSB)76。页面信息包括存储页面的页面状态,例如,如以上所描述的三值状态。源管理程序通常在第一轮次之前将PSB发送到目的节点,并且如有必要,发送后续轮次之间的PSB的更新的版本。目的节点使用PSB,以检索并恢复本地页面的内容和外部化页面的标识符。

源管理程序可使用任何合适的方法来生成PSB。在示例实施例中,源管理程序最初将存储页面的状态设置为脏。随后,基于真实的页面状态,管理程序扫描存储页面并将相关页面的状态替换为外部化或传送。

在传送轮次的执行期间,并且可能在轮次之间,源管理程序(例如,递增地)更新运行中(on the fly)的PSB。例如,为了防止在后续的轮次中页面的不必要的重新发送,源管理程序将重新发送的脏的和外部化的页面的PSB状态设置为传送。

另外,源管理程序监控存储页面的状态,以检测在页面传送之后可能已经出现的任何页面修改,并相应地更新PSB。例如,当源VM仍运行时,已经被传送的页面可能变成脏的或外部化的,并且因此,其状态应分别从传送变为脏或外部化。在一些实施例中,迁移程序不允许在迁移过程期间外部化页面。

源管理程序可使用任何合适的方法,以决定在迭代复制阶段期间执行多少传送迭代。例如,在一些实施例中,当每次迭代所发送的页面的数量降低到预定义的阈值以下时,源管理程序终止迭代复制阶段。

在实施例中,源节点提取(一些或全部的)外部化页面的标识符,并将该标识符传送到PSB中的目的节点。在另一实施例中,目的节点根据需要(例如,响应于页面出错事件)请求各个外部化页面的标识符。在以下所描述的实施例中,假设目的管理程序例如通过将更新PSB从源节点发送到目的节点或经由DPS网络已经访问存储页面的被更新的状态。

预复制实时迁移

图3是根据本发明的实施例示意性图示用于虚拟机的预复制实时迁移的方法的流程图。在预复制PSB生成步骤200处,如以上所描述的,方法以源管理程序60生成PSB结构开始。

在预复制迭代复制步骤204处,源管理程序执行一个或多个传送迭代。源管理程序扫描PSB、提取各自的页面状态并根据如以上所描述的它们的状态传送存储页面。忽略其状态等于传送的页面。源管理程序更新运行中的PSB,使得在先前迭代期间变成脏或外部化的页面将被重新发送到目的节点。

在预复制停止并复制步骤212处,源管理程序停止源VM。因此,源VM冻结对其存储页面的任何进一步的修改。随后,源管理程序执行额外的轮次,以根据PSB中更新的页面状态来传送剩余的页面。进一步在步骤208处,在停止源VM之后,源管理程序将VM_SRC 68的CPU和I/O状态传送到节点_B,以作为初始状态由VM_DST 72使用。

在一个实施例中,在步骤208期间,不允许本地VM和/或DPS网络改变由源节点访问的存储页面中的任何一个。在另一实施例中,如果在步骤208期间,页面的状态改变,则迁移程序进行协调以反映在目的节点处的该改变。

在步骤208之后,全部源VM状态的传送完成,并且目的管理程序在预复制提交步骤212处开始执行被迁移的VM_DST 72,随后该方法终止。

复制后实时迁移

图4是根据本发明的实施例示意性图示用于虚拟机的预复制实时迁移的流程图。类似于以上的步骤200,在复制后PSB生成步骤230处,方法以源管理程序60生成PSB结构开始。迭代PSB复制步骤232是可选的,并且以下在复制后迁移方法的增强的变型中进行了描述。

对比以上的图3的实施例,其中页面的传送发生在源VM仍运行的同时,在本实施例中,源管理程序首先在复制后停止并复制步骤234处停止源VM。在步骤234处,在停止源VM之后,源管理程序传送源节点的CPU和I/O状态,并且另外使用PSB来识别外部化页面并将外部化页面的标识符传送到目的节点。

在步骤234之后,CPU和I/O状态以及源VM的存储页面的至少部分(即,外部化页面的各自的标识符)已经被迁移,且在复制后页面推送步骤238处,目的管理程序开始执行被迁移的VM。然而,由于可仍有尚未被传送的页面,因此目的VM可尝试访问丢失页面,这转而又产生页面出错事件。响应于页面出错,目的管理程序从源节点请求各自丢失页面。在一些实施例中,在步骤238处,源管理程序继续将存储页面传送到目的节点,作为后台进程。

在一些实施例中,一个或多个页面从未被源VM访问。为了防止传送实际上没有使用的页面,这样的页面在PSB中被标记为从未访问的页面。

当访问PSB中的存储页面的状态时,目的管理程序相应地做出如下反应:

·外部化-使用页面的唯一标识符从其中储存页面的节点请求页面。

·从未访问-不需要请求页面,分配空页。

在复制后提交步骤242处,所有存储页面已经被成功传送,源VM现在被完全迁移,并且随后方法终止。

在一些情况下,在以上的步骤234处使用PSB来提取外部化页面的标识符将在步骤234处停止VM_SRC 68和在步骤238处激活VM_DST之间的停机时间增加到不可接受的持续时间。我们现在对图4的复制后方法的变型进行描述,其在以上的步骤230和234之间包括迭代的PSB复制阶段232,使得取决于PSB的至少一些传送在源VM停止之前发生。该变型方法在PSB中使用以下的四值页面状态:

·复位-其内容在页面标识符已经被传送之后被检索回的外部化页面。

·外部化-使用页面的唯一标识符从其中储存该页面的节点请求页面内容。

·从未访问-页面已经被传送或未由源VM使用。

·标准-尚未被传送的本地页面。

在增强的复制后方法中,在步骤232处,源VM仍在运行,并且源管理程序迭代地将PSB的被更新的版本发送到目的节点,该目的节点在步骤238处使用PSB信息,如下所示:

·传送-在目的节点处分配空页。

·外部化-从源节点请求页面标识符。

·复位/标准-发起页面出错以从源VM请求页面内容。

对图4的方法附加的步骤232能够减少在步骤234处识别和发送外部化页面的阶段,并从而降低其间VM_SRC 68和VM_DST 72两者显著下降的停机持续时间。

混合实时迁移

图5是根据本发明的实施例示意性图示用于虚拟机的混合实时迁移的流程图。该方法将以上两种方法合并为组合的方法。

类似于以上的步骤200和230,在混合PSB生成步骤260处,方法以源管理程序60生成PSB结构76开始。随后,源管理程序执行混合迭代复制步骤264,这类似于以上的步骤204。如以上所描述的,源管理程序可基于任何合适的标准终止混合迭代复制阶段。

类似于以上的步骤234,在混合停止并复制步骤268处,源管理程序停止源VM,并将外部化页面的唯一标识符及CPU和I/O状态传送到目的节点。

接下来,类似于以上的步骤238,该方法执行混合推送步骤272。如以上关于步骤238所描述的,在步骤272处,目的VM可从源节点请求产生页面出错事件的丢失页面。源管理程序在后台进程中并响应于来自目的管理程序的页面请求而传送页面。

在混合提交步骤276处,源VM完全转变为迁移的,并且目的管理程序运行被迁移的图像VM_DST 72。随后,方法终止。

在图4和图5的方法中,只有外部化页面的标识符在各自的停止并复制步骤234和268期间被传送。由于只有页面标识符被传送(而不是通常大得多的实际的页面内容),因此这显著降低了停机时间周期。另外,在各自的步骤238和272处起动目的VM之后,由外部化页面产生的双页面出错事件的概率相对较低,并且基本上不降低性能。

图6是根据本发明的实施例示意性图示迁移后去重复方法的流程图。该方法例如在其间外部化页面被检索回的VM的迁移之后在目的节点处被执行,并作为本地(可能重复)的页面被传送到目的节点。

在PSB接收步骤300处,该方法以目的管理程序60从源节点接收PSB76开始。例如,PSB可作为迁移提交阶段的部分来接收,其中目的VM完全转变为可操作的。在生成PSB时,源VM应例如使用页面的唯一指纹标识符来对被检索的去重复的页面进行标记。

在候选识别步骤304处,目的管理程序扫描所接收的PSB,以识别所检索的去重复的页面且和因此现在是重复的页面。在匹配步骤308处,目的管理程序使用页面指纹标识符为每个所识别的页面匹配副本。

在去重复步骤312处,目的管理程序将去重复程序应用到匹配的重复页面。去重复可能取决于本地和/或系统的去重复标准。在步骤312之后,方法终止。

示例存储共享架构

图7是根据本发明的实施例示意性示出在系统20中使用的分布式存储共享架构的图。图7中所描绘的架构另外用作可用在以上所描述的VM实时迁移实施例中的DPS网络的示例实施方式。该架构在以上所引述的美国申请14/181,791中更详细地得到了解决。

图的左手侧示出了在被称作本地节点的给定节点24的CPU上运行的组件。系统20中的每个节点24通常以类似的方式来实施。图的右手侧示出了与本地节点进行交互的其他节点的组件。在本地节点(图的左手侧)中,组件被划分为内核空间(图的底部)和用户空间(图的顶部)。后者分区主要是实施驱动而不是强制性的。

在本示例中,每个节点运行各自的用户空间DPS代理460和内核空间节点页面管理器(NPM)464,该用户空间DPS代理460在功能上类似于以上的图1中的DPS代理48。节点运行管理程序468,该管理程序468被划分成用户空间管理程序组件472和内核空间管理程序组件476。但在本示例中,虽然不是必须的,但是用户空间管理程序组件是基于QEMU的,以及内核空间管理程序组件是基于Linux/KVM的。管理程序468运行一个或多个VM 470并提供给VM资源,诸如存储器、储存器和CPU资源。

DPS代理460包括三个主要组件-页面储存器480、传输层484和碎片组件488。页面储存器480保持被储存在节点上的存储页面的实际内容(数据)。传输层484负责与其他节点的同级传输层484进行通信并交换页面。DPS代理460中的管理应用程序编程接口(API)492与管理层496进行通信。

碎片488保持存储页面的元数据。例如,页面的元数据可包括页面的储存位置和通过页面内容所计算的散列值。页面的散列值用作识别页面(及其相同副本)的集群范围的唯一标识符。散列值还被称作全局唯一内容ID(GUCID)。注意到的是,散列法仅是用于索引页面内容的签名或索引的示例形式。可选地,可使用任何其他合适的签名或索引方案。

联合地,所有节点24的碎片488共同保持系统20中的所有存储页面的元数据。每个碎片488保持页面的子集的元数据,其是不必被储存在相同的节点上的页面。对于给定的页面,为页面保持元数据的碎片被定义为“拥有”页面。各种技术可用于将页面分配给碎片。在本示例中,每个碎片488被分配散列值的各自的范围,并拥有其散列值落入该范围中的页面。

从碎片488的观点来看,对于给定拥有页面,每个节点24可以是以下三个角色中的一个:

■“起点”-页面被储存(可能以压缩的形式)在节点的存储器中,并由至少一个本地VM使用。

■“储存器”-页面被储存(可能以压缩的形式)在节点的存储器中,但不由任何本地VM使用。

■“依赖”-页面没有被储存在节点的存储器中,但至少一个本地VM依赖于它并可在任何时候访问它。

碎片488通常维持每个拥有页面的三个节点列表-处于“起点”角色中的节点的列表、处于“储存器”角色中的节点的列表、以及处于“依赖”角色中的节点的列表。每个节点24可属于列表中的至多一个,但每个列表可包含多个节点。

NPM 464包括内核空间的本地页面跟踪器490,其用作页面储存器480的内核侧组件。在逻辑上,页面跟踪器490可被看作属于DPS代理460。NPM还包括引入过程493和换出过程494。引入过程493将页面引入到DPS网络。换出过程494处理作为用于输出到其他节点的候选的页面。虚拟存储器管理模块496向管理程序和/或架构的基本存储器管理功能提供接口,例如,映射虚拟机的页入和页出的地址空间的能力。

图7中所示出的架构和功能分区仅通过示例的方式来描绘。在可选实施例中,存储器共享方案可以以任何其他合适的方式在各种节点中来实施。

以上所描述的实施例通过示例的方式来示出,并且也可使用其他合适的实施例。例如,所描述的划分成迁移阶段(诸如迭代复制阶段、停止并复制阶段以及页面推送阶段)不是强制性的,并且在可选实施例中,也可使用其他迁移阶段和阶段排序。

作为另一示例,在一些实施例中,源VM、目的VM或两者可运行用于在迁移期间传送本地和外部化存储页面的至少一些的内容或唯一标识符的合适的后台进程。例如,源和目的VM可分别应用推送和拉取传送。

虽然本文中所描述的实施例主要处理实时VM迁移,但本文中所描述的方法和系统也可用在其他应用中,诸如用在分布式储存系统内的内容迁移中。将所公开的技术适用到这样的应用中可能涉及用储存设备代替VM,和用内存块储存器代替存储页面。

将认识到,以上所描述的实施例是通过示例的方式来引述的,并且本发明不限于上文中已经特别示出和描述的那些实施例。相反,本发明的范围包括上文所描述的各种特征的组合和子组合以及本领域技术人员在阅读以上描述之后将想到的且未在现有技术中公开的其变型和修改。通过引用并入本专利申请中的文档被视为本申请的组成部分,除了在一定程度上任何术语以与本说明书中明确地或隐含地作出的定义冲突的方式被定义在这些并入的文档中时,仅应考虑本说明书中的定义。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1