远程访问数据的有效实时迁移的制作方法

文档序号:15884284发布日期:2018-11-09 18:33阅读:164来源:国知局
远程访问数据的有效实时迁移的制作方法

云计算是指基于网络的计算,其中安置在数据中心或“服务器场(serverfarm)”中的服务器的集合根据需要向远程终端用户提供计算资源和数据存储。一些云计算服务向终端用户提供对诸如文字处理器和其他常用应用程序的软件应用程序的访问,这些终端用户通过网络浏览器或其他客户侧软件与应用程序交互。用户的电子数据文件通常存储在服务器场中,而不是存储在用户的计算设备上。在服务器场上维护软件应用程序和用户数据简化了终端用户计算设备的管理。一些云计算服务允许终端用户在虚拟机中运行软件应用程序。在公共云计算环境中,多个用户能够启动虚拟机(vm)。

通常,特定虚拟机的数据存储在与虚拟机被实例化的物理机分开的一个或多个物理机上。出于各种原因——负载共享、服务器维护等——存储在特定物理机上的一些或所有数据可以迁移到另一个物理机。数据的实时迁移是将数据从一个物理机移动到另一个物理机的过程,而虚拟机(或者可选择地,非虚拟处理实体)对数据执行任意读取和写入。



技术实现要素:

本说明书涉及数据的实时迁移。

本文描述了一种系统方法和系统,用于将数据从存储计算机移动到另一个存储计算机,同时为从另一个物理机远程访问数据的第三方处理设备(例如,虚拟机或应用程序)提供对数据的一致和高性能访问。

通常,本说明书中描述的主题的一个创新方面可以体现在包括以下动作的方法中:在第一物理机中存储用于在第二物理机上运行的数据处理进程的数据,所述第二物理机与所述第一物理机分开,所述存储数据包括根据多个数据子集存储所述数据,其中每个数据子集彼此互斥;对于每个数据子集,通过所述数据处理进程,在映射中将所述第一物理机上的所述数据子集的地址范围逻辑地映射到所述数据处理进程的相应逻辑地址范围;根据逻辑寻址,使所述数据处理进程能够对数据进行读写访问;确定存储在所述第一物理机上的第一数据子集将被迁移到与所述第一物理机和所述第二物理机分开的第三物理机,并作为响应:阻止所述数据处理进程对所述第一数据子集的读写访问,同时维持所述数据处理进程对其他数据子集的读写访问;将所述第一数据子集从所述第一物理机迁移到所述第三物理机,以将所述数据子集存储在所述第三物理机上;通过所述数据处理进程,将所述第三物理机上的所述第一数据子集的地址范围逻辑地映射到所述数据处理进程的相应逻辑地址范围来更新所述映射。该方面的其他实施例包括相应的系统、装置和计算机程序,计算机程序被配置为执行该方法的动作,计算机程序被编码在计算机存储设备上。

通常,本说明书中描述的主题的另一个方面可以体现在系统中,该系统包括:第一物理机,所述第一物理机根据多个数据子集存储数据,每个所述数据子集彼此互斥;第二物理机,所述第二物理机与所述第一物理机分开,并且所述第二物理机上的虚拟机对所述第一物理机上存储的数据进行读写访问,并且对于每个数据子集,在映射中将所述第一物理机上的所述数据子集的地址范围逻辑地映射到所述虚拟机的相应逻辑地址范围;其中,响应于确定存储在所述第一物理机上的第一数据子集将被迁移到与所述第一物理机和所述第二物理机分开的第三物理机:将所述第一数据子集从所述第一物理机迁移到所述第三物理机;在所述迁移期间阻止所述虚拟机对所述第一数据子集的读写访问,同时维持所述虚拟机对其他数据子集的读写访问;以及通过所述虚拟机更新所述映射以将所述第三物理机上的所述第一数据子集的地址范围逻辑地映射到所述虚拟机的相应逻辑地址范围;以及在将所述第一数据子集从所述第一物理机迁移到所述第三物理机之后,恢复所述虚拟机对所述第一数据子集的读写访问。该方面的其他实施例包括相应的方法、装置和计算机程序,计算机程序被配置为执行该方法的动作,计算机程序被编码在计算机存储设备上。

可以实施本说明书中描述的主题的特定实施例,以便实现以下优点中的一个或多个。与诸如预复制和后复制实时迁移的其他实时迁移方法相比,该方法为虚拟机提供了更好的性能保证。例如,预复制实时迁移将整个数据地址空间视为整个迁移单元,因此整个地址空间完全存在于迁移的始发侧或完全存在于迁移的目的地侧。当迁移正在进行时为了提供对数据的“实时”访问,允许虚拟机继续读/写数据,但是写入被追踪以便可以将更改重新发送到实时迁移的接收物理机。这种重新发送耗费更多的读取带宽、网络带宽、cpu处理和时间。此外,通常繁忙的虚拟机更改数据的速度快于通过网络将更改发送到目的地的速度;在这种情况下,必须减慢虚拟机的访问速度,导致性能下降。

利用后复制实时迁移,虚拟机被通知目的地物理机并向目的地物理机请求数据。如果数据存储在目的地物理机上,则目的地物理机提供数据;否则,目的地物理机从正在迁移数据的始发物理机提取数据,然后提供数据。当必须从始发物理机提取数据时,虚拟机会经历延迟增加。由于从目的地物理机到始发物理机的许多访问,存在显著的总带宽性能下降。

然而,下面描述的方法和系统克服了这些操作特性中的一些或全部,从而导致数据存储和管理技术领域的改进。通过处理可能是一块xmb的数据或一页数据等的数据子集中的迁移数据,该迁移比预复制实时迁移更精细。防止虚拟机访问正在经历迁移的数据子集。因此,不需要执行对写入的追踪。一旦迁移了数据子集,就不需要重新发送它,因为将来所有的访问都将直接转向目的地侧。

如果虚拟机不访问正在迁移的数据子集,则虚拟机几乎不会对性能产生影响。随着数据子集大小减小,虚拟机在等待数据子集迁移时必须被阻止的时间量减少。相反,随着数据子集大小增加,用于存储映射的元数据量减少。因此,通过选择性地评估等待时间与映射维护的权衡(trade-offs),系统管理可以为特定应用程序定制数据子集大小,这使得应用程序的迁移性能操作改善。

尽管下面描述的迁移技术确实利用一些带宽用于开销,但是与预复制或后复制迁移所使用的带宽相比,所使用的量相对较小。这仍然是数据迁移技术领域的又一次改进。

因为阻止了对于正在经历迁移的数据子集的读写访问,所以不需要用于追踪对数据子集的更改的开销机制,也不需要为了迁移目的而专门命令虚拟机访问数据子集。例如,如果数据存储是磁盘并且虚拟机执行对位置的写入,同时为了迁移目的而存在对相同位置的未完成读取,则读取访问的结果是未定义的。这里的系统和方法通过阻止虚拟机访问正被迁移的特定区域来防止对相同位置的并发访问。

可以在任何时间停止下面描述的实时迁移而不会丢失进度。这与预复制实时迁移形成对比,如果停止预复制实时迁移必须完全重新开始,并且也与后复制实时迁移形成对比,后复制实时迁移在虚拟机的访问切换到目的地侧后无法停止。

在附图和以下描述中阐述了本说明书中描述的主题的一个或多个实施例的细节。根据说明书、附图和权利要求,本主题的其他特征、方面和优点将变得显而易见。

附图说明

图1是基于云的环境的框图,其中数据可以经历实时迁移。

图2是数据的实时迁移的示例进程的流程图。

图3是数据的实时迁移的示例进程的流程图,其中数据子集直接从第一物理机迁移到第三物理机。

图4是数据的实时迁移的示例进程的流程图,其中数据子集从第一物理机迁移到第三物理机并且通过其中实现有虚拟机的物理机。

各附图中相同的附图标记和名称表示相同的元件。

具体实施方式

综述

第一物理机按照多个数据子集存储数据,每个数据子集彼此互斥。存储数据用于数据处理进程,诸如虚拟机,该数据处理进程在与第一物理机分开的第二物理机上运行。数据处理进程具有对存储在第一物理机上的数据的读写访问,并且对于每个数据子集,在映射中将第一物理机上的数据子集的地址范围逻辑地映射到数据处理进程的相应的逻辑地址范围。

当来自第一物理机的数据要迁移到第三物理机时,采取以下步骤。数据在数据子集中迁移。对于正在经历迁移(例如,在从第一物理机“飞行”到第三物理机的过程中)的每个数据子集,数据处理进程对数据子集的读写访问被阻止。但是,数据处理进程对未正在经历数据迁移的其他数据子集的读写访问得以维持。通过这种方式,数据处理进程仍然可以访问存储在第一物理机中的大部分数据。响应于特定数据子集从第一物理机到第三物理机的迁移,数据处理进程更新映射。具体地,第三物理机上的特定数据子集的地址范围被映射到数据处理进程的相应逻辑地址范围,并且特定数据子集的迁移前映射因此由更新的映射代替。在将第一数据子集从第一物理机迁移到第三物理机之后,为数据处理进程恢复对第一数据子集的读写访问。此后,当数据处理进程需要存储在迁移数据子集中的数据时,数据处理进程访问第三物理机。

取决于系统要求,上述进程的若干变型可能是有利的。例如,可以不向数据处理进程通知数据子集的迁移。如果数据处理进程请求访问存储在来自第一物理机的数据子集中的数据,它将收到一个响应,通知它数据子集现在存储在第三物理机上(或者当前正在经历向第三物理机的迁移)。如果数据子集当前正在经历迁移,则第三物理机可能会阻止对数据子集的访问,直到迁移完成为止。

可选择地,可以主动向数据处理进程通知迁移,并且可以计算迁移的预期完成时间。然后,数据处理进程可以等待请求数据直到预期完成时间。

数据子集可以被直接从第一物理机发送到第三物理机,然后,当迁移完成时,第一或第三物理机中的一个将通知数据处理进程数据子集的新位置。然而,可选择地,数据子集可以通过充当中介的数据处理进程传递,并且数据处理进程负责迁移。这使得数据处理进程可以近乎实时地了解数据所在的最新位置。

在又一实施方式中,数据处理进程控制迁移,但数据子集被直接从一个存储机发送到其他存储机。例如,虚拟机向第一存储机发送“传输地址范围”消息,指示第一存储机读取由传输地址范围指定的特定地址范围并将该数据写入第二存储机的另一地址范围。存储机是无状态的,但是通过虚拟机发送的指令,数据子集被直接从第一存储机发送到第二存储机。与通过vm传递数据相比,这使得更少的数据被传输,并且如果涉及许多存储机,则可扩展性更高。

最后,数据子集可以通过各种不同的数据管理技术来实现。例如,数据子集可以是与页面或区块(block)大小无关的固定大小的内存,例如1mb、10mb或甚至1gb。可选择地,数据子集可以在区块或页面级别实现,并且使用“水印”使得x以下的所有地址都在第一物理机上,并且在x或x以上的所有地址都在第三物理机上。随着数据迁移,x的值在数据处理进程中更新。这可以消除数据处理进程将逻辑地址向数据子集的映射,并且根据x的水印值划分存储数据的物理机来代替。

以下更详细地描述这些特征和其他特征。

示例操作环境

图1是基于云的环境100的框图,其中数据可以经历实时迁移。在下面的书面描述中,描述了虚拟机的示例实施方式。然而,一些数据处理进程的数据的数据迁移、这种具有基于云的存储的基于客户端的应用程序或者具有基于云的存储的基于云的应用程序,也可以通过下面描述的系统和方法来促进。

在基于云的环境100中主机110是物理机,主机110可以包含一个或多个数据处理装置,诸如安装在机架上的服务器或其他计算设备。存储机140和150也是物理机,其存储在主机110上运行的数据处理进程的数据。存储机140和150也可以是一个或多个数据处理装置,诸如安装在机架上的服务器或其他计算设备,并且通常被设计为便于数据的存储,其中该数据用于由通过网络102进行通信的主机110基于云的访问。

主机110运行管理主机资源的主机操作系统112。在该示例中,主机操作系统112运行软件,该软件虚拟化底层主机硬件并管理一个或多个虚拟机120的并发运行。如图1所示,主机操作系统112管理一个虚拟机120。一般来说,主机可以管理更大量的虚拟机;但是,可以基于主机的物理资源来限制数量。为简洁起见,图1中仅示出了一个虚拟机120。

虚拟机120使用底层主机硬件的模拟版本,其可以被称为虚拟硬件122。由虚拟硬件122运行的软件可以被称为客户软件,例如客户操作系统124和客户应用程序126。在一些实施方式中,客户软件无法确定它是由虚拟硬件还是由物理主机运行。主机的微处理器可以包括处理器级别机制,以通过允许客户软件指令直接在主机的微处理器上运行而不需要代码重写、重新编译或指令仿真来使虚拟硬件能够有效地运行软件应用程序。

主机120从底层主机操作系统112的虚拟内存被分配一组虚拟内存页面,并从一个或多个虚拟磁盘驱动器被分配虚拟磁盘区块,供虚拟机上运行的客户软件使用。实际的物理存储不需要在主机110上,并且在所示的示例中,存储通过存储机140实现。

在一些实施方式中,虚拟磁盘区块被分配在由存储机管理并通过网络102与主机110通信的物理磁盘驱动器上。虚拟机120可以被分配网络地址,通过网络地址它们相应的进程可以经由网络102与其他进程通信。

假设,最初,虚拟机120的所有数据都存储在存储机140上。虚拟机120的这些数据被称为客户数据142。客户数据142最初不需要存储在单个物理机上,而且相反最初可以跨多个存储机存储。然而,为了简化描述,该示例的起点是单个存储机。

按照多个数据子集存储客户数据142,每个数据子集彼此互斥。如图1所示,客户数据142存储在数据子集144中,并且每个数据子集说明性地由索引0...n中的一个索引。映射数据128将存储机140上的数据子集的地址范围逻辑地映射到虚拟机120的相应逻辑地址范围。这样,通过使用映射数据128,虚拟机120可以将逻辑地址空间映射到存储在特定物理机上的特定的数据子集。最后,虽然映射数据128被示为在虚拟机120内,但映射数据128也可由主机操作系统112维护。

可能导致一些或所有客户数据142迁移到一个或多个其他存储机的事件可能发生。这样的事件可以包括存储机140准备离线服务,其需要迁移存储在存储机中的所有数据;负载均衡,其需要迁移存储在存储机中的至少一部分数据;或者不满足服务质量要求,这可能需要迁移存储机中存储的至少一部分数据。如下所述,在一些情况下,存储机可以确定何时需要迁移,并且在其他情况下,虚拟机(或主机)可以确定何时需要迁移。在其他情况下,虚拟机、主机和存储机外部的进程或实体也可以确定何时需要迁移,并且或虚拟机可以控制迁移,或存储机可以控制迁移,如上文所述和将在下面更详细描述的。

参考图2描述了数据实时迁移的一般化进程,其由图1中的带有参考标注2的箭头指示。参考图3描述了一个示例进程,其中物理存储机部分地(或完全)控制迁移,并且由图1中的带有参考标注2的箭头结合带有参考标注3a和3b的箭头表示。最后,参考图4描述了示例进程,其中虚拟机(或主机)部分地(或完全)控制迁移,并且由图1中的带有参考标注2的箭头结合带有参考标注4a和4b的箭头表示。

为了简洁起见,下面描述的迁移示例将详细说明向另一个物理机-存储机150的数据的迁移。但是,如果客户数据存储在多个存储机上,则客户数据可以从存储机之一迁移到另一个当前存储一些客户数据的存储机,或者当前没有存储虚拟机120的客户数据的新的存储机。

从第一物理机到第二物理机的实时迁移

图2是用于数据的实时迁移的示例进程200的流程图。进程200可以在图1的物理机110、140和150中实现。

在第一物理机中,进程200存储在第二物理机上运行的虚拟机的数据,其中第二物理机与第一物理机分开(202)。例如,如图1所示,按照数据子集存储数据142,其中每个数据子集彼此互斥。数据142的“数据子集”可以是预定义的数据结构,诸如区块、扇区或页面,或者可以是任意定义的数据单位,诸如1kb、1mb、10mb或甚至1gb的数据量。在前者的情况下,区块或页面可以具有虚拟机虚拟实现的大小,或者,可选择地,可以是由所使用的物理硬件所确定的物理大小。

对于每个数据子集,进程200通过虚拟机将第一物理机上的数据子集的地址范围逻辑地映射到虚拟机的相应逻辑地址范围(204)。例如,虚拟机(或者,可选择地,主机)将数据从虚拟机的角度看起来所在的地址逻辑地映射到数据实际所在的物理地址。可以使用任何适当的可以将第一机上的数据处理进程中的逻辑地址映射到与第一机分开的第二机上的物理地址的地址转换进程。

在其中数据子集具有任意大小的后一实施方式的情况下,管理员在确定大小时可以考虑若干因素。数据子集的大小越小,所需的映射数据128就越多。但是,由于迁移期间数据子集飞行的时间量随着数据子集的大小减小而减小,因此较小的数据子集倾向于导致更少的读写延迟,这些延迟可能会发生在虚拟机120尝试访问正在经历迁移的数据时。

在一些实施方式中,虚拟机120或主机110可以将由于迁移导致的数据访问区块的速率与最大区块速率阈值进行比较。如果速率超过最大区块速率阈值,则通过虚拟机(或者,可选择地,通过存储数据的存储机)调用内存管理进程以减少数据子集大小。而后,确定新的数据访问区块速率。该进程可以继续,直到速率低于最大区块速率阈值。

在其他实施方式中,虚拟机120或主机110可以将从映射数据128的大小导出的大小度量值与最大大小阈值进行比较。如果大小度量值超过最大大小阈值,则通过虚拟机(或者,可选择地,通过存储数据的存储机)调用的内存管理进程可以增加数据子集大小,以便逻辑向物理的映射所需的元数据量减少。

在又一其他实施方式中,数据访问区块的速率和从映射数据128的大小导出的大小度量值都可以用于管理数据子集的大小。可以基于指示这两个性能考虑因素的相对重要性的权重来确定权衡。

进程200根据逻辑寻址使虚拟机能够对数据进行读写访问(206)。例如,当没有数据子集被迁移时,虚拟机120可以访问客户数据142的所有数据子集。

进程200确定存储在第一物理机上的第一数据子集将被迁移到与第一物理机和第二物理机分开的第三物理机(208)。例如,可能需要迁移存储在存储机140上的一些或全部数据。同样,各种事件可能需要迁移一些数据或所有数据。在该示例中,假设由数据子集索引2指示的在图1中以虚线示出的一个数据子集将从存储机140迁移到存储机150。

进程200阻止虚拟机对第一数据子集的读写访问,并维持虚拟机对其他数据子集的读写访问(210)。在一些实施方式中,该阻止可以由存储机140来做。存储机140可以向虚拟机120发送通知,使得它不能访问存储在正在经历迁移的数据子集中的数据,然后虚拟机120可以保留任何读或写操作,直到它从存储机140或存储机150接收到迁移完成的通知,分别如箭头3a和3b所示。

可选择地,存储机140可以不向虚拟机120通知迁移,并且仅在迁移完成时通知虚拟机120。如果虚拟机120在数据子集飞行时请求来自数据子集的数据,则它可以被通知迁移,和/或被重定向至第二存储机150。

在上面的示例实施方式中,数据子集直接从存储机140迁移到存储机150,而不通过主机110。然而,在其他实施方式中,数据子集可以通过主机110传输。例如,在虚拟机120处理数据子集的迁移的实施方式中,数据子集被传输到虚拟机,然后从虚拟机120发送到存储机150。这在图1中通过箭头4a和4b示出,箭头4a和4b表示由箭头2指示的迁移的实际数据路径。

虚拟机120(或主机110)可以从可用的多个不同存储机之一中选择第二存储机150。后一实施方式便于“无状态”存储机存储数据子集而不引用虚拟机或任何其他存储机的地址,并且不必追踪迁移状态并将其自身标识为“迁移状态”。相反,数据存储的管理由虚拟机120处理。

进程200将第一数据子集从第一物理机迁移到第三物理机,以在第三物理机上存储数据子集(212)。如上所述,数据子集可以直接从存储机140发送到存储机150,或者,可选择地,可以由虚拟机120从第一存储机140取出,然后发送到第二存储机150。

进程200通过将第三物理机上的第一数据子集的地址范围逻辑地映射到虚拟机的相应逻辑地址范围来更新映射(214)。用于更新映射的数据取决于所使用的实施方式。例如,在虚拟机或主机控制迁移的实施方式中,虚拟机或主机可以基于虚拟机向其发送数据子集的存储机的地址更新映射数据。在存储机控制数据子集的迁移的实施方式中,虚拟机或主机可以基于虚拟机接收到的通知更新映射数据,该通知指示数据子集被发送到的存储机的地址。

实时迁移受制于存储机控制

图3是用于数据的实时迁移的示例进程300的流程图,其中数据子集直接从第一物理机迁移到第三物理机。进程300可以在存储机140和150中的一个或两个中实现。

进程300确定存储在第一物理机上的第一数据子集将被迁移到第三物理机(302)。例如,存储机140可以确定它将离线以进行维护并且需要迁移存储在存储机中的所有数据,或者它已经达到存储容量限制并且需要迁移存储在存储机中的一部分数据。

进程300阻止虚拟机对第一数据子集的读写访问,并维持虚拟机对其他数据子集的读写访问(304)。例如,存储机140向虚拟机发送通知,识别正在迁移的数据子集,并指示虚拟机不要尝试向数据子集写入或读取数据子集,直到它被通知成功迁移为止。这由图1的箭头3a表示。

进程300将第一数据子集从第一物理机直接迁移到第三物理机(306)。例如,存储机140将数据子集发送到第二存储机150而不涉及主机110作为中介。

进程300向虚拟机提供迁移完成的通知,并启用对第一数据子集的读写访问(308)。例如,第一存储机140可以从第二存储机150接收成功接收数据子集的确认,并且进而可以向虚拟机120发送第二存储机150的地址和数据子集的迁移的通知。然后,虚拟机120可以更新其映射数据128并继续访问在存储机150上的新位置处的数据子集。可选择地,在第二存储机150成功接收数据子集之后,第二存储机可以向虚拟机120发送第二存储机150的地址和数据子集的迁移通知。虚拟机120然后可以更新其映射数据128并继续访问在存储机150上的新位置处的数据子集。

实时迁移受制于虚拟机或主机控制

图4是用于数据的实时迁移的示例进程400的流程图,其中数据子集从第一物理机迁移到第三物理机并且通过其中实现有虚拟机的物理机。该进程可以在虚拟机120(或主机110)中实现。

进程400确定存储在第一物理机上的第一数据子集将被迁移到第三物理机(402)。例如,虚拟机120可以确定存储机140具有高延迟;或者可以确定负载平衡操作是必要的;或者甚至可以从第一存储机140接收第一存储机140离线以进行维护并且需要迁移为虚拟机120存储的数据的通知。

进程400指示第一物理机将第一数据子集迁移到第三物理机(404)。例如,虚拟机120指示存储机将数据子集迁移到存储机150。虚拟机120也将不访问数据子集,直到迁移完成。

在一些实施方式中,虚拟机120可以从第一存储机140接收数据子集并将数据子集发送到存储机150,如箭头3a和3b所示。在其他实施方式中,虚拟机120可以指示存储机140将数据子集直接发送到存储机150。

进程400通过将第三物理机上的第一数据子集的地址范围逻辑地映射到虚拟机的相应逻辑地址范围来更新映射(406)。例如,在接收到成功迁移的通知,例如来自存储机150的确认消息时,虚拟机120更新映射数据128并恢复对数据子集的访问。

附加的实施细节

可以实施对上述示例系统和进程的变型以实现附加特征。例如,虚拟机可以计算迁移完成的预期时间,而不是等待成功迁移的通知。预期时间过后,虚拟机可以尝试访问数据子集。如果不成功,它可以等待另一段时间,或者可以调用内存错误事件来代替。

在其他实施方式中,数据子集可以在区块或页面级别实现,并且使用“水印”使得x以下的所有地址都在第一物理机上,并且在x或x以上的所有地址都在第三物理机上(或者,当数据存储在三个或更多物理机中时,可以为每个物理机使用连续的地址范围)。当数据迁移时,x的值在数据处理进程中更新。这可以消除数据处理进程将逻辑地址向数据子集的映射,并且根据x的水印值映射存储数据的物理机的分区来代替。相应地,减少了实现映射数据128的元数据要求。

在其他实施方式中,可以在每个数据子集的基础上使用预复制和后复制迁移技术。该实施方式以系统复杂性为代价减少或消除了虚拟机在迁移期间的等待时间。

以上示例在基于云的系统或数据中心的背景下描述。然而,这里描述的系统和方法可以用于从运行访问数据的应用程序或虚拟机的计算机远程管理存储数据的任何系统中。

本说明书中描述的主题和操作的实施例可以在数字电子电路中实现,或者在计算机软件、固件或硬件中实现,包括本说明书中公开的结构及其结构等同物,或者他们中的一个或多个的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即计算机程序指令的一个或多个模块,编码在计算机存储介质上,用于由数据处理装置运行,或控制数据处理装置的操作。

计算机存储介质可以是计算机可读存储设备、计算机可读存储基板、随机或串行访问内存阵列或设备、或它们中的一个或多个的组合,或包括在计算机可读存储设备、计算机可读存储基板、随机或串行存取存储器阵列或设备、或它们中的一个或多个的组合中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是以人工生成的传播信号中编码的计算机程序指令的源或目的地。计算机存储介质也可以是一个或多个单独的物理组件或介质(例如,多个cd、磁盘或其他存储设备)或包括在一个或多个单独的物理组件或介质(例如,多个cd、磁盘或其他存储设备)中。

本说明书中描述的操作可以实现为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其他源接收的数据执行的操作。

术语“数据处理装置”包括用于处理数据的所有类型的装置、设备和机器,包括例如可编程处理器、计算机、片上系统、或以上的多个或其组合。该装置可以包括专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机、或其中一个或多个的组合的代码。装置和执行环境可以实现各种不同的计算模型基础结构,诸如web服务、分布式计算和网格计算基础结构。

计算机程序(也称为程序、软件、软件应用程序、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释语言、声明或进程语言,并且它可以被部署为任何形式,包括独立程序或模块、组件、子例程、对象或其他适合在计算环境中使用的单元。计算机程序可以但不必对应于文件系统中的文件。程序可以存储在保存其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中,存储在专用于所讨论的程序的单个文件中,或存储在多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以被部署为在一个计算机上运行,或在位于一个站点上或跨多个站点分布并通过通信网络互连的多个计算机上运行。

本说明书中描述的进程和逻辑流程可以由运行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行动作。进程和逻辑流程也可以由专用逻辑电路执行,并且装置也可以实现为专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。

作为示例,适合于运行计算机程序的处理器包括通用和专用微处理器,以及任意类型的数字计算机的任意一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于根据指令执行动作的处理器和用于存储指令和数据的一个或多个内存设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,或可操作地耦合到一个或多个大容量存储设备,以从一个或多个大容量存储设备接收数据或将数据传输到一个或多个大容量存储设备,存储设备例如磁盘、磁光盘或光盘。然而,计算机不是必需要具有这样的设备。此外,计算机可以嵌入在另一个设备中,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或便携式存储设备(例如,通用串行总线(usb)闪存驱动器),仅举几例。适用于存储计算机程序指令和数据的设备包括所有形式的非易失性内存、介质和内存设备,包括例如半导体内存设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;和cd-rom和dvd-rom盘。处理器和内存可以辅以专用逻辑电路或并入专用逻辑电路中。

为了提供与用户的交互,本说明书中描述的主题的实施例可以在具有显示设备和键盘以及指示设备的计算机上实现,显示设备例如crt(阴极射线管)或lcd(液晶显示器)监视器,用于向用户显示信息,指示设备例如鼠标或轨迹球,用户可通过键盘和指示设备向计算机提供输入。其他类型的设备也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声学、语音或触觉输入。另外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从web浏览器接收的请求将网页发送到用户的用户设备上的web浏览器。

本说明书中描述的主题的实施例可以在计算系统中实现,计算系统包括后端组件,例如作为数据服务器,或者包括中间件组件,例如应用程序服务器,或者包括前端组件,例如具有图形用户界面或web浏览器的用户计算机,其中用户可通过该图形用户界面或web浏览器与本说明书中描述的主题的实施方式进行交互,或者一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件可以通过任何形式或介质的数字数据通信,例如通信网络,互连。通信网络的示例包括局域网(“lan”)和广域网(“wan”)、互联网络(例如,因特网)和对等网络(例如,adhoc对等网络)。

计算系统可包括用户和服务器。用户和服务器通常彼此远离并且通常通过通信网络进行交互。用户和服务器的关系借助于在相应计算机上运行并且彼此具有用户-服务器关系的计算机程序而产生。在一些实施例中,服务器将数据(例如,html页面)传送到用户设备(例如,用于向与用户设备交互的用户显示数据和从与用户设备交互的用户接收用户输入的目的)。可以从服务器处的用户设备接收在用户设备处生成的数据(例如,用户交互的结果)。

尽管本说明书包含许多具体的实施方式细节,但这些细节不应被解释为对任何特征或声明的范围的限制,而是作为特定实施例特有的特征的描述。在分开的实施例的上下文中的本说明书中描述的某些特征也可以在单个实施例中组合实现。反过来,在单个实施例的上下文中描述的各种特征也可以在多个实施例中分别地或以任何合适的子组合来实现。此外,尽管特征在上面可能描述为以某些组合起作用并且甚至最初如此声明,但是在一些情况下可以从组合中切除来自所声明的组合的一个或多个特征,并且所声明的组合可以指向子组合或子组合的变化。

类似地,虽然在附图中以特定顺序描绘了操作,但是这不应该被理解为需要以所示的特定次序或按顺序执行这样的操作,或者所有示出的操作都要执行,以实现期望的结果。在某些情况下,多任务处理和并行处理可能是有利的。此外,上述实施例中的各种系统组件的分开不应被理解为在所有实施例中都需要这种分开,并且应该理解,所描述的程序组件和系统通常可以在单个软件产品中集成在一起或打包成多个软件产品。

根据示例性,公开了实施例、方法、系统和装置,包括在计算机存储介质上编码的计算机程序,用于将数据从第一存储系统迁移到第二存储系统。该数据用于在与第一存储系统和第二存储系统分开的计算机系统上操作的进程(例如,虚拟机、应用程序或一些其他进程)。该数据根据每个都彼此互斥的数据子集存储。在迁移每个数据集时,防止进程对数据集的访问,但不会影响对其余数据集的访问。一旦数据迁移完成,恢复该进程对数据集的访问。

这样,已经描述了该主题的特定实施例。其他实施例在以下权利要求的范围内。在一些情况下,权利要求中记载的动作可以以不同的次序执行并且仍然实现期望的结果。另外,附图中描绘的进程不一定需要所示的特定次序或顺序来实现期望的结果。在某些实施方式中,多任务和并行处理可能是有利的。

权利要求书(按照条约第19条的修改)

1.一种由包括多个物理机的数据处理系统执行的方法,其特征在于,所述方法包括:

在第一物理机中存储用于在第二物理机上运行的数据处理进程的数据,所述第二物理机与所述第一物理机分开,所述存储数据包括根据多个数据子集存储所述数据,其中每个数据子集彼此互斥;

对于每个数据子集,通过所述数据处理进程,在映射中将所述第一物理机上的所述数据子集的地址范围逻辑地映射到所述数据处理进程的相应逻辑地址范围;

根据逻辑寻址,使所述数据处理进程能够对所述数据进行读写访问;

确定存储在所述第一物理机上的第一数据子集将被迁移到与所述第一物理机和所述第二物理机分开的第三物理机,并作为响应:

阻止所述数据处理进程对所述第一数据子集的读写访问,同时维持所述数据处理进程对其他所述数据子集的读写访问;

将所述第一数据子集从所述第一物理机迁移到所述第三物理机,以将所述数据子集存储在所述第三物理机上;

通过所述数据处理进程,将所述第三物理机上的所述第一数据子集的地址范围逻辑地映射到所述数据处理进程的相应逻辑地址范围来更新所述映射;

其中,使用水印x实施所述映射,使得x以下的所有地址都在所述第一物理机上,并且处于x或x以上的所有地址都在所述第三物理机上。

2.如权利要求1所述的方法,其特征在于,所述数据处理进程是虚拟机。

3.如权利要求2所述的方法,其特征在于:

所述第一物理机上存储的所述第一数据子集将被迁移到所述第三物理机的所述确定由所述第一物理机执行;并且

阻止所述虚拟机对所述第一数据子集的读写访问同时维持所述虚拟机对其他所述数据子集的读写访问包括,由所述第一物理机阻止所述虚拟机对所述第一数据子集的读写访问。

4.如权利要求3所述的方法,其特征在于,还包括:

由所述第一物理机,向所述虚拟机提供所述第一数据子集向所述第三物理机迁移的通知;和

其中,通过将所述第三物理机上的所述第一数据子集的地址范围逻辑地映射到所述虚拟机的相应逻辑地址范围来更新所述映射是响应于所述虚拟机接收由所述第一物理机提供的所述通知而完成的。

5.如权利要求4所述的方法,其特征在于,所述通知指令所述虚拟机不访问所述第一数据子集。

6.如权利要求4所述的方法,其特征在于,将所述第一数据子集从所述第一物理机迁移到所述第三物理机,以将所述数据子集存储在所述第三物理机上包括,直接将所述第一数据子集从所述第一物理机发送到所述第三物理机。

7.如权利要求3所述的方法,其特征在于,还包括:

由所述第三物理机,向所述虚拟机提供所述第一数据子集向所述第三物理机迁移的通知;和

其中,通过将所述第三物理机上的所述第一数据子集的地址范围逻辑地映射到所述虚拟机的相应逻辑地址范围来更新所述映射是响应于由所述虚拟机接收所述通知而完成的。

8.如权利要求2所述的方法,其特征在于:

所述第一物理机上存储的所述第一数据子集将被迁移到所述第三物理机的所述确定由所述虚拟机执行;并且

将所述第一数据子集从所述第一物理机迁移到所述第三物理机,以将所述数据子集存储在所述第三物理机上包括:

通过所述虚拟机指令所述第一物理机将所述第一数据子集发送到所述虚拟机;和

通过所述虚拟机将从所述第一物理机接收的所述第一数据子集发送到所述第三物理机。

9.如权利要求8所述的方法,其特征在于,所述第一物理机和所述第三物理机存储所述数据子集而不引用所述虚拟机的地址。

10.如权利要求2所述的方法,其特征在于,还包括,在将所述第一数据子集从所述第一物理机迁移到所述第三物理机之后,恢复所述虚拟机对所述第一数据子集的读写访问。

11.如权利要求2所述的方法,其特征在于:

所述第一物理机上存储的所述第一数据子集将被迁移到所述第三物理机的所述确定由所述第一物理机、所述虚拟机和所述第三物理机外的进程执行;并且

将所述第一数据子集从所述第一物理机迁移到所述第三物理机,以将所述数据子集存储在所述第三物理机上包括:

通过所述虚拟机指令所述第一物理机将所述第一数据子集发送到所述虚拟机;和

通过所述虚拟机将从所述第一物理机接收的所述第一数据子集发送到所述第三物理机。

12.如权利要求1所述的方法,其特征在于,所述数据子集是被逻辑地映射到物理地址范围的数据块。

13.如权利要求1所述的方法,其特征在于,所述数据子集是数据区块。

14.一种系统,其特征在于,包括:

第一物理机,所述第一物理机根据多个数据子集存储数据,每个所述数据子集彼此互斥;

第二物理机,所述第二物理机与所述第一物理机分开,并且所述第二物理机上的虚拟机对所述第一物理机上存储的所述数据进行读写访问,并且对于每个数据子集,在映射中将所述第一物理机上的所述数据子集的地址范围逻辑地映射到所述虚拟机的相应逻辑地址范围;

其中,响应于确定存储在所述第一物理机上的第一数据子集将被迁移到与所述第一物理机和所述第二物理机分开的第三物理机:

将所述第一数据子集从所述第一物理机迁移到所述第三物理机;

在所述迁移期间阻止所述虚拟机对所述第一数据子集的读写访问,同时维持所述虚拟机对其他所述数据子集的读写访问;以及

通过所述虚拟机更新所述映射以将所述第三物理机上的所述第一数据子集的地址范围逻辑地映射到所述虚拟机的相应逻辑地址范围;以及

在将所述第一数据子集从所述第一物理机迁移到所述第三物理机之后,恢复所述虚拟机对所述第一数据子集的读写访问;

其中,使用水印x实施所述映射,使得x以下的所有地址都在所述第一物理机上,并且处于x或x以上的所有地址都在所述第三物理机上。

15.如权利要求14所述的系统,其特征在于:

所述第一物理机上存储的所述第一数据子集将被迁移到所述第三物理机的所述确定由所述第一物理机执行;并且

阻止所述虚拟机对所述第一数据子集的读写访问由所述第一物理机执行。

16.如权利要求14所述的系统,其特征在于:

所述第一物理机向所述虚拟机提供所述第一数据子集向所述第三物理机迁移的通知;和

其中,更新所述映射以将所述第三物理机上的所述第一数据子集的地址范围逻辑地映射到所述虚拟机的相应逻辑地址范围是响应于由所述虚拟机接收所述通知而完成的。

17.如权利要求15所述的系统,其特征在于,所述通知指令所述虚拟机不访问所述第一数据子集。

18.如权利要求15所述的系统,其特征在于,将所述第一数据子集从所述第一物理机迁移到所述第三物理机包括,直接将所述第一数据子集从所述第一物理机发送到所述第三物理机。

19.如权利要求14所述的系统,其特征在于,还包括:

所述第三物理机向所述虚拟机提供所述第一数据子集向所述第三物理机迁移的通知;并且

其中,更新所述映射以将所述第三物理机上的所述第一数据子集的地址范围逻辑地映射到所述虚拟机的相应逻辑地址范围是响应于由所述虚拟机接收所述通知而完成的。

20.如权利要求14所述的系统,其特征在于:

所述第一物理机上存储的所述第一数据子集将被迁移到所述第三物理机的所述确定由所述虚拟机执行;并且

将所述第一数据子集从所述第一物理机迁移到所述第三物理机包括:

通过所述虚拟机指令所述第一物理机将所述第一数据子集发送到所述虚拟机;

通过所述虚拟机将从所述第一物理机接收的所述第一数据子集发送到所述第三物理机。

21.如权利要求19所述的系统,其特征在于,所述第一物理机和所述第三物理机存储所述数据子集而不引用所述虚拟机的地址。

22.一种计算机程序,其特征在于,包括计算机可读指令,当所述计算机可读指令在由数据处理系统运行时,使所述数据处理系统实现根据权利要求1所述的方法。

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