CN107667348B - 用于迁移应用的方法和设备 - Google Patents

用于迁移应用的方法和设备 Download PDF

Info

Publication number
CN107667348B
CN107667348B CN201680030304.XA CN201680030304A CN107667348B CN 107667348 B CN107667348 B CN 107667348B CN 201680030304 A CN201680030304 A CN 201680030304A CN 107667348 B CN107667348 B CN 107667348B
Authority
CN
China
Prior art keywords
application
computing device
container
destination computing
checkpoint data
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.)
Active
Application number
CN201680030304.XA
Other languages
English (en)
Other versions
CN107667348A (zh
Inventor
U·比约肯格伦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN107667348A publication Critical patent/CN107667348A/zh
Application granted granted Critical
Publication of CN107667348B publication Critical patent/CN107667348B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in 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)
  • Retry When Errors Occur (AREA)

Abstract

使用轻量级虚拟化将应用从源计算设备迁移到目的地计算设备的技术包括在源计算设备和目的地计算设备的每个上的迁移管理模块。源计算设备的迁移管理模块被配置为确定要被迁移的应用的依存关系的信息,并对应用执行检查点操作以生成应用检查点数据。源计算设备还被配置为将依存关系和应用检查点数据发送到目的地计算设备。目的地计算设备的迁移管理模块被配置为基于依存关系信息生成容器,并使用应用检查点数据恢复应用。在此描述且要求保护其他实施例。

Description

用于迁移应用的方法和设备
相关专利申请的交叉引用
本申请要求于2015年6月25日提交的题为“TECHNOLOGIES FOR APPLICATIONMIGRATION USING LIGHTWEIGHT VIRTUALIZATION(使用轻量级虚拟化的应用迁移技术)”的序号为14/750,938的美国发明专利申请的优先权。
技术领域
本公开总体上涉及用于迁移应用的方法和设备。
背景技术
现代计算设备已成为无处不在的用于个人、商业和社会用途的工具。单个用户可能在给定的时间段内依靠移动的或其他方式的多种计算设备。例如,用户可能希望在家中运行台式计算设备上的应用,在乘坐公共交通工具上班时在智能手机上运行相同的应用,以及在下班后在咖啡馆在笔记本电脑上再次运行相同的应用。为了实现这种场景,用户可以将应用从一个计算设备迁移到另一个。类似地,在数据中心环境中,由于数据中心关闭、受影响的服务器安全性、灾难恢复、网络基础设施升级等,管理员可能会执行应用迁移。
虽然应用迁移可以是一个有用的工具,但应用的迁移可能是困难的,因为应用通常被开发为在其上开发该应用和/或最初部署该应用的平台上运行。此外,其他元件(例如,操作系统(OS),管理工具,网络架构,存储系统,虚拟机(VM)配置等)在计算环境之间通常是不同的,这使迁移付出的努力进一步复杂化。因此,可以使用VM技术来迁移这样的应用。例如,可以使用VM技术来对要被迁移的应用连同运行应用的客户机OS一起打包,然后表示VM状态的打包数据可以被迁移。然而,与这样的应用迁移相关联的数据量可能非常大。因此,这样大量的数据的传输可能很慢,特别是通过无线网络连接。此外,迁移的VM的启动时间可能比本机VM慢,从而产生迁移的VM出现故障的表象。
发明内容
根据本公开的一个方面,提供了一种用于迁移应用的源计算设备,该源计算设备包括:应用依存关系确定模块,用于(i)确定要被迁移的应用的一个或多个依存关系,以及(ii)确定与应用的一个或多个依存关系相关的信息;网络通信模块,用于(i)将配置初始化请求发送到与源计算设备进行网络通信的目的地计算设备,其中,配置初始化请求包括能够由目的地计算设备使用以创建用于在其中运行应用的容器的信息,其中,能够由目的地计算设备使用以创建容器的信息包括与应用的一个或多个依存关系相关的信息,以及(ii)响应于发送配置初始化请求,从目的地计算设备接收指示已经在目的地计算设备处创建了容器的通知;以及应用检查点模块,用于响应于从目的地计算设备接收到通知来对要被迁移的应用的当前正在运行的实例执行检查点操作以生成应用检查点数据,其中,网络通信模块还用于将应用检查点数据发送到目的地计算设备,其中,应用检查点数据能够用于在目的地计算设备处创建的容器中恢复应用。
根据本公开的另一方面,提供了一种用于迁移应用的方法,该方法包括:确定要被迁移的应用的一个或多个依存关系;将配置初始化请求发送到与源计算设备进行网络通信的目的地计算设备,其中,配置初始化请求包括能够由目的地计算设备使用以创建用于在其中运行应用的容器的信息,其中,能够由目的地计算设备使用以创建容器的信息包括与应用的一个或多个依存关系相关的信息;响应于已经发送配置初始化请求,从目的地计算设备接收指示已经在目的地计算设备处创建了容器的通知;响应于已经从目的地计算设备接收到通知,对要被迁移的应用的当前正在运行的实例执行检查点操作以生成应用检查点数据;以及将应用检查点数据发送到目的地计算设备,其中,应用检查点数据能够用于在目的地计算设备处创建的容器中恢复应用。
根据本公开的又一方面,提供了一种用于迁移应用的目的地计算设备,其中,该目的地计算设备包括:网络通信模块,用于从与目的地计算设备进行网络通信的源计算设备接收配置初始化请求,其中,配置初始化请求包括与源计算设备上的要被迁移的应用的一个或多个依存关系相关的信息;以及容器配置模块,用于响应于已经接收到配置初始化请求而使用与应用的一个或多个依存关系相关的信息来配置容器,其中,将要在容器中从上下文点恢复应用;其中,网络通信模块还用于(i)向源计算设备发送指示容器已经被配置的通知,以及(ii)响应于通知的发送,从源计算设备接收与应用相关联的应用检查点数据,其中,应用检查点数据能够由目的地计算设备使用以在容器中在应用的生成应用检查点数据的上下文点处恢复应用,以及还包括应用恢复模块,用于基于应用检查点数据在容器中执行恢复应用的应用恢复操作。
根据本公开的再一方面,提供了一种用于迁移应用的方法,其中,该方法包括:从与目的地计算设备进行网络通信的源计算设备接收配置初始化请求,其中,配置初始化请求包括与源计算设备上的要被迁移的应用的一个或多个依存关系相关的信息;响应于已经接收到配置初始化请求,使用与应用的一个或多个依存关系相关的信息来配置容器,其中,将要在容器中从上下文点恢复应用;向源计算设备发送指示容器已经被配置的通知;响应于已经将通知发送到源计算设备,响应于通知而从源计算设备接收与应用相关联的应用检查点数据,其中,应用检查点数据能够由目的地计算设备使用以在容器中在应用的生成应用检查点数据的上下文点处恢复应用;以及基于应用检查点数据执行应用恢复操作,以恢复容器中的应用。
根据本公开的另一方面,提供了一种计算设备,包括:处理器;以及存储器,在其内存储有多条指令,所述多条指令当由处理器执行时使计算设备执行本文中所述的方法。
根据本公开的又一方面,提供了一种机器可读存储介质,包括存储在其上的多条指令,所述多条指令响应于被执行而使得计算设备执行本文中所述的方法。
附图说明
这里描述的概念在附图中通过示例的方式而非限制的方式进行了说明。为了说明的简单和清楚,附图中所示的元件不一定按比例绘制。在被认为适当的情况下,图中已经重复了参考标签,以表明相应或相似的元素。
图1是使用包括源计算设备和目的地计算设备的轻量级虚拟化技术的应用迁移的系统的至少一个实施例的简化框图;
图2是图1的源计算设备的至少一个实施例的简化框图;
图3是图1的目的地计算设备的至少一个实施例的简化框图;
图4是图1和图2的源计算设备的环境的至少一个实施例的简化框图;
图5是图1和图3的目的地计算设备的环境的至少一个实施例的简化框图;
图6和图7是用于将应用迁移到图3的目的地计算设备的方法的至少一个实施例的简化流程图,该方法可以由图2的源计算设备执行;而
图8是用于从图2的源计算设备迁移应用的方法的至少一个实施例的简化流程图,该方法可以由图3的目的地计算设备执行。
具体实施方式
虽然本公开的概念易于进行各种修改和替代形式,但是其具体实施例已经在附图中通过示例的方式示出,并且将在本文中进行详细描述。然而,应当理解,不意图将本公开的概念限制为所公开的特定形式,而是相反,意图是覆盖与本公开和所附权利要求一致的所有修改方案、等同方案和替代方案。
说明书中对“一个实施例”,“实施例”,“示例性实施例”等的提及表示所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例可以必然包括也可以不必然包括该特定的特征、结构或特性。此外,这样的短语不一定指代相同的实施例。此外,当结合实施例描述特定特征、结构或特性时,结合其他实施例来实现这样的特征、结构或特性被认为是在本领域技术人员的知识以内,无论是否明确描述。此外,应当意识到,列表中以“A,B和C中的至少一个”的形式包括的项目可以意味着(A);(B);(C):(A和B);(A和C);(B和C);或(A,B和C)。类似地,以“A,B或C中的至少一个”的形式列出的项目可以是(A);(B);(C):(A和B);(A和C);(B和C);或(A,B和C)。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合实现。所公开的实施例还可以被实现为由一个或多个暂态的或非暂态的机器可读(例如,计算机可读)存储介质承载或存储的指令,其可由一个或多个处理器读取和执行。机器可读存储介质可以被实现为用于以机器可读的形式存储或发送信息的任何存储设备、机构或其他物理结构(例如,易失性或非易失性存储器,介质盘或其他介质设备)。
在附图中,可以以具体的布置和/或顺序示出一些结构或方法特征。然而,应当意识到,可能不需要这种具体的布置和/或排序。相反,在一些实施例中,这些特征可以以与说明性图中所示的不同的方式和/或顺序排列。另外,在特定附图中包括结构或方法特征并不意味着在所有实施例中都需要这样的特征,并且在一些实施例中可以不包括这些特征或者可以将其与其它特征组合。
现在参考图1,在说明性的实施例中,用于迁移应用104的系统100包括通过网络112通信的源计算设备102和目的地计算设备114。源计算设备102和目的地计算设备114各自被配置为使用源计算设备102的迁移管理模块110和目的地计算设备114的互补的迁移管理模块116来支持将应用104从源计算设备102迁移到目的地计算设备114。为了迁移应用104,源计算设备102被配置为将指示要被迁移的应用的应用上下文106(例如,操作系统,应用包和依存关系)的信息发送到目的地计算设备114。作为响应,目的地计算设备114被配置为建立容器120,其中基于从源计算设备102接收到的与应用上下文106相关的信息来恢复应用104。
此外,源计算设备102被配置为对应用104执行检查点操作,并将所得到的应用检查点数据108发送到目的地计算设备114。目的地计算设备114还被配置为安装相关软件(例如,操作系统、应用包、依存关系等的副本),并且基于从源计算设备102接收到的应用检查点数据108对容器120内的应用104执行恢复操作。
源计算设备102可以被体现为能够执行本文描述的功能的任何类型的计算或计算设备,包括但不限于计算机,智能手机,平板计算机,膝上型计算机,笔记本计算机,台式计算机,工作站,移动计算设备,可穿戴计算设备,多处理器系统,服务器(例如,独立的,机架式的,刀片式的,等等),网络设备(例如,物理或虚拟的),web设备,分布式计算系统,基于处理器的系统和/或消费电子设备。
如图2所示,说明性的源计算设备102包括处理器202、输入/输出(I/O)子系统204、存储器206、数据存储设备208、通信电路210和外围设备212。当然,在其他实施例中,源计算设备102可以包括诸如在计算设备中常见的替代或附加组件(例如,高速缓冲存储器,图形处理单元(GPU)等)。另外,在一些实施例中,一个或多个说明性的组件可以并入或以其他方式形成另一组件的一部分。例如,在一些实施例中,存储器206或其部分可以并入一个或多个处理器202中。
处理器202可以被体现为能够执行本文所描述的功能的任何类型的处理器。处理器202可以被体现为单核处理器或多核处理器、多个处理器、数字信号处理器、微控制器、图形处理单元(GPU)、通用GPU(GPGPU)、加速处理单元(APU)、现场可编程门阵列(FPGA)或其他处理器或处理/控制电路。存储器206可以被体现为能够执行本文所描述的功能的任何类型的易失性或非易失性存储器或数据存储。在操作中,存储器206可以存储在源计算设备102的操作期间使用的各种数据和软件,诸如操作系统,应用,程序,库和驱动程序。
存储器206经由I/O子系统204可通信地耦合到处理器202,I/O子系统204可被体现为促进与处理器202、存储器206和源计算设备102的其它组件的输入/输出操作的电路和/或组件。例如,I/O子系统204可以体现为或者以其它方式包括存储器控制器中枢、输入/输出控制中枢、集成传感器中枢、固件设备、通信链路(即点到点链路、总线链路、电线、电缆、光导、印刷电路板迹线等)和/或促进输入/输出操作的其他组件和子系统。在一些实施例中,I/O子系统204可以形成片上系统(SoC)的一部分,并且与源处理器202、存储器206和源计算设备102的其他组件一起并入单集成电路芯片中。
数据存储设备208可以被体现为被配置用于数据的短期或长期存储的任何类型的设备或设备(多个),例如存储器设备和电路,存储卡,硬盘驱动器,固态驱动器或其他数据存储设备。在使用中,如下所述,数据存储设备208可以存储由检查点操作生成的应用检查点数据。
通信电路210可以被体现为能够在源计算设备102和目的地计算设备114之间通过网络112进行通信的任何通信电路、设备或其集合。应当理解,网络112包括用于实现这种通信的一个或多个网络设备(未示出)。通信电路210可以被配置为使用任何一种或多种通信技术(例如,有线或无线通信技术)和相关联的协议(例如,以太网,
Figure GDA0003428370140000071
WiMAX等)来实现这种通信。
外围设备212可以包括任何数量的输入/输出设备、用户接口设备和/或外部连接的外围设备。例如,在一些实施例中,外围设备212可以包括显示器、触摸屏、图形电路、键板、键盘、鼠标、扬声器系统和/或其他输入/输出设备、接口设备和/或外围设备。附加地或可替代地,外围设备212可以包括一个或多个端口,例如USB端口,用于将外部外围设备连接到源计算设备102。
在一些实施例中,源计算设备102还可以包括检查点高速缓存214。类似于数据存储设备208,检查点高速缓存214可以被实现为被配置为用于数据的短期或长期存储的任何类型的一个或多个设备,诸如例如存储器设备和电路,存储卡,硬盘驱动器,固态驱动器或其他数据存储设备。例如,在一些实施例中,检查点高速缓存214可以被体现为用于存储持久信息的基于闪存的存储器存储设备。因此,检查点高速缓存214可以存储应用检查点数据,例如保存的执行状态或其他类似的数据。应当理解,在一些实施例中,检查点高速缓存214可以形成存储器206或处理器202的一部分。
再次参考图1,网络112可以被体现为任何类型的有线或无线通信网络,包括蜂窝网络(例如,全球移动通信系统(GSM))、数字订户线(DSL)网络、有线网络、电话网络、局域网或广域网、全球网络(例如因特网)或其任何组合。如前所述,网络112可以包括能够促进源计算设备102和目的地计算设备114之间的有线和/或无线网络通信的任何数量的网络设备。例如,网络设备可以体现为计算机、路由器、交换机、网络中枢、服务器、存储设备、计算设备等。
目的地计算设备114可以被实现为能够执行本文描述的功能的任何类型的计算或计算设备,包括但不限于计算机,智能手机,平板计算机,膝上型计算机,笔记本计算机,台式计算机,工作站,移动计算设备,可穿戴计算设备,多处理器系统,服务器(例如,独立式的,机架式的,刀片式的,等等),网络设备(例如,物理或虚拟的),web设备,分布式计算系统,基于处理器的系统和/或消费电子设备。类似于图2的说明性的源计算设备102,说明性的目的地计算设备114,如图3所示,在一些实施例中,包括处理器302、输入/输出(I/O)子系统304、存储器306、数据存储设备308、通信电路310、外围设备312,以及在一些实施例中包括检查点高速缓存314。因此,为了说明的清楚,这里不再对这些相似的部件的进一步的描述进行重复,应理解的是,上面关于图2的源计算设备102提供的相应组件的描述同样适用于图3的目的地计算设备114的相应组件。当然,在其他实施例中,目的地计算设备114可以包括其他或附加的或替代的组件,例如在计算设备中通常所见的那些组件。
现在参考图4,在使用中,源计算设备102在操作期间建立环境400。在说明性的环境400中,源计算设备102包括网络通信模块410、用户接口模块420和迁移管理模块430。环境400的各种模块可以体现为硬件、固件、软件或其组合。例如,环境400的各种模块、逻辑和其他组件可以形成源计算设备102的处理器202或其他硬件组件的一部分,或以其他方式由源计算设备102的处理器202或其他硬件组件建立。因此,在一些实施例中,环境400的任何一个或多个模块可以被体现为电气设备的电路或集合(例如,网络通信电路,用户接口电路,迁移管理电路等)。附加地或替代地,在一些实施例中,一个或多个说明性的模块可以形成另一个模块的一部分,和/或一个或多个说明性的模块和/或子模块可以被体现为单独的模块或独立模块。
源计算设备102的说明性的环境400另外包括应用上下文数据库402和应用检查点数据库404,其中每个均可以被源计算设备102的各个模块和/或子模块中的一个或多个访问。应用上下文数据库402可以包括与执行应用104的环境(即,配置)有关的任何数据,例如源计算设备102的哪些硬件资源和/或软件资源与应用104进行交互。应用检查点数据库404可以包括在请求检查点操作时与应用104的执行状态(例如,寄存器值,执行指针值等)相关的任何数据,例如由检查点操作产生的应用检查点数据108。在一些实施例中,应用检查点数据库404可以位于图2的说明性的源计算设备102的检查点高速缓存214或数据存储设备208中。
网络通信模块410被配置为促进去往和来自源计算设备102的入站和出站网络通信(例如,网络业务量,网络分组,网络流等)。换句话说,网络通信模块410被配置为接收和处理从计算设备(例如,目的地计算设备114)接收的网络分组,并且准备和发送网络分组到计算设备(例如,目的地计算设备114)。具体地,网络通信模块410被配置为发送要被迁移的应用104的应用数据(例如,由检查点操作产生的应用检查点数据108)以及发送/接收与应用104的迁移有关的迁移操作消息。因此,在一些实施例中,网络通信模块410的功能的至少一部分可由通信电路210执行。
用户接口模块420被配置为管理执行应用104的迁移的用户和源计算设备102之间的接口,诸如由一个或多个外围设备212生成的接口。因此,用户接口模块420被配置为就与应用104和/或应用104将要在上面迁移的目的地计算设备114相关的输入向用户提示。此外,用户接口模块420被配置为接收与应用104和/或应用104将要在上面迁移的目的地计算设备114相关的用户输入。
迁移管理模块430被配置为管理应用104从源计算设备102到目的地计算设备114的迁移。为此,迁移管理模块430包括应用依存关系确定模块432和应用检查点模块434。应用依存关系确定模块432被配置为确定与应用104的任何依存关系有关的数据。为此,应用依存关系确定模块432可以使用任何数据依存关系发现和/或映射技术来确定依存关系及其信息。应用依存关系信息可以包括应用104所依赖于的任何数据,诸如库、支持基础设施信息、应用配置数据(例如运行时信息)、更改日志、分配的资源、操作系统和/或与应用104的依存关系相关的任何其他数据(例如,文件路径,版本号,调试信息等)。
应用检查点模块434被配置为对当前执行的应用(例如,应用104)执行检查点操作。例如,应用检查点模块434可以被配置为调用一个或多个硬件挂钩(例如,系统调用,处理器指令等),以使源计算设备102保存应用104的检查点(即,检查点数据)。为此,应用检查点模块434可以被配置为例如通过暂停应用104的执行并且保存应用检查点数据108(即,正在执行检查点操作的应用104的执行状态)来冻结(即,锁定)应用104的上下文(例如,应用上下文106)。在一些实施例中,应用检查点模块434可以使用诸如用户空间中检查点/恢复(CRIU)之类的软件工具来执行检查点操作。在这样的实施例中,应用检查点数据108可以存储为文件的集合,在另一个计算设备(例如,目的地计算设备114)处可以从文件的集合恢复应用104。此外,应用检查点模块434被配置为在将所迁移的应用成功恢复时从与应用104相关联的应用上下文数据库402和/或应用检查点数据库404中清除(即删除)数据。
现在参考图5,在使用中,目的地计算设备114在操作期间建立环境500。在说明性的环境500中,目的地计算设备114包括网络通信模块510和迁移管理模块520。环境500的各种模块可以被体现为硬件、固件、软件或其组合。例如,环境300的各种模块、逻辑和其他组件可以形成处理器302或目的地计算设备114的其他硬件组件的一部分,或以其他方式由其建立。这样,在一些实施例中,环境500的任何一个或多个模块可以被体现为电气设备的电路或集合(例如,网络通信电路,迁移管理电路等)。附加地或可替代地,在一些实施例中,一个或多个说明性的模块可以形成另一个模块的一部分和/或一个或多个说明性的模块和/或子模块可以被体现为单独的模块或独立的模块。
说明性的环境500另外包括应用上下文数据库502和应用检查点数据库504,每个可以由目的地计算设备114的各种模块和/或子模块中的一个或多个访问。应用上下文数据库502类似于源计算设备102的应用上下文数据库402,可以包括与要在其中恢复和执行应用104的环境(即,配置)有关的任何数据,例如源计算设备102的哪些硬件资源和/或软件资源可以被调度和/或能够在迁移时与应用104进行交互。与源计算设备102的应用检查点数据库404类似的应用检查点数据库504可以包括与进行了检查点操作的应用104的状态相关的任何数据(例如,应用检查点数据108),从该数据中可以恢复应用104。在一些实施例中,应用检查点数据库504可以位于图3的说明性的目的地计算设备114的检查点高速缓存314或数据存储设备308中。应当理解,应用上下文数据库502和/或应用检查点数据库504可以包括从源计算设备102接收并被描述为存储在此的数据的附加和/或备选数据。
网络通信模块510被配置为促进去向和来自源计算设备的入站和出站网络通信(例如,网络业务量,网络分组,网络流等)。换句话说,网络通信模块510被配置为接收和处理从计算设备(例如,源计算设备102)接收的网络分组,并且准备网络分组且向该计算设备发送网络分组。具体地,网络通信模块510被配置为接收被迁移的应用104的应用数据,并发送/接收与应用104的迁移有关的迁移操作消息。因此,在一些实施例中,网络通信模块510的至少一部分功能可以由通信电路310执行。
迁移管理模块520被配置为管理应用104从源计算设备102到目的地计算设备114的迁移。为此,迁移管理模块520包括容器配置模块522和应用恢复模块324。容器配置模块522被配置为在目的地计算设备114上建立软件容器(例如,图1的容器120),其中应用104可以迁移到其中,在其中恢复,并在其中执行。容器120可以被体现为在其中可以运行被迁移的应用的任何合适的操作系统级虚拟化实例。为了设置容器120,在一些实施例中,容器配置模块522可以被配置为生成包括了用于配置容器120的各种命令(即指令)和变元(argument)的脚本,并且调用执行脚本的过程(即,配置容器120)。可以基于与从源计算设备102接收到的应用104的任何依存关系相关的信息生成脚本。应当理解,容器配置模块522可以使用用于配置容器120的自动应用部署工具,诸如Docker。在一个这样的实施例中,容器配置模块522可以生成包括各种命令和变元的Docker文件,并且使用Docker守护程序来运行Docker文件以基于Docker文件的各种命令和变元来配置容器120。
应用恢复模块524被配置为基于应用检查点数据在容器120内恢复应用104。也就是说,应用恢复模块524被配置为在由源计算设备102的迁移管理模块430冻结应用的上下文点处在容器120内运行应用。为了恢复应用104,在一些实施例中,应用恢复模块524可以使用诸如用户空间中检查点/恢复(CRIU)之类的软件工具来执行恢复操作。因此,在这样的实施例中,可以对源计算设备102上生成的文件的集合(即,在检查点操作期间)执行恢复操作。例如,应用恢复模块524可以创建包括各种命令(即指令)和变元的脚本,以恢复应用104并且调用基于该脚本恢复应用104的进程。应当理解,应用恢复模块524可以使用用于将应用104部署在容器120内的自动应用部署工具。在使用Docker的一个这样的实施例中,应用恢复模块524可以生成包括各种命令和变元的Docker文件,并构建可以使用Docker守护程序从中恢复应用104以运行Docker文件的映像(image)。此外,应用恢复模块524被配置为在对应用104的成功迁移和恢复之后清除(即,删除)与应用104相关联的应用检查点数据库504和/或应用上下文数据库502中的数据。
现在参考图6和7,在使用中,源计算设备102可以执行用于将应用(例如,应用104)从源计算设备102迁移到目的地计算设备114的方法600。方法600以框602开始,源计算设备102确定是否迁移应用104。例如,在一些实施例中,源计算设备102可以确定迁移是否已被源计算设备102的用户或者通过自动过程来请求,或以其他方式被发起。在这样的实施例中,例如,可以通过来自用户的输入来生成迁移发起信号,该输入指示用户已经提示了对应用104的迁移。如果源计算设备102确定应用104不被迁移,方法600返回到框602以继续监视用于迁移应用104的请求或指令。否则,如果源计算设备102确定要迁移应用104,则方法600前进到框604。
在框604中,源计算设备102确定目的地计算设备114的识别信息。例如,在一些实施例中,源计算设备102可以向源计算设备102的用户提示期望的目的地计算设备的标识信息。目的地计算设备114的标识信息可以包括源计算设备102(即,通信电路210)可以用于建立与目的地计算设备114的连接的任何类型的信息。例如,识别信息可以包括互联网协议(IP)地址、机器访问控制(MAC)地址、端口号、与目的地计算设备114相关联的友好名称以及任何认证凭证,诸如用户名,密码,密码短语,等等。
在框606中,源计算设备102确定对应用104的任何依存关系。为了确定依存关系,源计算设备102可以使用任何数据依存关系发现和/或映射技术。例如,源计算设备102可以分析应用104的交互以识别由应用104访问或以其他方式与应用104交互的其他应用和/或数据。当然,可以使用复杂的依存关系算法和过程来执行这种分析。
在框608中,源计算设备102基于在框604确定的目的地计算设备114的识别信息来建立源计算设备102与目的地计算设备114之间的连接。在框610中,源计算设备102将配置初始化请求发送到目的地计算设备114。在框612,源计算设备102还发送与应用104的依存关系相关的信息以及配置初始化请求,诸如关于外部连接的源的依存关系的安装程序的位置,依存关系的版本号,依存关系的调试信息,等等。
在框614中,源计算设备102确定容器120配置是否完成。例如,在一些实施例中,源计算设备102可以确定是否从目的地计算设备114接收到指示容器120已被配置的通知。如果不是,方法600循环回到框614继续确定容器120是否已被配置。否则,如果源计算设备102确定容器120的配置完成,则该方法前进到框616。
在框616中,源计算设备102通知用户可以发起应用104的迁移。为了这样做,在一些实施例中,源计算设备102可以经由一个或多个外围设备212向用户提供通知。应当理解,在一些实施例中,迁移操作可以是自动的,使得用户不需要被提示,在这种情况下,方法600可以直接从框610前进到框618。
在框618中,源计算设备102确定是否执行应用104的迁移。如果不是,则方法600循环回到框618继续确定是否执行应用迁移。否则,如果源计算设备102确定执行应用104的迁移,则方法600前进到框620。在框620中,源计算设备102对要被迁移的应用104执行检查点操作。为了这样做,在框622中,源计算设备102生成应用104的应用检查点数据(例如,应用检查点数据108),该应用检查点数据包括在发起迁移时的应用104的状态信息。
在图7的框624中,源计算设备102将应用检查点数据发送到目的地计算设备114。随后,在框626中,源计算设备102确定应用迁移是否完成。例如,在一些实施例中,目的地计算设备114可以向源计算设备102发送指示应用104已被成功迁移到目的地计算设备114的指示。如果源计算设备102确定应用104的迁移未完成,则方法600循环回到框626以继续确定应用的迁移是否完成。否则,如果源计算设备102确定应用104的迁移已经完成,则方法600前进到框628。
在框628中,源计算设备102执行清除操作。为了这样做,在框630中,源计算设备102删除在框622处生成的应用检查点数据。另外或者可替代地,在一些实施例中,源计算设备102可以在清除操作期间终止被迁移的应用。在框632中,源计算设备102在返回到框602以继续,在确定是否迁移应用104之前,终止与目的地计算设备114的连接。
现在参考图8,在使用中,目的地计算设备114可以执行用于将应用(例如,应用104)从源计算设备102迁移到目的地计算设备114的方法800。方法800从框802开始,其中目的地计算设备114确定是否接收到用于配置要恢复的应用104的容器(例如,容器120)的配置初始化请求。如果不是,则该方法循环回到框802以继续确定是否接收到配置初始化请求。否则,如果接收到配置初始化请求,则该方法前进到框804。
在框804中,目的地计算设备114在将应用104的上下文数据迁移到目的地计算设备114时配置用于恢复应用104的容器120。为此,在框806中,目的地计算设备114基于应用104的任何依存关系来配置容器120。如前所述,可以利用配置初始化请求来接收与应用104的依存关系相关的数据。应当理解,在一些实施例中,目的地计算设备114可能不具有存储在本地存储器(例如,数据存储设备308)中的应用104的依存关系中的一个或多个。因此,在这样的实施例中,脚本可以包括关于如何和/或在何处从外部源(例如,远程计算设备)检索依存关系或依存关系的安装程序的指令。因此,无论依存关系是从数据存储设备308检索的还是从外部源检索的,在容器120内安装每个依存关系的副本(例如,操作系统的副本,运行应用104所需的任何包的副本)。换句话说,容器120用作沙盒以保护目的地计算设备114的环境。在框808中,目的地计算设备114基于用于配置容器120的依存关系创建脚本,并运行脚本(例如,通过守护程序)以配置容器120。
在框810中,目的地计算设备114向源计算设备102发送指示已经配置了容器120的指示。在框812中,目的地计算设备114确定是否从源计算设备102接收到应用检查点数据(例如,应用检查点数据108)。如果不是,则方法800返回到框812继续监视应用检查点数据108。否则,如果目的地计算设备114确定从源计算设备102接收到应用检查点数据108,则方法800前进到框814。
在框814中,目的地计算设备114对应用检查点数据108执行恢复操作,以在被配置为支持应用104的恢复的容器120中恢复应用104。为此,在框816中,目的地计算设备114创建脚本以将应用检查点数据108导入到容器120。如前所述,脚本包括用于导入应用检查点数据108并对应用检查点数据108执行恢复操作以恢复应用104的各种指令和命令。另外,在框818中,目的地计算设备114基于脚本的指令和命令来执行脚本(例如,经由守护程序)以恢复应用104。
在框820中,目的地计算设备114向源计算设备102发送指示应用104被成功迁移的指示(例如,应用迁移完成信号)。在框822中,目的地计算设备114对从源计算设备102接收到的应用检查点数据108执行清除操作,以恢复在框812处接收到的应用104。为了这样做,在框824中,目的地计算设备114在返回到框802继续监视配置初始化请求是否被接收之前,删除应用检查点数据108。
示例
以下提供本文公开的装置、系统和方法的说明书的示例。设备、系统和方法的实施例可以包括以下描述的示例中的任何一个或多个以及任何组合。
示例1包括用于迁移应用的源计算设备,源计算设备包括:网络通信模块,用于(i)将配置初始化请求发送到在与所述源计算设备进行网络通信的目的地计算设备,其中所述配置初始化请求包括能够由目的地计算设备使用以创建在其中运行应用的容器的信息,以及(ii)响应于发送配置初始化请求,从目的地计算设备接收指示已经在目的地计算设备处创建了所述容器的通知;以及应用检查点模块,用于响应于从所述目的地计算设备接收到所述通知来对要被迁移的应用的当前运行实例执行检查点操作以生成应用检查点数据,其中所述网络通信模块还用于将应用检查点数据发送到目的地计算设备,其中应用检查点数据能够用于在目的地计算设备上创建的容器中恢复应用。
示例2包括示例1的主题,并且还包括应用依存关系确定模块,用于(i)确定要被迁移的应用的一个或多个依存关系,以及(ii)确定与要被迁移的应用的一个或多个依存关系相关的信息,其中发送配置初始化请求还包括发送与要被迁移的应用的一个或多个依存关系有关的信息。
示例3包括示例1和2中任一项的主题,并且还包括用户接口模块,用于响应于已经接收到配置初始化请求而向源计算设备的用户通知所述应用到目的地计算设备的迁移已经准备好被发起,并且其中执行检查点操作包括响应于确定用户发起了应用的迁移来执行检查点操作。
示例4包括示例1-3中任一项的主题,并且其中网络通信模块还用于从目的地计算设备接收要被迁移的应用的迁移完成的通知,并且其中应用检查点模块还用于响应于已经从目的地计算设备接收到要被迁移的应用的迁移完成的通知而对应用检查点数据执行清除操作。
示例5包括示例1-4中任一项的主题,并且其中对要被迁移的应用执行检查点操作包括:(i)在应用正在运行时冻结应用的至少一部分,(ii)对所述应用执行检查点操作以生成应用检查点数据,所述应用检查点数据标识在应用被冻结时源计算设备的上下文点,以及(iii)将应用检查点数据存储到源计算设备的存储设备,其中应用检查点数据包括能够用于从上下文点恢复和运行应用的多个文件。
示例6包括示例1-5中任一项的主题,并且其中对要被迁移的应用执行检查点操作包括使用用户空间中的检查点/恢复(CRIU)工具执行检查点操作,以执行检查点操作。
示例7包括用于迁移应用的方法,所述方法包括:通过源计算设备将配置初始化请求发送到与所述源计算设备进行网络通信的目的地计算设备,其中所述配置初始化请求包括能够由所述目的地计算设备使用以创建用于在其中运行所述应用的容器的信息;通过所述源计算设备并且响应于发送所述配置初始化请求,从所述目的地计算设备接收指示已经在所述目的地计算设备处创建了所述容器的通知;通过所述源计算设备并且响应于从所述目的地计算设备接收到所述通知,对要被迁移的应用的当前正在运行的实例执行检查点操作以生成应用检查点数据;以及通过所述源计算设备将所述应用检查点数据发送到所述目的地计算设备,其中所述应用检查点数据能够用于在所述目的地计算设备处创建的容器中恢复应用。
示例8包括示例7的主题,并且还包括通过源计算设备确定要被迁移的应用的一个或多个依存关系,其中发送配置初始化请求还包括:发送要被迁移的应用的所述一个或多个依存关系。
示例9包括示例7和8中任一项的主题,并且还包括通过源计算设备且响应于接收配置初始化请求而向所述源计算设备的用户通知所述应用到所述目的地计算设备的迁移已经准备好被发起,并且其中执行检查点操作包括响应于确定用户发起了应用的迁移来执行检查点操作。
示例10包括示例7-9中任一项的主题,并且还包括,响应于从目的地计算设备接收到应用迁移已经完成的通知,通过源计算设备对应用检查点数据执行清除操作。
示例11包括示例7-10中任一项的主题,并且其中对要被迁移的应用执行检查点操作包括:(i)在应用正在运行时冻结应用的至少一部分,(ii)对所述应用执行检查点操作以生成应用检查点数据,所述应用检查点数据标识在所述应用被冻结时所述源计算设备的上下文点,以及(iii)将所述应用检查点数据存储到所述源计算设备的存储设备,其中所述应用检查点数据包括能够用于从上下文点恢复和运行应用的多个文件。
示例12包括示例7-11中任一项的主题,并且其中对要被迁移的应用执行检查点操作包括使用用户空间中检查点/恢复(CRIU)工具执行应用恢复操作以执行检查点操作。
示例13包括计算设备,该计算设备包括:处理器;以及存储器,其中存储有多个指令,所述多个指令当由处理器执行时,使得计算设备执行示例7-12中任一项的方法。
示例14包括一种或多种机器可读存储介质,其包括存储在其上的多条指令,所述多条指令响应于被执行而使得计算设备执行示例7-12中任一个的方法。
示例15包括用于迁移应用的源计算设备,所述源计算设备包括:用于将配置初始化请求发送到与所述源计算设备进行网络通信的目的地计算设备的单元,其中所述配置初始化请求包括能够由所述目的地计算设备使用以创建用于在其中运行所述应用的容器的信息;用于响应于已经发送所述配置初始化请求而从所述目的地计算设备接收指示已经在所述目的地计算设备处创建了所述容器的通知的单元;用于响应于已经从所述目的地计算设备接收到所述通知而对要被迁移的应用的当前正在运行的实例执行检查点操作以生成应用检查点数据的单元;以及用于将所述应用检查点数据发送到所述目的地计算设备的单元,其中所述应用检查点数据能够用于在所述目的地计算设备处创建的容器中恢复应用。
示例16包括示例15的主题,并且还包括用于确定要被迁移的应用的一个或多个依存关系的单元,其中用于发送配置初始化请求的单元还包括用于发送要被迁移的应用的所述一个或多个依存关系的单元。
示例17包括示例15和16中任一项的主题,并且还包括用于响应于已经接收到配置初始化请求而向源计算设备的用户通知所述应用到目的地计算设备的迁移已经准备好被发起的单元,并且其中,用于执行检查点操作的单元包括用于响应于确定用户发起了应用的迁移来执行检查点操作的单元。
示例18包括示例15-17中任一项的主题,并且还包括用于响应于已经从目的地计算设备接收到所述应用的迁移完成的通知而对应用检查点数据执行清除操作的单元。
示例19包括示例15-18中任一项的主题,并且其中用于对要被迁移的应用执行检查点操作的单元包括用于执行以下操作的单元:(i)在应用正在运行时冻结所述应用的至少一部分,(ii)对应用执行检查点操作以生成应用检查点数据,所述应用检查点数据标识在应用被冻结时源计算设备的上下文点,以及(iii)将应用检查点数据存储到源计算设备的存储设备,其中所述应用检查点数据包括能够用来从所述上下文点恢复和运行所述应用的多个文件。
示例20包括示例15-19中任一项的主题,并且其中用于对要被迁移的应用执行检查点操作的单元包括用于使用用户空间中检查点/恢复(CRIU)工具执行应用恢复操作以执行检查点操作的单元。
示例21包括迁移应用的目的地计算设备,其中目的地计算设备包括:网络通信模块,用于从与目的地计算设备进行网络通信的源计算设备接收配置初始化请求;和容器配置模块,用于响应于已经接收到所述配置初始化请求而基于所述配置初始化请求来配置容器,在该容器中从上下文点恢复迁移的应用;其中所述网络通信模块还用于(i)向所述源计算设备发送指示所述容器已被配置的通知,以及(ii)响应于所述通知的发送,从所述源计算设备接收与所述应用相关联的应用检查点数据,其中所述应用检查点数据能够由所述目的地计算设备使用以在所述容器中在所述应用的生成所述应用检查点数据的上下文点处恢复所述应用,以及还包括应用恢复模块,用于基于所述应用检查点数据在所述容器中执行恢复所述应用的应用恢复操作。
示例22包括示例21的主题,并且其中接收所述配置初始化请求包括从所述源计算设备接收与所述应用的一个或多个依存关系相关的信息,并且其中,配置所述容器以支持运行要被迁移的应用包括基于与从源计算设备接收到的应用的一个或多个依存关系相关的信息来配置所述容器。
示例23包括示例21和22中任一项的主题,并且其中,所述容器配置模块还用于(i)基于与来自所述源计算设备的应用的一个或多个依存关系相关的信息来检索要在所述容器内执行的所述应用的依存关系的一个或多个副本,以及(ii)在容器内执行应用的依存关系的一个或多个副本。
示例24包括示例21-23中任一项的主题,并且其中,检索要在所述容器内执行的所述应用的依存关系的一个或多个副本包括,从所述目的地计算设备的本地存储设备和与所述目的地计算设备网络连接的远程计算设备中的至少一个中检索所述应用的依存关系的所述一个或多个副本。
示例25包括示例21-24中任一项的主题,并且其中配置容器以支持运行要被迁移的应用包括(i)创建脚本以实现应用的一个或多个依存关系,以及(ii)执行脚本来生成容器。
示例26包括示例21-25中任一项的主题,并且其中将应用检查点数据导入所述容器包括(i)创建脚本以将应用检查点数据导入所述容器,以及(ii)经由守护程序执行该脚本以基于应用检查点数据来恢复应用。
示例27包括示例21-26中任一项的主题,并且其中创建脚本将应用检查点数据导入容器包括创建Docker脚本以将应用检查点数据导入容器,其中所述容器是Docker容器,并且其中执行脚本以基于应用检查点数据恢复应用包括运行Docker守护程序以执行脚本来恢复应用。
示例28包括示例21-27中任一项的主题,并且其中对要被迁移的应用执行应用恢复操作包括使用用户空间中检查点/恢复(CRIU)工具执行应用恢复操作以执行应用恢复操作。
示例29包括用于迁移应用的方法,其中该方法包括:通过目的地计算设备从与所述目的地计算设备进行网络通信的源计算设备接收配置初始化请求;通过所述目的地计算设备并且响应于接收到所述配置初始化请求,基于所述配置初始化请求来配置容器,在所述容器中从上下文点恢复被迁移的应用;通过所述目的地计算设备向所述源计算设备发送指示已经配置了所述容器的通知;通过所述目的地计算设备并且响应于将所述通知发送到所述源计算设备,响应于所述通知而从所述源计算设备接收与所述应用相关联的应用检查点数据,其中所述应用检查点数据能够由所述目的地计算设备使用以在所述容器中在所述应用的生成所述应用检查点数据的上下文点处恢复所述应用;以及通过所述目的地计算设备基于所述应用检查点数据执行应用恢复操作,以恢复所述容器中的应用。
示例30包括示例29的主题,并且其中接收配置初始化请求包括从源计算设备接收应用的一个或多个依存关系,并且其中配置容器以支持运行要被迁移的应用包括基于从源计算设备接收到的应用的一个或多个依存关系来配置容器。
示例31包括示例29和30中任一项的主题,并且还包括通过目的地计算设备检索要在容器内执行的应用的依存关系的一个或多个副本;以及通过所述目的地计算设备在所述容器内执行应用的依存关系的一个或多个副本。
示例32包括示例29-31中任一项的主题,并且其中检索要在容器内执行的应用的依存关系的一个或多个副本包括:从目的地计算设备的本地存储设备和与目的地计算设备网络连接的远程计算设备中的至少一个中检索应用的依存关系的一个或多个副本。
示例33包括示例29-32中任一项的主题,并且其中配置容器以支持运行要被迁移的应用包括:(i)创建脚本以实现应用的一个或多个依存关系,以及(ii)执行脚本来生成容器。
示例34包括示例29-33中任一项的主题,并且其中将应用检查点数据导入到容器中包括:(i)创建脚本以将应用检查点数据导入所述容器,以及(ii)经由守护程序执行脚本以基于应用检查点数据来恢复应用。
示例35包括示例29-34中任一项的主题,并且其中创建脚本以将应用检查点数据导入容器包括创建Docker脚本以将应用检查点数据导入到容器中,其中容器是Docker容器,并且其中基于应用检查点数据执行脚本以恢复应用包括运行Docker守护程序以执行脚本来恢复应用。
示例36包括示例29-35中任一项的主题,并且其中对要被迁移的应用执行应用恢复操作包括使用用户空间中检查点/恢复(CRIU)工具执行应用恢复操作以执行应用恢复操作。
示例37包括计算设备,所述计算设备包括处理器,以及存储器,在所述存储器中存储有多个指令,所述多个指令当由处理器执行时,使得计算设备执行示例29-36中任一个的方法。
示例38包括一种或多种机器可读存储介质,其包括存储在其上的多条指令,所述多条指令响应于被执行而使得计算设备执行示例29-36中任一个的方法。
示例39包括用于迁移应用的目的地计算设备,其中目的地计算设备包括:用于从与所述目的地计算设备进行网络通信的源计算设备接收配置初始化请求的单元;用于响应于已经接收到所述配置初始化请求而基于所述配置初始化请求配置容器的单元,在所述容器中从上下文点恢复被迁移的应用;用于向所述源计算设备发送指示已经配置了所述容器的通知的单元;用于响应于将所述通知发送到所述源计算设备,响应于所述通知而从所述源计算设备接收与所述应用相关联的应用检查点数据的单元,其中所述应用检查点数据能够由所述目的地计算设备使用以在应用检查点数据生成的应用的上下文点处恢复所述容器中的应用;以及用于基于所述应用检查点数据执行应用恢复操作以恢复所述容器中的应用的单元。
示例40包括示例39的主题,并且其中用于接收配置初始化请求的单元包括用于从源计算设备接收应用的一个或多个依存关系的单元,并且其中用于配置容器以支持运行要被迁移的应用的单元包括用于基于从源计算设备接收到的应用的一个或多个依存关系来配置容器的单元。
示例41包括示例39和40中任一项的主题,并且还包括用于检索要在容器内执行的应用的依存关系的一个或多个副本的单元;以及用于在容器内执行应用的依存关系的一个或多个副本的单元。
示例42包括示例39-41中任一项的主题,并且其中用于检索要在容器内执行的应用的依存关系的一个或多个副本的单元包括:用于从目的地计算设备的本地存储设备和与目的地计算设备网络连接的远程计算设备中的至少一个检索应用的依存关系的一个或多个副本的单元。
示例43包括示例39-42中任一项的主题,并且其中用于配置容器以支持运行要被迁移的应用的单元包括用于执行以下操作的单元:(i)创建脚本以实现应用的一个或多个依存关系和(ii)执行该脚本来生成容器。
示例44包括示例39-43中任一项的主题,并且其中用于将应用检查点数据导入容器的单元包括用于执行以下操作的单元:(i)创建脚本以将应用检查点数据导入容器,以及(ii)通过守护程序执行该脚本以基于应用检查点数据恢复应用。
示例45包括示例39-44中任一项的主题,并且其中用于创建脚本以将应用检查点数据导入容器的单元包括用于创建Docker脚本以将应用检查点数据导入到容器中的单元,其中所述容器是Docker容器,并且其中用于执行所述脚本以基于所述应用检查点数据恢复所述应用的单元包括用于运行Docker守护程序以执行所述脚本以恢复所述应用的单元。
示例46包括示例39-45中任一项的主题,并且其中用于对要被迁移的应用执行应用恢复操作的单元包括用于使用用户空间中检查点/恢复(CRIU)工具来执行应用恢复操作以执行应用恢复操作的单元。

Claims (20)

1.一种用于迁移应用的源计算设备,所述源计算设备包括:
应用依存关系确定模块,用于(i)确定要被迁移的应用的一个或多个依存关系,以及(ii)确定与所述应用的所述一个或多个依存关系相关的信息;
网络通信模块,用于(i)将配置初始化请求发送到与所述源计算设备进行网络通信的目的地计算设备,其中,所述配置初始化请求包括能够由所述目的地计算设备使用以创建用于在其中运行所述应用的容器的信息,其中,所述能够由所述目的地计算设备使用以创建所述容器的信息包括与所述应用的所述一个或多个依存关系相关的所述信息,以及(ii)响应于发送所述配置初始化请求,从所述目的地计算设备接收指示已经在所述目的地计算设备处创建了所述容器的通知;以及
应用检查点模块,用于响应于从所述目的地计算设备接收到所述通知来对所述要被迁移的应用的当前正在运行的实例执行检查点操作以生成应用检查点数据,
其中,所述网络通信模块还用于将所述应用检查点数据发送到所述目的地计算设备,其中,所述应用检查点数据能够用于在所述目的地计算设备处创建的所述容器中恢复所述应用。
2.根据权利要求1所述的源计算设备,还包括用户接口模块,用于响应于已经接收到所述配置初始化请求而向所述源计算设备的用户通知所述应用到所述目的地计算设备的迁移已经准备好被发起,并且其中,执行所述检查点操作包括响应于确定所述用户发起了所述应用的迁移来执行检查点操作。
3.根据权利要求1所述的源计算设备,其中,所述网络通信模块还用于从所述目的地计算设备接收所述要被迁移的应用的迁移完成的通知,并且其中,所述应用检查点模块还用于响应于已经从所述目的地计算设备接收到所述要被迁移的应用的迁移完成的通知而对所述应用检查点数据执行清除操作。
4.根据权利要求1所述的源计算设备,其中,对所述要被迁移的应用执行所述检查点操作包括:(i)在所述应用正在运行时冻结所述应用的至少一部分,(ii)对所述应用执行检查点操作以生成应用检查点数据,所述应用检查点数据标识所述应用被冻结时所述源计算设备的上下文点;以及(iii)将所述应用检查点数据存储到所述源计算设备的存储设备,其中,所述应用检查点数据包括能够用于从所述上下文点恢复和运行所述应用的多个文件。
5.一种用于迁移应用的方法,所述方法包括:
确定要被迁移的应用的一个或多个依存关系;
将配置初始化请求发送到与源计算设备进行网络通信的目的地计算设备,其中,所述配置初始化请求包括能够由所述目的地计算设备使用以创建用于在其中运行所述应用的容器的信息,其中,所述能够由所述目的地计算设备使用以创建所述容器的信息包括与所述应用的所述一个或多个依存关系相关的信息;
响应于已经发送所述配置初始化请求,从所述目的地计算设备接收指示已经在所述目的地计算设备处创建了所述容器的通知;
响应于已经从所述目的地计算设备接收到所述通知,对所述要被迁移的应用的当前正在运行的实例执行检查点操作以生成应用检查点数据;以及
将所述应用检查点数据发送到所述目的地计算设备,其中,所述应用检查点数据能够用于在所述目的地计算设备处创建的容器中恢复所述应用。
6.根据权利要求5所述的方法,还包括,响应于已经接收到所述配置初始化请求而向所述源计算设备的用户通知所述应用到所述目的地计算设备的迁移已经准备好被发起,并且其中,执行所述检查点操作包括响应于确定所述用户发起了所述应用的迁移来执行检查点操作。
7.根据权利要求5所述的方法,还包括响应于已经从所述目的地计算设备接收到所述应用的迁移完成的通知,对所述应用检查点数据执行清除操作。
8.根据权利要求5所述的方法,其中,对所述要被迁移的应用执行所述检查点操作包括(i)在所述应用正在运行时冻结所述应用的至少一部分,(ii)对所述应用执行检查点操作以生成应用检查点数据,所述应用检查点数据标识在所述应用被冻结时所述源计算设备的上下文点,以及(iii)将所述应用检查点数据存储到所述源计算设备的存储设备,其中,所述应用检查点数据包括能够用于从所述上下文点恢复并运行所述应用的多个文件。
9.一种用于迁移应用的目的地计算设备,其中,所述目的地计算设备包括:
网络通信模块,用于从与所述目的地计算设备进行网络通信的源计算设备接收配置初始化请求,其中,所述配置初始化请求包括与所述源计算设备上的要被迁移的应用的一个或多个依存关系相关的信息;以及
容器配置模块,用于响应于已经接收到所述配置初始化请求而使用与所述应用的所述一个或多个依存关系相关的所述信息来配置容器,其中,将要在所述容器中从上下文点恢复所述应用;
其中,所述网络通信模块还用于(i)向所述源计算设备发送指示所述容器已经被配置的通知,以及(ii)响应于所述通知的发送,从所述源计算设备接收与所述应用相关联的应用检查点数据,其中,所述应用检查点数据能够由所述目的地计算设备使用以在所述容器中在所述应用的生成所述应用检查点数据的上下文点处恢复所述应用,以及
还包括应用恢复模块,用于基于所述应用检查点数据在所述容器中执行恢复所述应用的应用恢复操作。
10.根据权利要求9所述的目的地计算设备,其中,所述容器配置模块还用于(i)基于与来自所述源计算设备的所述应用的所述一个或多个依存关系相关的信息来检索要在所述容器内执行的所述应用的依存关系的一个或多个副本,以及(ii)在所述容器内执行所述应用的依存关系的所述一个或多个副本。
11.根据权利要求10所述的目的地计算设备,其中,检索要在所述容器内执行的所述应用的依存关系的一个或多个副本包括:从所述目的地计算设备的本地存储设备和与所述目的地计算设备网络连接的远程计算设备中的至少一个中检索所述应用的依存关系的所述一个或多个副本。
12.根据权利要求9所述的目的地计算设备,其中,配置所述容器以支持运行要被迁移的应用包括,(i)创建脚本以实现所述应用的一个或多个依存关系,以及(ii)执行所述脚本以生成所述容器。
13.根据权利要求9所述的目的地计算设备,其中,将所述应用检查点数据导入所述容器包括:(i)创建脚本以将所述应用检查点数据导入所述容器,以及(ii)经由守护程序执行所述脚本以基于所述应用检查点数据恢复所述应用。
14.一种用于迁移应用的方法,其中,所述方法包括:
从与目的地计算设备进行网络通信的源计算设备接收配置初始化请求,其中,所述配置初始化请求包括与所述源计算设备上的要被迁移的应用的一个或多个依存关系相关的信息;
响应于已经接收到所述配置初始化请求,使用与所述应用的所述一个或多个依存关系相关的所述信息来配置容器,其中,将要在所述容器中从上下文点恢复所述应用;
向所述源计算设备发送指示所述容器已经被配置的通知;
响应于已经将所述通知发送到所述源计算设备,响应于所述通知而从所述源计算设备接收与所述应用相关联的应用检查点数据,其中,所述应用检查点数据能够由所述目的地计算设备使用以在所述容器中在所述应用的生成所述应用检查点数据的上下文点处恢复所述应用;以及
基于所述应用检查点数据执行应用恢复操作,以恢复所述容器中的应用。
15.根据权利要求14所述的方法,还包括:
检索要在所述容器内执行的所述应用的依存关系的一个或多个副本;以及
在所述容器内执行所述应用的依存关系的一个或多个副本。
16.根据权利要求15所述的方法,其中,检索要在所述容器内执行的所述应用的依存关系的所述一个或多个副本包括:从所述目的地计算设备的本地存储设备和与所述目的地计算设备网络连接的远程计算设备中的至少一个中检索所述应用的依存关系的所述一个或多个副本。
17.根据权利要求14所述的方法,其中,配置所述容器以支持运行要被迁移的应用包括(i)创建脚本以实现所述应用的一个或多个依存关系,以及(ii)执行所述脚本以生成所述容器。
18.根据权利要求14所述的方法,其中,将所述应用检查点数据导入所述容器包括(i)创建脚本以将所述应用检查点数据导入所述容器,以及(ii)经由守护程序执行所述脚本以基于所述应用检查点数据来恢复所述应用。
19.一种计算设备,包括:
处理器;以及
存储器,在其内存储有多条指令,所述多条指令当由所述处理器执行时使所述计算设备执行权利要求5-8或权利要求14-18中任一项所述的方法。
20.一种机器可读存储介质,包括存储在其上的多条指令,所述多条指令响应于被执行而使得计算设备执行权利要求5-8或权利要求14-18中任一项所述的方法。
CN201680030304.XA 2015-06-25 2016-05-25 用于迁移应用的方法和设备 Active CN107667348B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/750,938 2015-06-25
US14/750,938 US9971622B2 (en) 2015-06-25 2015-06-25 Technologies for application migration using lightweight virtualization
PCT/US2016/034057 WO2016209492A1 (en) 2015-06-25 2016-05-25 Technologies for application migration using lightweight virtualization

Publications (2)

Publication Number Publication Date
CN107667348A CN107667348A (zh) 2018-02-06
CN107667348B true CN107667348B (zh) 2022-04-19

Family

ID=57586079

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680030304.XA Active CN107667348B (zh) 2015-06-25 2016-05-25 用于迁移应用的方法和设备

Country Status (4)

Country Link
US (1) US9971622B2 (zh)
EP (1) EP3314425A4 (zh)
CN (1) CN107667348B (zh)
WO (1) WO2016209492A1 (zh)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10216746B1 (en) * 2015-06-30 2019-02-26 EMC IP Holding Company LLC Managing file system access to remote snapshots
US9910657B2 (en) * 2015-09-16 2018-03-06 International Business Machines Corporation Installing software where operating system prerequisites are unmet
US10901966B2 (en) * 2016-08-29 2021-01-26 Vmware, Inc. Synchronizing configurations for container hosted applications
US10318314B2 (en) * 2017-02-24 2019-06-11 International Business Machines Corporation Techniques for managing software container dependencies
US10936549B2 (en) 2017-03-16 2021-03-02 Cisco Technology, Inc. Cluster-wide container optimization and storage compression
US10268565B2 (en) 2017-04-14 2019-04-23 Ca, Inc. Validation of containers
US10268837B2 (en) 2017-04-14 2019-04-23 Ca, Inc. Validation of containers
KR101807806B1 (ko) * 2017-05-02 2017-12-11 나무기술 주식회사 클라우드 플랫폼에서 어플리케이션을 컨테이너화하는 방법
US11005733B2 (en) * 2017-06-08 2021-05-11 Vmware, Inc Methods, systems, and apparatus to scale in and/or scale out resources managed by a cloud automation system
US10684888B1 (en) * 2017-10-23 2020-06-16 Amazon Technologies, Inc. Self-organizing server migration to service provider systems
US11010259B1 (en) * 2018-02-28 2021-05-18 Veritas Technologies Llc Container-based upgrades for appliances
US10540175B2 (en) * 2018-03-05 2020-01-21 Appzero Software Corp. Up-level applications to a new OS
US10915349B2 (en) * 2018-04-23 2021-02-09 Hewlett Packard Enterprise Development Lp Containerized application deployment
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions 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
US10929162B2 (en) 2018-07-27 2021-02-23 Futurewei Technologies, Inc. Virtual machine container for applications
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
US10922123B2 (en) * 2018-12-12 2021-02-16 Microsoft Technology Licensing, Llc Container migration in computing systems
US11061718B2 (en) * 2019-02-15 2021-07-13 International Business Machines Corporation Pattern-based artificial intelligence planner for computer environment migration
US10990365B2 (en) * 2019-02-26 2021-04-27 Red Hat, Inc. Container image building using dependency container images
US11483384B2 (en) 2019-03-19 2022-10-25 Hewlett Packard Enterprise Development Lp Application migrations
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11175939B2 (en) 2019-05-09 2021-11-16 International Business Machines Corporation Dynamically changing containerized workload isolation in response to detection of a triggering factor
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11442765B1 (en) * 2019-09-18 2022-09-13 Amazon Technologies, Inc. Identifying dependencies for processes for automated containerization
US11487878B1 (en) 2019-09-18 2022-11-01 Amazon Technologies, Inc. Identifying cooperating processes for automated containerization
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11200041B1 (en) * 2020-05-22 2021-12-14 International Business Machines Corporation Remote installation, customization and deployment of mainframe components
US11650810B1 (en) 2020-05-27 2023-05-16 Amazon Technologies, Inc. Annotation based automated containerization
US11748153B2 (en) * 2020-11-25 2023-09-05 International Business Machines Corporation Anticipated containerized infrastructure used in performing cloud migration
US11928498B2 (en) * 2021-03-23 2024-03-12 Dell Products, L.P. Workspace migration system and method of using the same
US11550491B2 (en) * 2021-04-30 2023-01-10 Nutanix, Inc. Container-based application processing
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

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101398770A (zh) * 2007-09-30 2009-04-01 赛门铁克公司 迁移一个或多个虚拟机的系统和方法
CN104133690A (zh) * 2013-05-01 2014-11-05 国际商业机器公司 从一个操作系统级到已更新操作系统级的动态应用迁移

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11508070A (ja) * 1995-06-16 1999-07-13 ルーセント テクノロジーズ 実行制御のためのチェックポイント復旧システム
US6044475A (en) * 1995-06-16 2000-03-28 Lucent Technologies, Inc. Checkpoint and restoration systems for execution control
US7080159B2 (en) * 2000-12-15 2006-07-18 Ntt Docomo, Inc. Method and system for effecting migration of application among heterogeneous devices
US8090836B1 (en) * 2002-06-10 2012-01-03 Symantec Operating Corporation TCP connection migration
US7562254B2 (en) * 2003-07-01 2009-07-14 International Business Machines Corporation Checkpointing and restarting long running web services
WO2006026402A2 (en) * 2004-08-26 2006-03-09 Availigent, Inc. Method and system for providing high availability to computer applications
US7523344B2 (en) * 2006-05-08 2009-04-21 Sun Microsystems, Inc. Method and apparatus for facilitating process migration
US8127289B2 (en) * 2007-06-27 2012-02-28 International Business Machines Corporation Enabling a third party application to participate in migration of a virtualized application instance
US9473598B2 (en) * 2007-12-18 2016-10-18 International Business Machines Corporation Network connection failover during application service interruption
US8549543B2 (en) * 2008-09-30 2013-10-01 International Business Machines Corporation Virtualize, checkpoint, and restart POSIX IPC objects during checkpointing and restarting of a software partition
US9626206B2 (en) * 2010-03-18 2017-04-18 Microsoft Technology Licensing, Llc Virtual machine homogenization to enable migration across heterogeneous computers
US9323921B2 (en) * 2010-07-13 2016-04-26 Microsoft Technology Licensing, Llc Ultra-low cost sandboxing for application appliances
US9891939B2 (en) * 2011-03-03 2018-02-13 Microsoft Technology Licensing, Llc Application compatibility with library operating systems
US9003006B2 (en) * 2011-03-14 2015-04-07 Mash5 Technologies, Inc. Intercloud application virtualization
JP5678778B2 (ja) * 2011-03-31 2015-03-04 富士通株式会社 システムおよびマイグレーション方法
WO2013002777A1 (en) * 2011-06-29 2013-01-03 Hewlett-Packard Development Company, L.P. Application migration with dynamic operating system containers
US9104461B2 (en) * 2012-06-15 2015-08-11 Oracle International Corporation Hypervisor-based management and migration of services executing within virtual environments based on service dependencies and hardware requirements
US9292330B2 (en) * 2012-11-29 2016-03-22 International Business Machines Corporation Replacing virtual machine disks
FR3006527B1 (fr) * 2013-05-29 2015-06-26 Univ Pau Et Des Pays De L Adour Migration de composants applicatifs
US20160285958A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Application container for live migration of mobile applications

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101398770A (zh) * 2007-09-30 2009-04-01 赛门铁克公司 迁移一个或多个虚拟机的系统和方法
CN104133690A (zh) * 2013-05-01 2014-11-05 国际商业机器公司 从一个操作系统级到已更新操作系统级的动态应用迁移

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Containers checkpointing and live migration;Andrey Mirkin等;《Proceedings of the Linux Symposium》;20080726;第2卷;第85-90页 *
一种基于Linux容器的动态迁移方法;姜渠;《信息技术与信息化》;20150215(第2期);第66-68页 *

Also Published As

Publication number Publication date
CN107667348A (zh) 2018-02-06
US20160378525A1 (en) 2016-12-29
EP3314425A4 (en) 2019-03-13
WO2016209492A1 (en) 2016-12-29
US9971622B2 (en) 2018-05-15
EP3314425A1 (en) 2018-05-02

Similar Documents

Publication Publication Date Title
CN107667348B (zh) 用于迁移应用的方法和设备
US11243845B2 (en) Method and device for data backup
US9665386B2 (en) Method for leveraging hypervisor functionality for maintaining application consistent snapshots in a virtualization environment
US10223313B2 (en) Scalable pooled NVMe storage box that comprises a PCIe switch further connected to one or more switches and switch ports
US10003672B2 (en) Apparatus, systems and methods for deployment of interactive desktop applications on distributed infrastructures
EP2994848B1 (en) Optimized resource allocation for virtual machines within a malware content detection system
US10324754B2 (en) Managing virtual machine patterns
JP5826298B2 (ja) 仮想デスクトップインフラストラクチャにおいてチェックアウトした仮想マシンを保護する技術
US9542174B2 (en) Deployment of software images with distinct configuration logic
US10887102B2 (en) Intent framework
US9501296B2 (en) Hypervisor automation manager for starting an operation system with customization data from a disk image
US20150278032A1 (en) Providing services on system being recovered
US11562066B2 (en) Memory tracking for malware detection
CN106776064B (zh) 多系统中管理日志的方法及装置
US20180336085A1 (en) Crash dump extraction of guest failure
US9588831B2 (en) Preventing recurrence of deterministic failures
US11861007B1 (en) Detecting container threats through extracting kernel events to process in reserved scanner containers
US11875175B2 (en) Providing physical host hardware state information to virtual machines deployed on the physical host
CN107885574B (zh) 一种虚拟机的部署方法、业务节点、控制装置及控制节点
US10268550B2 (en) Virtualizing a secure active directory environment
KR102465858B1 (ko) 동일 물리 머신에서 공유메모리를 이용한 가상 머신 간 고성능 통신 기법
US20180157510A1 (en) Interrupt generated random number generator states
US20230127205A1 (en) Memory tracking for malware detection
CN116501446A (zh) Kubernetes集群部署方法及系统、电子设备
CN116069584A (zh) 将监控服务扩展到可信云运营商域中

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant