CN111819545A - 分布式计算系统中的虚拟机的动态迁移 - Google Patents

分布式计算系统中的虚拟机的动态迁移 Download PDF

Info

Publication number
CN111819545A
CN111819545A CN201980017423.5A CN201980017423A CN111819545A CN 111819545 A CN111819545 A CN 111819545A CN 201980017423 A CN201980017423 A CN 201980017423A CN 111819545 A CN111819545 A CN 111819545A
Authority
CN
China
Prior art keywords
disk
virtual machine
data block
source
base cache
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.)
Pending
Application number
CN201980017423.5A
Other languages
English (en)
Inventor
N·巴德
S·库玛
M·沃拉
A·米塔尔
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN111819545A publication Critical patent/CN111819545A/zh
Pending legal-status Critical Current

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/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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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
    • 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
    • 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
    • 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/461Saving or restoring of program or task context
    • 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
    • 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
    • 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
    • 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
    • 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
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
    • G06F9/4868Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate with creation or replication
    • 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
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
    • G06F9/4875Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate with migration policy, e.g. auction, contract negotiation
    • 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]
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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
    • 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/45562Creating, deleting, cloning virtual machine instances
    • 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/45575Starting, stopping, suspending or resuming virtual machine instances
    • 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/45583Memory management, e.g. access or allocation
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本文公开了一种虚拟盘和相关联的方法,其用于促进分布式计算系统中的虚拟机的动态迁移。在一个实施例中,一种方法包括:在虚拟机的动态迁移期间,确定节点上的目的地虚拟盘是否包含与所迁移的虚拟机对应的数据块。该方法也可以包括:响应于确定目的地虚拟盘不包含该数据块,从所迁移的虚拟机的源虚拟盘取回该数据块,将所取回的数据块写入到目的地虚拟盘上的一个或多个空扇区,并且将包含该数据块的被写入的一个或多个扇区在目的地虚拟盘上标记为只读。

Description

分布式计算系统中的虚拟机的动态迁移
背景技术
云计算允许多个用户通过计算机网络访问并共享可配置计算资源的池。这样的共享计算资源可以位于一个或多个数据中心或其他合适的分布式计算系统中。在这样的系统中,路由器、交换机、桥、负载平衡器、或其他网络设备将大量服务器、网络存储设备、以及其他计算设备相互连接。个体服务器可以托管被配置为将计算、通信、存储或其他合适类型的计算服务提供给用户的一个或多个虚拟机、虚拟交换机、或其他类型的虚拟化功能。所提供的计算服务通常被称为“云计算服务”或“云服务”。
发明内容
提供本发明内容从而以简化的形式介绍下面在具体实施方式中进一步描述的一系列概念。本发明内容不旨在确定要求保护的主题的关键特征或必要特征,也不旨在用于限制要求保护的主题的范围。
在计算中,虚拟机一般是指物理计算系统的模拟。虚拟机可以基于某些计算机体系结构(例如,x86)并提供物理计算机的功能。在一些分布式计算系统中,虚拟机的实例化涉及将计算(例如,服务器或处理器)、网络存储(例如,永久数据存储)以及其他合适类型的计算资源分配给虚拟机。实例化可以还涉及获得操作系统的数字文件或“镜像”、系统和/或用户应用、以及来自分布式计算系统中的镜像存储的其他合适数据。一个或多个被分配的服务器可以然后访问并执行所获得的镜像的指令以提供用于虚拟机的合适计算环境。
在某些计算系统中,给虚拟机分配的网络存储可以在虚拟机上表现为“虚拟盘”或“虚拟驱动器”。虚拟盘和虚拟驱动器是模拟或“虚拟化”一个或多个实际盘存储设备(诸如光盘驱动器、软盘驱动器或硬盘驱动器)的软件组件。在一个实现中,虚拟盘可以被实现为被配置为包含只读的父镜像的基本盘和一个或多个差异盘,一个或多个差异盘被配置为包含与父镜像相关的一组经修改的数据块(被维持在被称为“子镜像”的单独的文件中)。差异盘可以允许操作撤销改变。例如,当启用时,对父镜像的所有改变被存储在一个或多个子镜像中。因此,选项可用于撤销对父镜像的一个或多个改变,或者将父镜像与子镜像永久合并。
在操作期间,实例化的虚拟机可能由于工作负载平衡、服务器硬件/软件故障、系统维护、或其他合适的原因而需要从一个托管节点(例如,物理服务器)被移动或“迁移”到另一个。一种迁移技术(在本文被称为“动态迁移”)涉及在不同物理主机之间移动正在运行的虚拟机而无需将客户端(例如,用户或另一应用)与所迁移的虚拟机断开连接。在动态迁移期间,虚拟机的存储器、存储设备和网络连接性从源节点被转移到目的地节点。
预拷贝和后拷贝迁移是用于动态迁移虚拟机的两种技术。根据预拷贝迁移,在虚拟机仍然正在源节点上运行的同时,所迁移的虚拟机的数据从源节点被拷贝到目的地节点。在完成拷贝数据后,虚拟机在目的地节点上被启动。然而,在该拷贝过程期间,如果某个数据由于在虚拟机处的应用处理或其他原因而被改变(即,变“脏”),则脏数据从源节点被重新拷贝到目的地节点。这样的重新拷贝可以在源节点上的虚拟机正在运行高性能计算工作负载(“HCP”,例如,计算化学工作负载)时存在困难,因为源节点处的虚拟机生成脏数据的速率可以超过将数据从源节点拷贝到目的地节点的速率。因此,在许多次迭代后,需要从源节点被拷贝到目的地节点的数据量可能不减少或甚至增加。因此,对应于主机和目的地节点上的所迁移的虚拟机的数据将不会收敛。
后拷贝迁移可以比预拷贝迁移更适合于迁移运行这样的HPC工作负载的虚拟机。后拷贝迁移通过在源节点处挂起虚拟机来启动。在源节点处挂起虚拟机的情况下,虚拟机的运行状态的最小子集(例如,CPU状态、寄存器、不可分页存储器等)可以被转移到目的地节点。虚拟机然后在目的地节点处利用从源节点接收的运行状态的子集被重启(resume)。随后,源节点可以在被称为预分页的过程中将所迁移的虚拟机的剩余数据块主动推送到目的地节点。
然而,预分页可能在虚拟机试图访问尚未被转移的许多数据块时降低在目的地节点上的虚拟机中运行的应用的性能。相反,源节点可能经由预分页推送虚拟机当前不需要的其他数据块。通过在目的地节点处实现基础高速缓存盘以使在后拷贝迁移期间对所迁移的虚拟机的数据块从源节点到目的地节点的转移流水线化,所公开的技术的若干实施例可以解决前述困难的某些方面。具体地,基础高速缓存盘可以被配置为根据需要代替或在除了预分页以外执行从源节点对一个或多个数据块的按需提取。在某些实施例中,基础高速缓存盘可以被实现为针对每个数据扇区可以被写入仅仅一次的虚拟盘。在第一次写入之后,基础高速缓存盘的写入扇区变成只读。
在某些实现中,在所迁移的虚拟机在目的地节点上被启动之前,基础高速缓存盘(“目的地盘”)可以被创建,其是在源节点处的虚拟盘(“源盘”)上的虚拟机的数据块的父代。差异盘可以也被创建,其是基础高速缓存盘的父代以隔离由目的地节点上的虚拟机的写入。在操作时,对于不是从差异盘或目的地盘提供的所有读取,所请求的数据可以从源盘提供的。所请求的数据可以然后被保存在目的地盘中,并且对应扇区可以被标记为只读。
随着后拷贝迁移进展,所迁移的虚拟机的附加数据块可以响应于虚拟机请求和/或经由在目的地节点处的后台处理被取回并写入到目的地盘的扇区。最终,目的地盘将包含来自源节点的虚拟机的数据块的完整拷贝。在完成将数据块的完整拷贝转移到目的地节点处的目的地盘后,源盘可以作为目的地盘的父代被移除。任选地,差异盘和目的地盘也可以在特定时间段之后或根据其他合适的准则被合并成目的地节点处的动态虚拟盘。
所公开的技术的若干实施例可以因此通过使对所迁移的虚拟机的数据块从源节点到目的地节点的转移流水线化来改进后拷贝迁移的效率。代替或除了预分页以外,所迁移的虚拟机的数据块可以以按需方式而被提取。例如,当目的地节点上的所迁移的虚拟机请求一个或多个数据块用于处理时,所请求的数据块可以从源盘被转移到目的地盘。因此,虚拟机的动态迁移的效率可以被改善。
附图说明
图1是根据所公开的技术的实施例的被配置用于虚拟机的快速实例化的分布式计算系统的示意图。
图2A和图2B是图示了根据所公开的技术的实施例的图1中的分布式计算系统的硬件/软件部件的示意图,其中基础高速缓存盘被利用于促进虚拟机的动态迁移。
图3A-3G是图示了根据所公开的技术的实施例的利用基础高速缓存盘用于促进虚拟机的动态迁移的各种操作阶段的示意图。
图4A-4C是图示了根据所公开的技术的实施例的利用基础高速缓存盘用于促进虚拟机的动态迁移的附加操作阶段的示意图。
图5和图6是图示了根据所公开的技术的实施例的与分布式计算系统中的虚拟机的有效动态迁移相关的过程的流程图。
图7是适合于图1中的分布式计算系统的某些部件的计算设备。
具体实施方式
下面描述了用于分布式计算系统中的虚拟机的有效动态迁移的计算系统、设备、组件、模块、例程以及过程的某些实施例。在以下描述中,组件的具体细节被包括以提供对所公开的技术的某些实施例的透彻理解。相关领域技术人员可以还理解,所公开的技术可以具有附加实施例,或者可以在没有下面参考图1-7描述的实施例的细节中的若干细节的情况下被实践。
如本文所使用的,术语“计算集群”一般是指具有将多个服务器或节点相互连接到彼此或外部网络(例如,互联网)的多个网络设备的计算系统。计算集群的一个示例是一个或多个机架,每个机架保持被配置为提供云服务的云计算数据中心(或其部分)中的多个服务器。一个或多个计算集群可以被相互连接以形成“计算架构(computing fabric)”,其形成分布式计算系统的至少部分。术语“网络设备”一般是指网络通信组件。示例网络设备包括路由器、交换机、集线器、桥、负载平衡器、安全网关、或防火墙。“节点”一般是指被配置为实现一个或多个虚拟机、虚拟路由器、虚拟网关、或其他合适的虚拟化计算组件的计算设备。在一个示例中,节点可以包括具有被配置为支持一个或多个虚拟机的管理程序的计算服务器。
如本文所使用的,术语“实例化”一般是指生成在计算机程序的运行时间期间存在的计算对象的实例或事件。实例化将针对由例如虚拟机使用的资源(诸如存储器、处理器和网络访问)的逻辑要求绑定到分布式计算系统中的合适资源的具体实例。例如,虚拟机的实例化尤其包括分配来自分布式计算系统中的资源池的合适的计算、存储、网络和其他合适的资源,获得操作系统、用户应用、或其他合适类型的数据的镜像,以及运行所获得的镜像中所包含的合适的指令以生成模拟物理计算机的计算环境。
还如本文所使用的,术语虚拟机的“迁移”一般是指将虚拟机从一个节点或存储位置移动到另一个的过程。虚拟机的“动态迁移”一般是指在不同物理节点之间移动正在运行的虚拟机而不将客户端(例如,用户或另一用户)与所迁移的虚拟机断开连接。术语“预拷贝迁移”一般是指其中在虚拟机仍然正在源节点上运行的同时所迁移的虚拟机的所有数据块从源节点被拷贝到目的地节点的过程。在完成这样的拷贝后,目的地节点上的虚拟机被启动。相反,术语“后拷贝迁移”一般是指在从源节点拷贝虚拟机的数据块的至少一部分之前在目的地节点上启动所迁移的虚拟机。
其他在本文所使用的,术语“云服务”一般是指通过计算机网络(诸如互联网)提供的一个或多个计算资源。云服务的常见示例包括软件即服务(“SaaS”)、平台即服务(“PaaS”)、以及基础设施即服务(“IaaS”)。SaaS是其中软件应用由云服务提供方托管在例如数据中心中并且由用户通过计算机网络访问的软件分布技术。PaaS一般是指通过计算机网络递送操作系统和相关联的服务而无需下载或安装。
如本文所使用的,短语“中央镜像存储”或“镜像存储”一般是指包含由分布式计算系统的各个节点可访问的文件或文件镜像的网络存储空间。在某些实现中,中央镜像存储可以包括托管在分布式计算系统中的一个或多个节点上的网络可访问数据库。数据库的条目可以包含各种合适类型的文件或文件镜像。也在本文所使用的,“文件”、“文件镜像”、或“镜像”一般是指可以被存储在有形计算机存储设备或介质中的数字数据的汇集。例如,文件镜像可以包括针对虚拟机的操作系统、用户应用、应用数据、用户数据或其他合适类型的数据的完整拷贝。文件镜像可以被逻辑地划分成数据的块、区、页、二进制对象、或其他合适的逻辑细分。例如,与虚拟机相关联的数据的文件镜像可以被逻辑地划分成256千字节、512千字节或其他合适大小的块。每个数据块可以被记录、写入或存储在计算机存储设备的一个或多个扇区、分区或其他合适的划分中。
其他在本文所使用的,术语“虚拟盘”或“虚拟驱动器”一般是指模拟实际和物理盘存储设备(诸如光盘驱动器、软盘驱动器或硬盘驱动器)的一个或多个软件组件。对于其他程序,虚拟盘表现得像实际物理设备。虚拟盘可以被实现为包含实际存储设备的数据结构的盘镜像。根据所公开的技术的实施例,虚拟盘可以包括耦合到作为一个或多个差异盘的父代的基础高速缓存盘的一个或多个差异盘。“差异盘”是包含表示对父虚拟盘(诸如基础高速缓存盘)的改变的数据块的虚拟盘。“基础高速缓存盘”或“BCD”是其扇区仅可以被写入一次的虚拟盘。在完成到扇区的第一次写入后,基础高速缓存盘的扇区被标记为只读。相反,“基础盘”是只读的虚拟盘并且根本不能被写入。
在某些计算系统中,后拷贝迁移可以在目的地节点上启动所迁移的虚拟机之后经由预分页来实现。然而,预分页可能在所启动的虚拟机试图访问尚未被转移的数据块时降低在目的地节点上的虚拟机中正在运行的应用的性能。另外,一旦虚拟机在目的地节点上被启动并且应用运行被重启,所迁移的虚拟机的数据就可以驻存在源节点和目的地节点两者上。因此,如果所迁移的虚拟机在目的地节点上发生故障,则所迁移的虚拟机的修复可能是不可能的。
所公开的技术的若干实施例可以通过在目的地节点处实现基础高速缓存盘来使在后拷贝迁移期间对所迁移的虚拟机的数据块从源节点到目的地节点的转移流水线化。在某些实现中,在所迁移的虚拟机在目的地节点上被启动之前,基础高速缓存盘(“目的地盘”)可以被创建,其是在源节点上的虚拟机的虚拟盘(“源盘”)的父代。差异盘可以也被创建(其是基础高速缓存盘的父代),以隔离由目的地节点上的虚拟机的写入。在操作时,对于不是从差异盘或目的地盘存在或提供的所有读取,所请求的数据可以从源盘提供。所请求的数据可以然后被保存在目的地盘中,并且对应扇区可以被标记为只读。一旦转移被完成,目的地盘就可以包括来自源节点的数据块的完整只读拷贝。因此,虚拟机的后拷贝动态迁移的效率可以被改善,如下面参考图1-7更详细地描述的。
图1是根据所公开的技术的实施例的被配置用于虚拟机的有效动态迁移的分布式计算系统100的示意图。如图1所示,分布式计算系统100可以包括经由客户端设备102和计算架构104将多个用户101相互连接的计算机网络108。即使分布式计算系统100的特定组件被示出在图1中,在其他实施例中,分布式计算系统100也可以包括附加和/或不同的组成。例如,分布式计算系统100可以包括附加计算架构、网络存储设备、公共基础设施和/或其他合适的组件。
客户端设备102可以各自包括促进对应的用户101经由计算机网络108访问由计算架构104提供的云服务的计算设备。例如,在图示的实施例中,客户端设备102单独地包括台式计算机。在其他实施例中,客户端设备102可以还包括膝上型计算机、平板计算机、智能电话、或其他合适的计算设备。即使三个用户101和对应的客户端设备102出于说明目的被示出在图1中,在其他实施例中,分布式计算系统100也可以促进任何合适数目的用户101访问由计算架构104提供的计算服务。
如图1所示,计算机网络108可以包括将用户101与计算架构104的组件相互连接的一个或多个网络设备112。网络设备112的示例可以包括路由器、交换机、防火墙、负载平衡器、或其他合适的网络组件。即使特定连接方案出于说明目的被示出在图1中,在其他实施例中,网络设备112也可以以分层、扁平、“网格”或其他合适的拓扑被操作性地耦合。在一个实施例中,计算机网络108包括互联网。在其他实施例中,计算机网络108也可以包括局域网、广域网、虚拟专网、或其他合适类型的计算机网络。
还如图1所示,计算架构104可以包括镜像存储111和通过网络设备112被操作性地耦合到彼此的多个节点106。在某些实施例中,节点106可以单独地包括处理器、物理服务器、或包含若干物理服务器的刀片。在其他实施例中,节点106可以还包括虚拟服务器或若干虚拟服务器。节点106可以被组织成机架、可用性区、组、集合、计算集群、或其他合适的划分。例如,在图示的实施例中,节点106被分组成三个计算集群105(分别被单独地示出为第一、第二和第三计算集群105a-105c),其被操作性地耦合到计算机网络108中的对应的网络设备112。即使三个计算集群105出于说明目的被示出在图1中,在其他实施例中,计算架构104也可以包括具有类似或不同组件和/或配置的一个、两个、八个、十六个、或任何其他合适数目的计算集群105。
镜像存储111可以被配置为包含适合于实例化(图2A和图2B中示出的)一个或多个虚拟机或“VM”144的文件和/或盘镜像113的拷贝。例如,个体镜像113可以包括诸如
Figure BDA0002667216420000081
Figure BDA0002667216420000082
的操作系统的完整拷贝。在另一示例中,镜像113也可以包括适合于实例化虚拟机144的一个或多个用户应用、资源文件、或其他合适类型的数据。如图1所示,在另外的实施例中,镜像存储111可以还包括与执行在节点106中的一个或多个节点上的一个或多个虚拟机144或应用相对应的数据块的至少部分拷贝。即使镜像存储111在图1中被示出为单个数据库,在其他实施例中,镜像存储111也可以被实现为被托管在多个节点106上的分布式数据库。
在操作时,用户101可以通过例如使用客户端设备102经由用户端口107提交请求来请求计算架构104实例化一个或多个虚拟机144。作为响应,计算架构104可以认证用户请求并在认证后,分配合适的计算(例如,一个或多个节点106)、存储、网络、或其他合适类型的计算资源。然后计算架构104经由例如架构控制器(未示出)可以指导所分配的节点106来实例化所请求的虚拟机144。如下面参考2A-2B更详细地讨论的,节点106可以被配置为实现(图2A和图2B中示出的)一个或多个基础高速缓存盘148,以促进虚拟机144在一对节点106之间的有效后拷贝动态迁移。
图2A和图2B是图示了根据所公开的技术的实施例的图1中的分布式计算系统100的某些硬件/软件组件的示意图。在图2A和图2B中,分布式计算系统100的某些组件为了清楚性被省略。例如,仅仅两个节点106,即源节点106a和目的地节点106b,出于说明目的被示出在图2A和图2B中。在其他实施例中,分布式计算系统100可以包括任何合适数目的节点106和/或计算集群105。
另外,在图2A和图2B中以及在本文的其他附图中,个体软件组件、对象、类、模块以及例程可以是以C、C++、C#、Java和/或其他合适的编程语言被编写为源代码的计算机程序、过程或进程。组件可以包括但不限于一个或多个模块、对象、类、例程、属性、过程、线程、可执行件、库或其他组件。组件可以采用源或二进制形式。组件可以包括在编译之前的源代码的方面(例如,类、属性、过程、例程)、编译的二进制单元(例如,库、可执行件)或在运行时实例化和使用的伪影(例如,对象、进程、线程)。在某些实施例中,下面描述的各种组件和模块可以利用角色(actor)来实现。在其他实施例中,应用和/或相关服务的生成也可以使用单片应用、多层应用、或其他合适的组件来实现。
系统内的组件可以采取系统内的不同形式。作为一个示例,包括第一组件、第二组件和第三组件的系统可以包含但不限于具有作为源代码中的属性的第一组件、作为二进制编译库的第二组件以及作为在运行时创建的线程的第三组件的系统。计算机程序、过程或进程可以被编译成目标、中间或机器代码并被提出用于由个人计算机、网络服务器、膝上型计算机、智能电话和/或其他合适的计算设备的一个或多个处理器执行。同样地,组件可以包括硬件电路系统。
本领域普通技术人员将意识到硬件可以被认为是石化(fossilized)的软件,并且软件可以被认为是液化(liquefied)的硬件。仅仅作为一个示例,组件中的软件指令可以被烧到可编程逻辑阵列电路,或者可以被设计为具有合适集成电路的硬件电路。同样地,硬件可以通过软件来模拟。源、中间和/或目标代码的各种实现和相关联的数据可以被存储在包括只读存储器、随机存取存储器、磁盘存储介质、光学存储介质、闪速存储器设备和/或不包括传播信号的其他合适的计算机可读存储介质的计算机存储器中。
如图2A所示,用户101可以访问由对应的客户端设备102提供的用户端口107,以用于发送请求在分布式计算系统100中实例化虚拟机144的用户请求160。用户请求160可以包括与虚拟机144相关的名称、模板、一个或多个指定特征的列表、位置或其他合适的信息。在其他实施例中,用户101也可以经由用户端口107提供显示配置、证书、执行配置、订阅信息或其他合适的数据。在另外的实施例中,开发者、管理员、或其他合适类型的实体可以代替或除了用户101以外提供配置和/或其他合适的信息。
还如图2A所示,预置控制器109(例如,架构控制器或其组件)可以被配置为接收用户请求160、基于用户请求160中所包括的信息来标识用户请求160作为针对虚拟机144的请求、并且分配例如源节点106a用于实例化所请求的虚拟机144(在图2A中被示出为“源虚拟机144a”)。随后,分布式计算系统100的预置控制器109或其他合适的组件可以指导所分配的源节点106a初始化用于提供所请求的源虚拟机144a的实例化过程。作为响应,源节点106a可以实例化源虚拟机144a以供用户101使用。
随后,分布式计算系统100中的预置控制器109或其他合适的组件可以被配置为确定源虚拟机144a由于工作负载平衡、服务器硬件/软件故障、系统维护或其他合适的原因而要被迁移到目的地节点106b。作为响应,预置控制器109可以向源节点106a和目的地节点106b两者发出命令162和162’,以发起对源虚拟机144a从源节点106a到目的地节点106b的后拷贝动态迁移。作为响应,源节点106a可以挂起源虚拟机144a并将源虚拟机144a的执行状态(例如,CPU状态、寄存器、不可分页存储器等)的最小子集转移到目的地节点106b。然后目的地节点106b可以利用从源节点106a接收的执行状态的子集来实例化目的地虚拟机144b。一旦被启动,目的地虚拟机144b就可以在源虚拟机144a的数据块的完整拷贝被转移到目的地节点106b之前重启针对用户101的一个或多个应用(未示出)的执行。被配置为促进对虚拟机144的有效后拷贝动态迁移的源节点106a和目的地节点106b的组件在下面更详细地描述。
如图2A所示,源节点106a和目的地节点106b可以各自包括用于管理源节点106a和目的地节点106b上的虚拟盘的操作的接口组件133和控制组件135。接口组件133可以被配置为接收命令162和162’、分析命令162和162’的内容、并将分析的结果转发到控制组件135。例如,接口组件133可以向控制组件135指示与和源虚拟机144a和目的地虚拟机144b相关联的虚拟盘145相关的类型(例如,差异、基础、基础高速缓存等)、大小(例如,固定或动态)或其他合适信息。继而,控制组件135可以配置并促进虚拟盘145的操作,诸如下面参考3A-4C描述的那些,如由接口组件133所指示的。在图示的示例中,具有对应虚拟盘145的一个虚拟机144出于说明目的被示出在单个节点106上。在其他示例中,每个节点106可以支持具有对应虚拟盘145的一个、三个、四个或任何合适数目的虚拟机144。
如图2A所示,源虚拟机144a可以与源虚拟盘147相关联。在某些实施例中,源虚拟盘147可以包括具有一个或多个差异盘(未示出)的基础盘。在其他实施例中,源虚拟盘147可以包括具有固定或动态大小的一个或多个其他合适类型的虚拟盘。如图2A所示,源虚拟盘147可以包含(图3A中示出的)数据块115,其表示与源虚拟机144a相对应的数据块和其他合适类型的数据。在其他实施例中,数据块115的至少一部分可以被存储在例如中央镜像存储111(图1)中(如图2B所示),或被存储在分布式计算系统100中的其他合适的位置中。
还如图2A所示,目的地虚拟机144b可以与虚拟盘145相关联,虚拟盘145包括耦合到基础高速缓存盘148的差异盘146。基础高速缓存盘148因此是差异盘146的父代,如由箭头130所指示的。根据所公开的技术的实施例,控制组件135还可以配置源虚拟盘147中的数据块115作为基础高速缓存盘148的父代,如由箭头130’所指示的。因此,包含于源虚拟盘147中的任何数据块115可以充当针对目的地节点106b上的基础高速缓存盘148的基础盘。基础高速缓存盘148可以被配置为以按需方式从源虚拟盘147取回虚拟机144a的数据块115,并且因此使后拷贝动态迁移过程流水线化。源虚拟盘147、基础高速缓存盘148和差异盘146的操作的细节在下面参考图3A-3G更详细地描述。
即使图2A将该源虚拟机144a图示为包含源节点106a上的源虚拟机144a的数据块115的完整拷贝,在其他实施例中,数据块115的至少一部分也可以位于例如镜像存储111处,如图2B所示。源节点106a上的虚拟盘145可以被实现为作为镜像存储111中的数据块115的子代的源差异盘149。因此,数据块115是源差异盘149的父代,如由箭头130”所指示的,而源差异盘149是目的地节点106b上的基础高速缓存盘148的父代,如由箭头130’所指示的。源差异盘149和基础高速缓存盘148的操作的细节在下面参考图4A-4C更详细地描述。
图3A-3G是图示了根据所公开的技术的实施例的利用基础高速缓存盘148用于促进源虚拟机144a(图2A)从图2A中示出的分布式计算系统100中的源节点106a到目的地节点106b的后拷贝动态迁移的各种操作阶段的示意图。如图3A所示,源节点106a的源盘147可以包括源虚拟机144a的数据块115的拷贝。在图示的示例中,被标识为块A-I的九个数据块115出于说明目的被示出。在其他实施例中,数据块115可以包括任何合适数目的块,或者可以被划分成数据块或其他合适的划分。
还如图3A所示,基础高速缓存盘148可以最初是空的,因为数据块115还没有从源节点106a被拷贝,即使目的地虚拟机144b已经被实例化并启动。然而,目的地节点106b上的差异盘146可以包含对目的地虚拟机144b唯一的某些数据块117,例如在发起之后由目的地虚拟机144b写入差异盘146的数据块。这样的数据块117可以表示基础高速缓存盘148和目的地虚拟机144b上的对应数据之间的差异。
如图3A所示,在初始操作期间,目的地节点106b上的目的地虚拟机144b可以确定某些数据块115现在被需要用于执行针对在目的地虚拟机144b中执行的应用(未示出)或其他合适的软件组件的指令。在图示的示例中,块A、D和H根据需要被指示出。因此,目的地虚拟机144b请求控制组件135(图2A)提供来自块A、D和H的数据。控制组件135可以然后确定差异盘146是否包含这样的数据。响应于确定差异盘146不包含这样的数据,控制组件135可以确定目的地节点106b上的基础高速缓存盘148是否包含这样的数据。如图3A所示,基础高速缓存盘148也不包含所请求的数据。作为响应,控制组件135可以访问基础高速缓存盘148的父代,即,源盘147上的数据块115以用于取回块A、D和H而无需下载整个数据块115。
如图3B所示,一旦接收到来自块A、D和H的数据,控制组件135可以使所接收的数据被写入到基础高速缓存盘148中的对应扇区中,并且在完成写入后,将对应于块A、D和H的扇区标记为只读。控制组件135可以然后经由差异盘146向目的地虚拟机144b提供从基础高速缓存盘148所接收的数据的拷贝。随后,目的地虚拟机144b可以确定来自块B的数据现在被需要用于执行。如图3C所示,控制组件135可以确定差异盘146是否包含这样的数据。如图3D所示,响应于确定差异盘146包含这样的数据,控制组件135将块B的数据从差异盘146提供到目的地虚拟机144b。
随着目的地虚拟机144b从虚拟机144a的数据块115或经由在目的地节点106b处的后台处理请求越来越多的附加数据,剩余数据块115可以被写入基础高速缓存盘148的对应扇区中并被标记为只读。如图3E所示,在某些实施例中,一旦数据块115的完整拷贝已经被写入基础高速缓存盘148中,控制组件135就可以在源盘147处移除作为基础高速缓存盘148的父代的数据块115。针对数据块115(例如,针对目的地虚拟机144b)的随后请求可以从基础高速缓存盘148提供而无需访问源盘147,如图3F所示。因此,源虚拟机144a的数据块115的完整拷贝可以在源虚拟机144a的动态迁移期间被维持在目的地节点106b上。同时,对数据块115的改变由差异盘146捕获。因此,当目的地虚拟机144b经历错误或其他合适类型的故障时,目的地节点106b(例如,经由管理程序)可以容易地通过基于基础高速缓存盘148中的数据块115的完整拷贝和差异盘146中的数据块117来实例化并启动另一目的地虚拟机144b来修复这样的错误。
可选地,在某些实施例中,基础高速缓存盘148和差异盘146可以被合并成目的地盘150,如图3G所示。这样的合并可以基于经过的时间或其他合适的准则。在其他实施例中,基础高速缓存盘148与差异盘146的合并可以被省略。
图4A-4C是图示了根据所公开的技术的实施例的利用基础高速缓存盘148用于促进图2B中示出的分布式计算系统100中的虚拟机144的动态迁移的各种操作阶段的示意图。即使仅源节点106a和目的地节点106b被示出在图4A-4C中,但是在其他实施例中,类似的操作可以针对任何合适数目的节点106被实现(图1)。
如图4A所示,目的地节点106b上的目的地虚拟机144b可以在动态迁移过程的初始阶段期间请求某些数据块115。例如,如图4A所示,目的地虚拟机144b出于说明目的请求块A、E和I。类似于图3A和图3B的操作,响应于确定差异盘146不包含所请求的数据,控制组件(图2B)可以确定目的地节点106b处的基础高速缓存盘148是否包含这样的数据。
响应于确定基础高速缓存盘148b不包含这样的数据,在某些实施例中,控制组件135可以确定作为基础高速缓存盘148的父代的源差异盘149是否包含这样的数据。响应于确定源差异盘149包含这样的数据,例如,数据块B,控制组件135从源差异盘149取回需要的数据的拷贝并将所取回的数据存储在基础高速缓存盘148中。响应于确定源差异盘149不包含这样的数据,控制组件135可以从镜像存储111中的数据块115请求需要的数据的拷贝。
如图4B所示,镜像存储111可以提供所请求的要被存储在对应扇区中的数据块115到基础高速缓存盘148的拷贝。写入扇区然后被标记为只读。基础高速缓存盘148可以然后使所请求的数据块115到目的地虚拟机144b的拷贝可获得。例如,如图4B所示,基础高速缓存盘148可以从镜像存储111取回或拉出块A、D和H。基础高速缓存盘148可以在将数据提供到目的地虚拟机144b用于处理之前将所接收的数据库115存储在对应扇区中并将这些扇区标记为只读。
如图4C所示,随着更多数据块115从源差异盘149和/或镜像存储111或经由后台处理被请求,基础高速缓存盘148可以最终包含数据块115的完整拷贝和/或源差异盘149中数据块117。在确定基础高速缓存盘148包含数据块115的完整拷贝后,源差异盘149可以作为父代从基础高速缓存盘148被移除。来自目的地虚拟机144b的随后数据请求可以从基础高速缓存盘148和/或差异盘146提供而无需访问源差异盘149或镜像存储111。
图5和图6是图示了根据所公开的技术的实施例的与分布式计算系统中的虚拟机的动态迁移相关的过程的流程图。尽管图5和图6中图示的过程关于图1-4C的分布式计算系统100进行描述,但是在其他实施例中,过程可以被实现在具有附加和/或不同组件的计算系统中。
如图5所示,用于虚拟机的动态迁移的过程200可以包括在阶段202处接收针对源虚拟机的一个或多个数据块的请求,该源虚拟机要从源节点被迁移到目的地节点作为目的地虚拟机。过程200可以然后包括决策阶段204以确定所请求的数据块是否存在于与目的地虚拟机相关联的差异盘上。这样的确定可以基于差异盘的文件映射或其他合适的元数据。响应于确定差异盘包含数据块,过程200可以包括将数据块从差异盘提供到目的地虚拟机。
响应于确定差异盘不包含数据块,过程200可以包括另一决策阶段208以确定作为差异盘的父代的基础高速缓存盘是否包含这样的数据块。响应于确定基础高速缓存盘包含数据块,过程200可以包括在阶段206处提供来自基础高速缓存盘的数据块。响应于确定基础高速缓存盘不包含数据块,过程200可以在阶段210处从源盘取回数据块,源盘包含源节点上的源虚拟机的所请求的数据块的拷贝。这样的取回可以包括查询数据库、请求数据块的拷贝、接收所请求的数据块、和/或其他合适的操作。过程200可以然后包括在阶段212处在返回到在阶段206处提供数据块之前将所接收的数据块存储在对应扇区中的基础高速缓存盘中并且其后将这样的扇区标记为只读。
图6图示了管理基础高速缓存盘(诸如图3A-3G中示出的那些)的过程220。例如,如图6所示,过程220可以包括在阶段222处确定基础高速缓存盘上的源虚拟机的数据块的拷贝的完整度。基础高速缓存盘是由源虚拟机利用的源盘的子代,该源虚拟机要从源节点被动态迁移到目的地节点作为与基础高速缓存盘对应的目的地虚拟机。过程220可以然后包括确定基础高速缓存盘上的源虚拟机的数据块的拷贝是否完整的决策阶段。响应于确定基础高速缓存盘上的源虚拟机的数据块的拷贝是完整的,过程220可以包括在阶段226处移除作为基础高速缓存盘的父代的源虚拟机的源盘。可选地,过程220也可以包括在阶段230处将基础高速缓存盘与和目的地虚拟机相关联的差异盘合并。否则,过程220可以包括在阶段228处按需或经由后台处理从源盘取回附加数据块。过程220可以然后在返回到在阶段222处确定基础高速缓存盘上的数据块的完整度之前,在阶段232处将所取回的数据块存储在对应扇区中的基础高速缓存盘中并在其后将这样的扇区标记为只读。
图7是适合于图1中的分布式计算系统100的某些部件的计算设备300。例如,计算设备300可以适合于图1的节点106或图2A和2B的预置控制器109。在非常基本的配置302中,计算设备300可以包括一个或多个处理器304和系统存储器306。存储器总线308可以用于在处理器304与系统存储器306之间的通信。
取决于期望的配置,处理器304可以是任何类型的,包括但不限于微处理器(μP)、微控制器(μC)、数字信号处理器(DSP)、或其任何组合。处理器304可以包括一级多级高速缓存,诸如一级高速缓存310和二级高速缓存312,处理器核314以及寄存器316。示例处理器核314可以包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核(DSP核)、或其任何组合。示例存储器控制器318可以还与处理器304一起使用,或者在一些实现中,存储器控制器318可以是处理器304的内部部分。
取决于期望的配置,系统存储器306可以是任何类型的,包括但不限于易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或其任何组合。系统存储器306可以包括操作系统320、一个或多个应用322、以及程序数据324。所描述的基本配置302通过内虚线内的那些组件在图4中被图示。
计算设备300可以具有附加特征或功能,以及附加接口,以促进在基本配置302与任何其他设备和接口之间的通信。例如,总线/接口控制器330可以用于经由存储接口总线334促进在基本配置302与一个或多个数据存储设备332之间的通信。数据存储设备332可以是可移除存储设备336、不可移除存储设备338、或其组合。可移除存储设备和不可移除存储设备的示例包括磁盘设备,诸如柔性盘驱动器和硬盘驱动器(HDD),光盘驱动器,仅举几例,诸如紧凑盘(CD)驱动器或数字多用盘(DVD)驱动器、固态驱动器(SSD)以及磁带驱动器。示例计算机存储介质可以包括以任何方法或技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的易失性介质和非易失性介质、可移动介质和不可移动介质。术语“计算机可读存储介质”或“计算机可读存储设备”不包括传播信号或其他类型的信号和通信介质。
系统存储器306、可移除存储设备336以及不可移除存储设备338是计算机可读存储介质的示例。计算机可读存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多用盘(DVD)或其他光学盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁性存储设备、或者能够被用于存储期望信息并且能够由计算设备300访问的任何其他介质。任何这样的计算机可读存储介质可以是计算设备300的部分。术语“计算机可读存储介质”不包括传播信号和通信介质。
计算设备300可以还包括用于经由总线/接口控制器330促进从各种接口设备(例如,输出设备342、外围接口344以及通信设备346)到基本配置302的通信的接口总线340。示例输出设备342包括图形处理单元348和音频处理单元350,其可以被配置为经由一个或多个A/V端口352通信到各种外部设备,诸如显示器或扬声器。示例外围接口344包括串行接口控制器354或并行接口控制器356,其可以被配置为经由一个或多个I/O端口358与诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备等)或其他外围设备(例如,打印机、扫描仪等)的外部设备通信。示例通信设备346包括网络控制器360,其可以被布置为经由一个或多个通信端口364促进通过网络通信链接与一个或多个其他计算设备362的通信。
网络通信链接可以是通信介质的一个示例。通信介质通常可以由计算机可读介质、数据结构、程序模块或诸如载波或其他传输介质的经调制的数据信号中的其他数据体现并且包括任何信息递送介质。“经调制的数据信号”可以是具有以使得在信号中编码信息的方式设置或改变的其特性中的一个或多个的信号。通过举例而非限制的方式,通信介质可以包括诸如有线网络或直接有线连接的有线介质和诸如声学、射频(RF)、微波、红外(IR)和其他无线介质的无线介质。如本文所使用的术语计算机可读介质可以包括存储介质和通信介质两者。
计算设备300可以被实现为诸如蜂窝电话、个人数字助理(PDA)、个人媒体播放器设备、无线网络手表设备、个人头戴式设备、专用设备、或包括以上功能中的任何的混合设备的小外形便携式(或移动)电子设备的部分。计算设备300可以还被实现为包括膝上型计算机和非膝上型计算机配置两者的个人计算机。
从前文,将认识到本公开的具体实施例已经在本文出于说明的目的而被描述,但是各种修改可以在不偏离本公开的情况下被做出。另外,一个实施例的元件中的许多元件可以作为对其他实施例的元件的附加或代替其他实施例的元件与其他实施例组合。因此,本技术仅受随附权利要求限制。

Claims (10)

1.一种分布式计算系统中虚拟机在经由计算机网络相互连接的节点上的动态迁移的方法,所述方法包括:
在第一节点上挂起源虚拟机,在被挂起后,所述源虚拟机具有被包含于所述第一节点上的源虚拟盘中的多个数据块;
在第二节点上实例化并启动目的地虚拟机;
在所述第二节点处接收来自所启动的所述目的地虚拟机的请求,所述请求针对所述源虚拟机的所述多个数据块中的一个数据块;以及
响应于接收到来自所启动的所述目的地虚拟机的所述请求,
经由所述计算机网络,从所述第一节点的所述源虚拟盘取回所请求的所述数据块,所述源虚拟盘是所启动的所述目的地虚拟机的基础高速缓存盘的父代;
将所取回的数据块写入到所述基础高速缓存盘的一个或多个空扇区;
在完成写入所述所取回的数据块后,将包含所写入的数据块的一个或多个扇区在所述基础高速缓存盘上标记为只读;以及
从所述基础高速缓存盘向所述目的地虚拟机提供所述所取回的数据块的拷贝,由此使能所述目的地虚拟机的操作而无需等待取回所述源虚拟机的其他数据块。
2.根据权利要求1所述的方法,其中所述目的地虚拟机包括虚拟盘,所述虚拟盘具有作为父代的所述基础高速缓存盘和作为所述基础高速缓存盘的子代的差异盘,并且其中所述方法还包括:
响应于接收到针对所述数据块的所述请求,
确定所述所请求的数据块在所述差异盘处是否可获得;以及
响应于确定所述所请求的数据块在所述差异盘处不可获得,确定所述第二节点上的所述基础高速缓存盘是否包含所述所请求的数据块;以及
响应于确定所述基础高速缓存盘不包含所述所请求的数据块,执行取回、写入和标记操作。
3.根据权利要求1所述的方法,其中所述目的地虚拟机包括虚拟盘,所述虚拟盘具有作为父代的所述基础高速缓存盘和作为所述基础高速缓存盘的子代的差异盘,并且其中所述方法还包括:
响应于接收到针对数据块的所述请求,
确定所述所请求的数据块在所述差异盘处是否可获得;以及
响应于确定所述所请求的数据块在所述差异盘处可获得,响应于所接收的所述请求而从所述差异盘提供所述数据块。
4.根据权利要求1所述的方法,其中所述目的地虚拟机包括虚拟盘,所述虚拟盘具有作为父代的所述基础高速缓存盘和作为所述基础高速缓存盘的子代的差异盘,并且其中所述方法还包括:
响应于接收到针对数据块的所述请求,
确定所述所请求的数据块在所述差异盘处是否可获得;
响应于确定所述所请求的数据块在所述差异盘处不可获得,确定所述第二节点上的所述基础高速缓存盘是否包含所述所请求的数据块;以及
响应于确定所述基础高速缓存盘包含所述所请求的数据块,响应于所接收的所述请求而从所述基础高速缓存盘提供所述数据块,而无需从所述第一节点的所述源虚拟盘取回所述数据块。
5.根据权利要求1所述的方法,其中所述目的地虚拟机包括虚拟盘,所述虚拟盘具有作为父代的所述基础高速缓存盘和作为所述基础高速缓存盘的子代的差异盘,并且其中所述基础高速缓存盘是所述源虚拟盘的子代,并且其中所述方法还包括:
经由在所述第二节点上的后台处理,重复针对附加数据块的取回、写入和标记操作;
确定所述基础高速缓存盘是否包含与所述源虚拟机对应的所述多个数据块的完整拷贝;以及
响应于确定所述基础高速缓存盘包含与所述源虚拟机对应的所述多个数据块的完整拷贝,移除所述第一节点上的所述源虚拟盘,所述源虚拟盘作为所述第二节点上的所述基础高速缓存盘的父代。
6.根据权利要求1所述的方法,其中所述目的地虚拟机包括虚拟盘,所述虚拟盘具有作为父代的所述基础高速缓存盘和作为所述基础高速缓存盘的子代的差异盘,并且其中所述基础高速缓存盘是所述源虚拟盘的子代,并且其中所述方法还包括:
确定所述基础高速缓存盘是否包含与所述源虚拟机对应的所述多个数据块的完整拷贝;
响应于确定所述基础高速缓存盘包含与所述源虚拟机对应的所述多个数据块的完整拷贝,移除所述第一节点上的所述源虚拟盘,所述源虚拟盘作为所述第二节点上的所述基础高速缓存盘的父代;以及
响应于针对数据块的附加请求而从所述基础高速缓存盘提供所述数据块。
7.根据权利要求1所述的方法,其中所述目的地虚拟机包括虚拟盘,所述虚拟盘具有作为父代的所述基础高速缓存盘和作为所述基础高速缓存盘的子代的差异盘,并且其中所述基础高速缓存盘是所述源虚拟盘的子代,并且其中所述方法还包括:
确定所述基础高速缓存盘是否包含与所述源虚拟机对应的所述多个数据块的完整拷贝;以及
响应于确定所述基础高速缓存盘包含与所述源虚拟机对应的所述多个数据块的完整拷贝,
移除所述第一节点上的所述源虚拟盘,所述源虚拟盘作为所述第二节点上的所述基础高速缓存盘的父代;以及
将被包含于所述基础高速缓存盘中的所述数据块与被包含于所述差异盘中的数据合并到目的地虚拟盘中。
8.根据权利要求1所述的方法,其中所述源虚拟盘包括源差异盘,所述源差异盘是所述分布式计算系统中的镜像存储中的数据块的镜像的子代,并且其中取回所述所请求的数据块包括:
确定所述源差异盘是否包含所述所请求的数据块;以及
响应于确定所述源差异盘包含所述所请求的数据块,经由所述计算机网络,从所述源差异盘向所述基础高速缓存盘提供所述所请求的数据块。
9.根据权利要求1所述的方法,其中所述源虚拟盘包括源差异盘,所述源差异盘是所述分布式计算系统中的镜像存储中的数据块的镜像的子代,并且其中取回所述所请求的数据块包括:
确定所述源差异盘是否包含所述所请求的数据块;以及
响应于确定所述源差异盘不包含所述所请求的数据块,
从所述镜像存储取回所述所请求的数据块;以及
经由所述源差异盘,从所述镜像存储向所述基础高速缓存盘提供所述所取回的数据块。
10.一种经由计算机网络在分布式计算系统中与附加计算设备相互连接的计算设备,所述计算设备包括:
处理器;以及
存储器,包含能够由所述处理器执行以使所述计算设备执行根据权利要求1-9中的一项所述的方法的指令。
CN201980017423.5A 2018-03-07 2019-02-28 分布式计算系统中的虚拟机的动态迁移 Pending CN111819545A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/914,204 US10664323B2 (en) 2018-03-07 2018-03-07 Live migration of virtual machines in distributed computing systems
US15/914,204 2018-03-07
PCT/US2019/019922 WO2019173098A1 (en) 2018-03-07 2019-02-28 Live migration of virtual machines in distributed computing systems

Publications (1)

Publication Number Publication Date
CN111819545A true CN111819545A (zh) 2020-10-23

Family

ID=65818602

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980017423.5A Pending CN111819545A (zh) 2018-03-07 2019-02-28 分布式计算系统中的虚拟机的动态迁移

Country Status (5)

Country Link
US (1) US10664323B2 (zh)
EP (1) EP3762826B1 (zh)
CN (1) CN111819545A (zh)
ES (1) ES2923223T3 (zh)
WO (1) WO2019173098A1 (zh)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11947489B2 (en) 2017-09-05 2024-04-02 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US10846001B2 (en) 2017-11-08 2020-11-24 Robin Systems, Inc. Allocating storage requirements in a distributed storage system
US10782887B2 (en) 2017-11-08 2020-09-22 Robin Systems, Inc. Window-based prority tagging of IOPs in a distributed storage system
US10430227B2 (en) 2018-01-09 2019-10-01 Microsoft Technology Licensing, Llc Fast instantiation of virtual machines in distributed computing systems
US11099937B2 (en) 2018-01-11 2021-08-24 Robin Systems, Inc. Implementing clone snapshots in a distributed storage system
US11748203B2 (en) 2018-01-11 2023-09-05 Robin Systems, Inc. Multi-role application orchestration in a distributed storage system
US11392363B2 (en) 2018-01-11 2022-07-19 Robin Systems, Inc. Implementing application entrypoints with containers of a bundled application
US10896102B2 (en) 2018-01-11 2021-01-19 Robin Systems, Inc. Implementing secure communication in a distributed computing system
US11582168B2 (en) 2018-01-11 2023-02-14 Robin Systems, Inc. Fenced clone applications
US10845997B2 (en) 2018-01-12 2020-11-24 Robin Systems, Inc. Job manager for deploying a bundled application
US10846137B2 (en) 2018-01-12 2020-11-24 Robin Systems, Inc. Dynamic adjustment of application resources in a distributed computing system
US20200034475A1 (en) * 2018-07-30 2020-01-30 Robin Systems, Inc. Relocation Of A Primary Copy Of A Replicated Volume
US11023328B2 (en) 2018-07-30 2021-06-01 Robin Systems, Inc. Redo log for append only storage scheme
US10976938B2 (en) 2018-07-30 2021-04-13 Robin Systems, Inc. Block map cache
US10817380B2 (en) 2018-07-31 2020-10-27 Robin Systems, Inc. Implementing affinity and anti-affinity constraints in a bundled application
US11036439B2 (en) 2018-10-22 2021-06-15 Robin Systems, Inc. Automated management of bundled applications
US10908848B2 (en) 2018-10-22 2021-02-02 Robin Systems, Inc. Automated management of bundled applications
US10819589B2 (en) * 2018-10-24 2020-10-27 Cognizant Technology Solutions India Pvt. Ltd. System and a method for optimized server-less service virtualization
JP7197783B2 (ja) * 2019-01-11 2022-12-28 富士通株式会社 情報処理システム、管理装置および管理プログラム
US11086725B2 (en) 2019-03-25 2021-08-10 Robin Systems, Inc. Orchestration of heterogeneous multi-role applications
US11256434B2 (en) 2019-04-17 2022-02-22 Robin Systems, Inc. Data de-duplication
US10831387B1 (en) 2019-05-02 2020-11-10 Robin Systems, Inc. Snapshot reservations in a distributed storage system
US10877684B2 (en) 2019-05-15 2020-12-29 Robin Systems, Inc. Changing a distributed storage volume from non-replicated to replicated
US11226847B2 (en) 2019-08-29 2022-01-18 Robin Systems, Inc. Implementing an application manifest in a node-specific manner using an intent-based orchestrator
US11249851B2 (en) 2019-09-05 2022-02-15 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US11520650B2 (en) 2019-09-05 2022-12-06 Robin Systems, Inc. Performing root cause analysis in a multi-role application
US11113158B2 (en) 2019-10-04 2021-09-07 Robin Systems, Inc. Rolling back kubernetes applications
US11347684B2 (en) 2019-10-04 2022-05-31 Robin Systems, Inc. Rolling back KUBERNETES applications including custom resources
US11403188B2 (en) 2019-12-04 2022-08-02 Robin Systems, Inc. Operation-level consistency points and rollback
US11507433B2 (en) * 2019-12-18 2022-11-22 Hewlett Packard Enterprise Development Lp Infrastructure load balancing using software-defined networking controllers
US11281390B2 (en) * 2020-03-13 2022-03-22 EMC IP Holding Company LLC Techniques for data migration
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
US11108638B1 (en) 2020-06-08 2021-08-31 Robin Systems, Inc. Health monitoring of automatically deployed and managed network pipelines
US11528186B2 (en) 2020-06-16 2022-12-13 Robin Systems, Inc. Automated initialization of bare metal servers
WO2022040082A1 (en) * 2020-08-17 2022-02-24 Exotanium, Inc. Methods and systems for instantiating and transparently migrating executing containerized processes
US11740980B2 (en) 2020-09-22 2023-08-29 Robin Systems, Inc. Managing snapshot metadata following backup
US11743188B2 (en) 2020-10-01 2023-08-29 Robin Systems, Inc. Check-in monitoring for workflows
US11271895B1 (en) 2020-10-07 2022-03-08 Robin Systems, Inc. Implementing advanced networking capabilities using helm charts
US11456914B2 (en) 2020-10-07 2022-09-27 Robin Systems, Inc. Implementing affinity and anti-affinity with KUBERNETES
US11750451B2 (en) 2020-11-04 2023-09-05 Robin Systems, Inc. Batch manager for complex workflows
US11556361B2 (en) 2020-12-09 2023-01-17 Robin Systems, Inc. Monitoring and managing of complex multi-role applications
US11509598B1 (en) * 2021-11-19 2022-11-22 Microsoft Technology Licensing, Llc Dynamically re-allocating computing resources while maintaining network connection(s)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110320556A1 (en) * 2010-06-29 2011-12-29 Microsoft Corporation Techniques For Migrating A Virtual Machine Using Shared Storage
CN102741820A (zh) * 2010-02-08 2012-10-17 微软公司 虚拟存储器的后台迁移
CN103095834A (zh) * 2013-01-16 2013-05-08 中国科学院计算技术研究所 一种跨虚拟化数据中心的虚拟机在线迁移方法
US20150378766A1 (en) * 2014-06-28 2015-12-31 Vmware, Inc. Live migration of virtual machines with memory state sharing
US20160350010A1 (en) * 2015-05-31 2016-12-01 Vmware, Inc. Providing block size compatibility with a storage filter

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010522370A (ja) 2007-03-20 2010-07-01 サンギュ イ 移動型仮想マシンイメージ
US8208637B2 (en) * 2007-12-17 2012-06-26 Microsoft Corporation Migration of computer secrets
CA2713876C (en) 2008-02-26 2014-11-04 Vmware, Inc. Extending server-based desktop virtual machine architecture to client machines
US8352608B1 (en) 2008-09-23 2013-01-08 Gogrid, LLC System and method for automated configuration of hosting resources
US9529636B2 (en) 2009-03-26 2016-12-27 Microsoft Technology Licensing, Llc System and method for adjusting guest memory allocation based on memory pressure in virtual NUMA nodes of a virtual machine
US9535767B2 (en) 2009-03-26 2017-01-03 Microsoft Technology Licensing, Llc Instantiating a virtual machine with a virtual non-uniform memory architecture
JP5446040B2 (ja) * 2009-09-28 2014-03-19 日本電気株式会社 コンピュータシステム、及び仮想マシンのマイグレーション方法
US8490092B2 (en) * 2011-07-06 2013-07-16 Microsoft Corporation Combined live migration and storage migration using file shares and mirroring
JP5720483B2 (ja) * 2011-08-11 2015-05-20 富士通株式会社 移行プログラム、移行装置、および移行方法
JP5940159B2 (ja) 2011-09-30 2016-06-29 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 非トラステッド・ユーザ端末にオペレーティング・システム・イメージをプロビジョニングするための方法、コンピュータ・プログラム、デバイス、装置
US20140359213A1 (en) 2013-05-31 2014-12-04 Microsoft Corporation Differencing disk improved deployment of virtual machines
US20150058520A1 (en) 2013-08-22 2015-02-26 International Business Machines Corporation Detection of hot pages for partition migration
EP3222001B1 (en) 2014-11-21 2020-08-26 Huawei Technologies Co., Ltd. System and method for modifying a service-specific data plane configuration
US9921866B2 (en) 2014-12-22 2018-03-20 Intel Corporation CPU overprovisioning and cloud compute workload scheduling mechanism
US10430227B2 (en) 2018-01-09 2019-10-01 Microsoft Technology Licensing, Llc Fast instantiation of virtual machines in distributed computing systems

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102741820A (zh) * 2010-02-08 2012-10-17 微软公司 虚拟存储器的后台迁移
US20110320556A1 (en) * 2010-06-29 2011-12-29 Microsoft Corporation Techniques For Migrating A Virtual Machine Using Shared Storage
CN103095834A (zh) * 2013-01-16 2013-05-08 中国科学院计算技术研究所 一种跨虚拟化数据中心的虚拟机在线迁移方法
US20150378766A1 (en) * 2014-06-28 2015-12-31 Vmware, Inc. Live migration of virtual machines with memory state sharing
US20160350010A1 (en) * 2015-05-31 2016-12-01 Vmware, Inc. Providing block size compatibility with a storage filter

Also Published As

Publication number Publication date
ES2923223T3 (es) 2022-09-26
EP3762826A1 (en) 2021-01-13
US10664323B2 (en) 2020-05-26
US20190278624A1 (en) 2019-09-12
WO2019173098A1 (en) 2019-09-12
EP3762826B1 (en) 2022-06-15

Similar Documents

Publication Publication Date Title
EP3762826B1 (en) Live migration of virtual machines in distributed computing systems
US8498997B2 (en) Server image migration
US11163728B2 (en) Sharing container images utilizing a shared storage system
US11562091B2 (en) Low latency access to physical storage locations by implementing multiple levels of metadata
US11573816B1 (en) Prefetching and managing container images using cluster manifest
US10445122B2 (en) Effective and efficient virtual machine template management for cloud environments
US10909102B2 (en) Systems and methods for performing scalable Log-Structured Merge (LSM) tree compaction using sharding
US11487591B1 (en) Automatically configuring execution of a containerized application
US11231953B2 (en) Minimizing downtime when importing virtual machines from other platforms
US10802865B2 (en) Fast instantiation of virtual machines in distributed computing systems
US20110060884A1 (en) Systems and methods for collapsing a derivative version of a primary storage volume
US10606625B1 (en) Hot growing a cloud hosted block device
US20230115261A1 (en) Migrating stateful workloads between container clusters with different storage backends
US20230289207A1 (en) Techniques for Concurrently Supporting Virtual NUMA and CPU/Memory Hot-Add in a Virtual Machine
US20230132493A1 (en) Importing workload data into a sharded virtual disk
US20200026875A1 (en) Protected health information in distributed computing systems
US10831520B2 (en) Object to object communication between hypervisor and virtual machines
US11314700B1 (en) Non-native transactional support for distributed computing environments
US11892418B1 (en) Container image inspection and optimization
US11416279B2 (en) Disks in a virtualized computing environment that are backed by remote storage
US20240184612A1 (en) Virtual machine live migration with direct-attached non-volatile memory express device
US10776148B1 (en) System and method for utilizing computational power of a server farm
US20240143415A1 (en) Automatic graphics processing unit selection
US20230176889A1 (en) Update of virtual machines using clones
Li et al. VirtMan: design and implementation of a fast booting system for homogeneous virtual machines in iVCE

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