CN106708603A - 虚拟机快速恢复方法及装置 - Google Patents
虚拟机快速恢复方法及装置 Download PDFInfo
- Publication number
- CN106708603A CN106708603A CN201611240016.5A CN201611240016A CN106708603A CN 106708603 A CN106708603 A CN 106708603A CN 201611240016 A CN201611240016 A CN 201611240016A CN 106708603 A CN106708603 A CN 106708603A
- Authority
- CN
- China
- Prior art keywords
- host
- backup
- read
- modules
- virtual machine
- 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.)
- Granted
Links
- 238000011084 recovery Methods 0.000 title claims abstract description 42
- 238000000034 method Methods 0.000 title claims abstract description 32
- 230000004913 activation Effects 0.000 claims description 30
- 230000001360 synchronised effect Effects 0.000 claims description 25
- 238000013500 data storage Methods 0.000 claims description 24
- 230000001143 conditioned effect Effects 0.000 claims description 11
- 230000001934 delay Effects 0.000 claims description 11
- 230000003139 buffering effect Effects 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 10
- 108010001267 Protein Subunits Proteins 0.000 claims description 4
- 230000005012 migration Effects 0.000 description 7
- 238000013508 migration Methods 0.000 description 7
- 230000003111 delayed effect Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000006641 stabilisation Effects 0.000 description 4
- 238000011105 stabilization Methods 0.000 description 4
- 238000000151 deposition Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000011897 real-time detection Methods 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1482—Generic software techniques for error detection or fault masking by means of middleware or OS functionality
- G06F11/1484—Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2028—Failover techniques eliminating a faulty processor or activating a spare
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2041—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with more than one idle spare processing component
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
- G06F11/1662—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network 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)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Retry When Errors Occur (AREA)
Abstract
本发明公开了一种虚拟机快速恢复方法及装置。该虚拟机快速恢复方法包括:将第一宿主机和第二宿主机结成存储peer对,使第一宿主机的虚拟机上的读写请求在第二宿主机备份;当第一宿主机宕机时,备份宿主机启动第一宿主机的虚拟机;备份宿主机上启动的虚拟机接收调用方发送的读写请求,并判断是否完成第二宿主机到备份宿主机的全量数据同步;若否,则将读写请求发送给第二宿主机;第二宿主机基于写请求将待写入数据存储在第二宿主机上,或者基于读请求获取指定数据并将指定数据发送给备份宿主机;备份宿主机将指定数据发送给调用方。
Description
技术领域
本发明涉及计算机虚拟化技术领域,尤其涉及一种虚拟机快速恢复方法及装置。
背景技术
虚拟化技术已经成为IaaS层(Infrastructure as a Service,即基础设施即服务)的重要职能之一。虚拟化技术通过虚拟机监控器VMM(Virtual Machine Monitor)软件对物理机的CPU、内存、I/O等设备进行虚拟化,在一台物理机中虚拟出多个虚拟机VM(Virtual Machine),每个VM都运行一个客户操作系统(Guest OS,客户机)。VMM与一个主机操作系统(Dom0或者Host OS,宿主机)协调,保证位于同一物理机上的虚拟机之间相互隔离,支持无需宕机的前提下将VM从一台物理机在线迁移到另一台物理机(包括基于共享存储的在线迁移和基于本地存储的在线迁移)。虚拟化技术在VM功能和性能隔离、基于VM在线迁移的负载均衡和系统容错、应用移植性、提高资源利用率、降低运维难度和成本等方面的优势使其被广泛应用于各种大型数据中心和云计算环境的IaaS平台中。其典型应用涵盖高性能计算、大数据处理、Web事务处理等。
当前基于KVM(Kernel-based Virtual Machine,系统虚拟化模块)的云存储方案中,虚拟机的读写请求直接落入宿主机的本地存储中。当虚拟机所在的宿主机宕机或由于其他故障无法继续提供服务后,由于无可用存储供虚拟机访问,导致虚拟机无法快速恢复,从而导致虚拟机上的业务中断。
发明内容
本发明要解决的技术问题在于,针对现有虚拟机所在的宿主机宕机时,虚拟机无法快速恢复所存在的不足,提供一种虚拟机快速恢复方法及装置。
本发明解决其技术问题所采用的技术方案是:一种虚拟机快速恢复方法,包括:
将第一宿主机和第二宿主机结成存储peer对,使所述第一宿主机的虚拟机上的读写请求在所述第二宿主机备份;
当所述第一宿主机宕机时,备份宿主机启动所述第一宿主机的虚拟机;
备份宿主机上启动的虚拟机接收调用方发送的读写请求,并判断是否完成第二宿主机到备份宿主机的全量数据同步;
若未完成第二宿主机到备份宿主机的全量数据同步,则将所述读写请求发送给所述第二宿主机;所述第二宿主机基于写请求将待写入数据存储在所述第二宿主机上,或者基于读请求获取指定数据并将所述指定数据发送给备份宿主机;所述备份宿主机将所述指定数据发送给所述调用方。
优选地,若已完成第二宿主机到备份宿主机的全量数据同步,则在所述备份宿主机上执行所述读写请求,并使备份宿主机的虚拟机上的读写请求在所述第二宿主机备份。
优选地,还包括:
所述备份宿主机的客户操作系统接收所述读写请求,并将所述读写请求放入环形缓冲区;
所述备份宿主机的Qemu模块从所述环形缓冲区中获取所述读写请求,并将所述读写请求发送给主机操作系统上的Sync Orig模块;所述Sync Orig模块将所述读写请求发送给所述第二宿主机;
所述第二宿主机的Sync Term模块接收所述读写请求;基于写请求将待写入数据存储在所述第二宿主机的本地磁盘上;或者基于读请求从所述第二宿主机的本地磁盘上获取指定数据,并将所述指定数据发送给所述备份宿主机的Sync Orig模块;
所述备份宿主机的Sync Orig模块接收所述指定数据并将所述指定数据发送给所述备份宿主机的Qemu模块;
所述备份宿主机的Qemu模块将所述指定数据发送给所述备份宿主机的客户操作系统。
优选地,所述将所述第一宿主机的虚拟机的数据在所述第二宿主机上备份,包括:
所述第一宿主机的客户操作系统接收读写请求,并将所述读写请求放入环形缓冲区;
所述第一宿主机的Qemu模块从所述环节缓冲区获取所述读写请求;所述Qemu模块基于读请求,从所述第一宿主机的本地磁盘上获取指定数据;或者所述Qemu模块基于写请求,将待写入数据存储在所述第一宿主机的本地磁盘上;并将所述写请求发送给主机操作系统的Sync Orig模块;
所述主机操作系统的Sync Orig模块将所述写请求发送给所述第二宿主机的SyncTerm模块;
所述第二宿主机的Sync Term模块接收所述写请求,并将所述写请求对应的待写入数据存储在所述第二宿主机的本地磁盘上。
优选地,还包括:
所述第二宿主机判断当前运行指标是否达到预设条件;
若是,则将所述第二宿主机上备份的第一宿主机的虚拟机上的读写请求同步到备份宿主机上;
判断所述第二宿主机上是否存在未同步数据;
若存在,则未完成第二宿主机到备份宿主机的全量数据同步;
若不存在,则已完成第二宿主机到备份宿主机的全量数据同步,向所述备份宿主机发送同步已完成通知。
本发明还提供一种虚拟机快速恢复装置,包括:
数据备份单元,用于将第一宿主机和第二宿主机结成存储peer对,使所述第一宿主机的虚拟机上的读写请求在所述第二宿主机备份;
备份机启动单元,用于在所述第一宿主机宕机时,备份宿主机启动所述第一宿主机的虚拟机;
请求判断单元,用于使备份宿主机上启动的虚拟机接收调用方发送的读写请求,并判断是否完成第二宿主机到备份宿主机的全量数据同步;
第一处理单元,用于在未完成第二宿主机到备份宿主机的全量数据同步时,将所述读写请求发送给所述第二宿主机;所述第二宿主机基于写请求将待写入数据存储在所述第二宿主机上,或者基于读请求获取指定数据并将所述指定数据发送给备份宿主机;所述备份宿主机将所述指定数据发送给所述调用方。
优选地,还包括第二处理单元,用于在已完成第二宿主机到备份宿主机的全量数据同步时,在所述备份宿主机上执行所述读写请求,并使备份宿主机的虚拟机上的读写请求在所述第二宿主机备份。
优选地,还包括:
所述备份宿主机的客户操作系统,用于接收所述读写请求,并将所述读写请求放入环形缓冲区;
所述备份宿主机的Qemu模块,用于从所述环形缓冲区中获取所述读写请求,并将所述读写请求发送给主机操作系统上的Sync Orig模块;所述Sync Orig模块将所述读写请求发送给所述第二宿主机;
所述第二宿主机的Sync Term模块,用于接收所述读写请求;基于写请求将待写入数据存储在所述第二宿主机的本地磁盘上;或者基于读请求从所述第二宿主机的本地磁盘上获取指定数据,并将所述指定数据发送给所述备份宿主机的Sync Orig模块;
所述备份宿主机的Sync Orig模块,用于接收所述指定数据并将所述指定数据发送给所述备份宿主机的Qemu模块;
所述备份宿主机的Qemu模块,用于将所述指定数据发送给所述备份宿主机的客户操作系统。
优选地,所述数据备份单元包括:
所述第一宿主机的客户操作系统,用于接收读写请求,并将所述读写请求放入环形缓冲区;
所述第一宿主机的Qemu模块,用于从所述环节缓冲区获取所述读写请求;所述Qemu模块基于读请求,从所述第一宿主机的本地磁盘上获取指定数据;或者所述Qemu模块基于写请求,将待写入数据存储在所述第一宿主机的本地磁盘上;并将所述写请求发送给主机操作系统的Sync Orig模块;
所述主机操作系统的Sync Orig模块,用于将所述写请求发送给所述第二宿主机的Sync Term模块;
所述第二宿主机的Sync Term模块,用于接收所述写请求,并将所述写请求对应的待写入数据存储在所述第二宿主机的本地磁盘上。
优选地,所述请求判断单元,包括:
第一判断子单元,用于使第二宿主机判断当前运行指标是否达到预设条件;
第一同步子单元,用于在达到预设条件时,将所述第二宿主机上备份的第一宿主机的虚拟机上的读写请求同步到备份宿主机上;
第二判断子单元,用于判断所述第二宿主机上是否存在未同步数据;
第一确定子单元,用于在存在未同步数据时,确定未完成第二宿主机到备份宿主机的全量数据同步;
第二确定子单元,用于在不存在未同步数据时,确定已完成第二宿主机到备份宿主机的全量数据同步,向所述备份宿主机发送同步已完成通知。
本发明与现有技术相比具有如下优点:本发明所提供的虚拟机快速恢复方法及装置中,当第一宿主机宕机时,即在备份宿主机上启动第一宿主机的虚拟机;并在未完成第二宿主机到备份宿主机的全量数据同步时,将备份宿主机的虚拟机接收到的读写请求转发到具有虚拟机备份数据的第二宿主机上执行,可实现虚拟机不带存储的快速迁移及故障恢复,不需要共享存储,并提高虚拟机的鲁棒性,避免因无可用存储供虚拟机访问导致虚拟机上的业务中断的现象发生。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明实施例1中虚拟机快速恢复方法的一流程图。
图2是图1所示虚拟机快速恢复方法中步骤S1的一具体流程图。
图3是图1所示虚拟机快速恢复方法中步骤S3的一具体流程图。
图4是图1所示虚拟机快速恢复方法中步骤S4的一具体流程图。
图5是本发明实施例2中虚拟机快速恢复装置的一原理框图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
图1示出本实施例中的虚拟机快速恢复方法。如图1所示,该虚拟机快速恢复方法包括如下步骤:
S1:将第一宿主机和第二宿主机结成存储peer对,使第一宿主机的虚拟机上的读写请求在第二宿主机备份。相应地,第二宿主机上的读写请求也在第一宿主机上备份。结成存储peer对的第一宿主机的虚拟机和第二宿主机的虚拟机相互独立,但在虚拟机上执行的读写请求相互备份。
S2:当第一宿主机宕机时,备份宿主机启动第一宿主机的虚拟机。在第一宿主机宕机或无法继续提供服务时,需在另外一台运行正常的机器上启动第一宿主机的虚拟机,以保证第一宿主机的虚拟机所提供的服务能够尽快恢复。因此,备份宿主机是集群中一台运行正常的备用机器,备份宿主机的硬件配置需满足能够启动第一宿主机上所有的虚拟机的需求,从而保证第一宿主机的虚拟机所提供的服务能够尽快恢复。以下将在备份宿主机上启动的第一宿主机的虚拟机称为备份宿主机的虚拟机。
S3:备份宿主机上启动的虚拟机接收调用方发送的读写请求,并判断是否完成第二宿主机到备份宿主机的全量数据同步。若第二宿主机完成到备份宿主机的全量数据备份,则第一宿主机的虚拟机迁移完成,虚拟机恢复稳定。可以理解地,若第二宿主机完成到备份宿主机的全量数据备份,则第二宿主机与备份宿主机形成新的存储peer对,使第二宿主机的虚拟机和备份宿主机的虚拟机可实现数据备份,以避免第二宿主机和备份宿主机宕机或发生其他故障而无法运行时,其上的虚拟机无法访问数据。
S4:若未完成第二宿主机到备份宿主机的全量数据同步,则将读写请求发送给第二宿主机;第二宿主机基于写请求将待写入数据存储在第二宿主机上,或者基于读请求获取指定数据并将指定数据发送给备份宿主机;备份宿主机将指定数据发送给调用方。即若第二宿主机未完成到备份宿主机的全量数据同步,则第一宿主机的虚拟机未完全迁移到备份宿主机中,备份宿主机无法对其上启动的虚拟机所接收到的读写请求进行处理,将读写请求转发给备份有虚拟机数据的第二宿主机进行处理,可实现快速恢复虚拟机,避免虚拟机上的业务中断。
S5:若已完成第二宿主机到备份宿主机的全量数据同步,则在备份宿主机上执行读写请求,并使备份宿主机的虚拟机上的读写请求在第二宿主机备份。即若已完成第二宿主机到备份宿主机的全量数据同步,则备份宿主机启动虚拟机并接收读写请求时,将读写请求直接落入备份宿主机的本地磁盘,不再将读写请求跳转到第二宿主机上执行,但备份宿主机上的虚拟机上的读写请求备份到第二宿主机上,其备份过程与步骤S1相同。
本实施例所提供的虚拟机快速恢复方法中,当第一宿主机宕机时,即在备份宿主机上启动第一宿主机的虚拟机;并在未完成第二宿主机到备份宿主机的全量数据同步时,将备份宿主机的虚拟机接收到的读写请求转发到具有虚拟机备份数据的第二宿主机上执行,可实现虚拟机不带存储的快速迁移及故障恢复,不需要共享存储,并提高虚拟机的鲁棒性(Robust),避免因无可用存储供虚拟机访问导致虚拟机上的业务中断的现象发生。
以下结合具体实施方式对该虚拟机快速恢复方法进行说明,在一具体实施方式中,该虚拟机快速恢复方法包括如下步骤:
S1:第一宿主机A与第二宿主机B结成存储peer对,将第一宿主机A的虚拟机上的读写请求在第二宿主机B上备份。相应地,第二宿主机B的虚拟机上的读写请求也在第一宿主机A上备份;而第一宿主机A上的虚拟机和第二宿主机B上的虚拟机相互独立,但虚拟机数据相互备份,以避免第一宿主机A和第二宿主机B宕机或因其他故障导致无法正常运行,虚拟机无法快速恢复而导致其所提供的业务中断。如图2所示,步骤S1具体包括如下步骤:
S11:第一宿主机A的客户操作系统(GuestOS)接收读写请求,并将读写请求放入环形缓冲区(ring buffer)。其中,客户操作系统(GuestOS)是第一宿主机A的虚拟机上运行的操作系统。环形缓冲区(ring buffer)是在通信程序中,用来存放通信中发送和接收的数据的数据结构,可向通信程序提供对缓冲区的互斥访问。
S12:第一宿主机A的Qemu模块从环形缓冲区(ring buffer)获取读写请求。其中,Qemu模块设置在第一宿主机的主机操作系统(Host OS),读写请求是未处理的读写请求。其中,Qemu是一可单独运行的软件,用来模拟机器,具有较高的灵活性和可移植性。Qemu主要通过一个特殊的“重编译器”将为特定处理器编写二进制代码转换为另一种,如在PPCmac上面运行MIPS代码,或者在X86PC上运行ARM代码。Qemu模块中IO路径大体分三层:virtio后端(a)、通用块设备层(b)和驱动层(c),通过在virtio后端(a)和通用块设备层(b)的接口部分插入部分代码以实现把读写请求传递到第二宿主机B落地备份。
S13:第一宿主机A的Qemu模块基于读请求,从第一宿主机A的本地磁盘上获取指定数据;或者第一宿主机A的Qemu模块基于写请求,将待写入数据存储在第一宿主机A的本地磁盘上。
S14:第一宿主机A的Qemu模块将写请求发送给主机操作系统的Sync Orig模块。其中,Sync Orig模块设置在第一宿主机A的主机操作系统(Host OS)上,是第一宿主机A的读写请求转发模块。
S15:主机操作系统的Sync Orig模块将写请求发送给第二宿主机B的Sync Term模块。第一宿主机A的Sync Orig模块与第二宿主机B的Sync Term模块之间通过网络相连。
S16:第二宿主机的Sync Term模块接收写请求,将写请求对应的待写入数据存储在第二宿主机的本地磁盘上,以实现第一宿主机A的虚拟机上的写请求在第二宿主机B备份。Sync Term模块设置在第二宿主机B的主机操作系统(Host OS)上,是第二宿主机B的读写请求接收模块。
进一步地,第一宿主机A与第二宿主机B结成存储peer对的伪代码如下:
Host A config file:
PeerID=1
Host B config file:
PeerID=1
第一宿主机A和第二宿主机B启动后,会向云分别上报自己的PeerID至服务器,服务器将PeerID相同的两台宿主机注册为一存储Peer对。
进一步地,将第一宿主机A的虚拟机上的读写请求在第二宿主机B上备份的伪代码包括:第一宿主机A的Qemu模块接收到写请求后,除将写请求对应的待写入数据存储在第一宿主机A的本地磁盘上,还将写请求对应的待写入数据存入第一宿主机A的主机操作系统(HostOS)的共享内存中。然后,为该写请求生成一个sequence编号,并将写请求需要修改的sector起始编号及sector个数填写到request中,交给主机操作系统(Host OS)的SyncOrig模块进行处理。主机操作系统(Host OS)接收到request,将request和共享内存中的待写入数据data组成一个TCP数据包,发送至第二宿主机B的主机操作系统(HostOS)。第二宿主机B的主机操作系统(HostOS)将数据包中的待写入数据data写入request指定的sector中,从而实现主机操作系统(Host OS)的虚拟机的写请求在主机操作系统(Host OS_B)备份。
S2:当第一宿主机A宕机时,备份宿主机C启动第一宿主机A的虚拟机。本实施例中,在第一宿主机A宕机或无法继续提供服务时,需在另外一台运行正常的机器上启动第一宿主机A的虚拟机,以保证第一宿主机A的虚拟机所提供的服务能够尽快恢复。由于第二宿主机B上已承载有一定数量的虚拟机,若将第一宿主机A的虚拟机迁移至第二宿主机B进行恢复,虽然可以立即获取在第二宿主机B的本地磁盘上备份的第一宿主机A的虚拟机数据,但将造成第二宿主机B的虚拟机访问负载过高,影响第二宿主机B对外提供服务的能力。其中,备份宿主机C是集群中一台运行正常的备用机器,需使备份宿主机C的硬件配置需满足能够启动第一宿主机A上所有的虚拟机的需求,从而保证第一宿主机A的虚拟机所提供的服务能够尽快恢复。以下将在备份宿主机C上启动的第一宿主机A的虚拟机称为备份宿主机C的虚拟机。
S3:备份宿主机C上启动的虚拟机接收调用方发送的读写请求,并判断是否完成第二宿主机B到备份宿主机C的全量数据同步。具体地,备份宿主机C判断是否提供到第二宿主机发送的同步已完成通知,若接收到同步已完成通知,则认定已完成第二宿主机B到备份宿主机C的全量数据同步;反之,则未完成第二宿主机B到备份宿主机C的全量数据同步。如图3所示,步骤S3具体包括:
S31:第二宿主机B判断当前运行指标是否达到预设条件。即在备份宿主机C上启动第一宿主机A的虚拟机后,第二宿主机B将实时检测当前网络吞吐量、磁盘访问等当前运行指标,并在各项当前运行指标均达到预设条件后,执行步骤S32。
S32:若是,则将第二宿主机B上备份的第一宿主机A的虚拟机上的读写请求同步到备份宿主机C上,即将第二宿主机B的虚拟机数据同步到备份宿主机C上。
S33:判断第二宿主机B上是否存在未同步数据。第二宿主机B还实时判断是否存在未同步数据,以确定是否完成第二宿主机B到备份宿主机C上的全量数据同步。
S34:若存在,则未完成第二宿主机B到备份宿主机C的全量数据同步,将未同步数据发送给备份宿主机C进行备份。
S35:若不存在,则已完成第二宿主机B到备份宿主机C的全量数据同步,向备份宿主机C发送同步已完成通知。
进一步地,步骤S3中,备份宿主机C的客户操作系统(GuestOS)接收读写请求,并将读写请求放入环形缓冲区(ring buffer)。
S4:若未完成第二宿主机B到备份宿主机C的全量数据同步,则将读写请求发送给第二宿主机B;第二宿主机B基于写请求将待写入数据存储在第二宿主机B上,或者基于读请求获取指定数据并将指定数据发送给备份宿主机C;备份宿主机C将指定数据发送给调用方。如图4所示,步骤S4具体包括:
S41:备份宿主机C的Qemu模块从环形缓冲区(ring buffer)中获取读写请求。
S42:备份宿主机C的Qemu模块将读写请求发送给主机操作系统上的Sync Orig模块。
S43:Sync Orig模块将读写请求发送给第二宿主机B的Sync Term模块。
S44:第二宿主机B的Sync Term模块接收读写请求,基于写请求将待写入数据存储在第二宿主机B的本地磁盘上。
S45:第二宿主机B的Sync Term模块基于读请求,从第二宿主机B的本地磁盘上获取指定数据,并将指定数据发送给备份宿主机C的Sync Orig模块。
S46:备份宿主机的Sync Orig模块接收指定数据,并将指定数据发送给备份宿主机C的Qemu模块。
S47:备份宿主机C的Qemu模块将指定数据发送给备份宿主机C的客户操作系统(GuestOS),进而发送给调用方。
进一步地,备份宿主机C的虚拟机的读写请求转到第二宿主机B进行进行处理的伪代码如下:
在备份宿主机C的Qemu模块启动前,在其配置文件中,将remoteIO标志置为True。
备份宿主机C的Qemu模块启动时,读到remoteIO=True,将此后收到的每个IO请求(即读写请求),都不做本地磁盘访问,而是通过共享内存告知Sync Orig模块,由Sync Orig模块转发至第二宿主机B。
第二宿主机B的Sync Term模块收到备份宿主机C的Sync Orig模块的写请求后,将写数据在备份宿主机C的本地磁盘落地。
第二宿主机B的Sync Term模块收到备份宿主机C的Sync Orig模块的读请求后,从指定sector读到指定数据后,通过TCP发回备份宿主机C的Sync Orig模块。
备份宿主机C的Sync Orig模块收到B机反馈的指定数据后,将此反馈指定数据写入共享内存中,并通过TCP消息通知备份宿主机C的Qemu模块。
备份宿主机C的Qemu模块收到备份宿主机C的Sync Orig模块的TCP消息通知后,从指定共享内存中获取指定数据,并向调用方反馈。
在虚拟机在备份宿主机上稳定后,启动第二宿主机B到备份宿主机C的数据同步。虚拟机不在存储迁移到备份宿主机C完成后,启动第二宿主机B到备份宿主机C的全量数据同步过程的伪代码如下:
第二宿主机B的Sync Term模块通过分析出本地磁盘的qcow2文件的sector写入情况,将被写过的sector逐一发送至备份宿主机C的Sync Orig模块。备份宿主机C的SyncOrig模块收到第二宿主机B的Sync Term模块发来的同步sector数据后,将数据内容写入本地磁盘的qcow2文件中。
在第二宿主机B上执行的伪代码如下:
在备份宿主机C上执行的伪代码如下:
备份宿主机C在全量数据同步完成后,将虚拟机的读写请求恢复在备份宿主机C的本地磁盘上执行,不再转发至第二宿主机B。此时,在第二宿主机B上执行的伪代码如下:
在备份宿主机C上执行的伪代码如下:
If(Received_msg(hostB,all_data_synchronized=true))
{
Qemu.remoteIO=False;
}
实施例2
图5示出本实施例中的虚拟机快速恢复装置。如图5所示,该虚拟机快速恢复装置包括数据备份单元10、备份机启动单元20、请求判断单元30、第一处理单元40和第二处理单元50。
数据备份单元10,用于将第一宿主机和第二宿主机结成存储peer对,使第一宿主机的虚拟机上的读写请求在第二宿主机备份。相应地,第二宿主机上的读写请求也在第一宿主机上备份。结成存储peer对的第一宿主机的虚拟机和第二宿主机的虚拟机相互独立,但在虚拟机上执行的读写请求相互备份。
备份机启动单元20,用于在第一宿主机宕机时,备份宿主机启动第一宿主机的虚拟机。在第一宿主机宕机或无法继续提供服务时,需在另外一台运行正常的机器上启动第一宿主机的虚拟机,以保证第一宿主机的虚拟机所提供的服务能够尽快恢复。因此,备份宿主机是集群中一台运行正常的备用机器,备份宿主机的硬件配置需满足能够启动第一宿主机上所有的虚拟机的需求,从而保证第一宿主机的虚拟机所提供的服务能够尽快恢复。以下将在备份宿主机上启动的第一宿主机的虚拟机称为备份宿主机的虚拟机。
请求判断单元30,用于使备份宿主机上启动的虚拟机接收调用方发送的读写请求,并判断是否完成第二宿主机到备份宿主机的全量数据同步。若第二宿主机完成到备份宿主机的全量数据备份,则第一宿主机的虚拟机迁移完成,虚拟机恢复稳定。可以理解地,若第二宿主机完成到备份宿主机的全量数据备份,则第二宿主机与备份宿主机形成新的存储peer对,使第二宿主机的虚拟机和备份宿主机的虚拟机可实现数据备份,以避免第二宿主机和备份宿主机宕机或发生其他故障而无法运行时,其上的虚拟机无法访问数据。
第一处理单元40,用于在未完成第二宿主机到备份宿主机的全量数据同步时,将读写请求发送给第二宿主机;第二宿主机基于写请求将待写入数据存储在第二宿主机上,或者基于读请求获取指定数据并将指定数据发送给备份宿主机;备份宿主机将指定数据发送给调用方。即若第二宿主机未完成到备份宿主机的全量数据同步,则第一宿主机的虚拟机未完全迁移到备份宿主机中,备份宿主机无法对其上启动的虚拟机所接收到的读写请求进行处理,将读写请求转发给备份有虚拟机数据的第二宿主机进行处理,可实现快速恢复虚拟机,避免虚拟机上的业务中断。
第二处理单元50,用于在已完成第二宿主机到备份宿主机的全量数据同步时,在备份宿主机上执行读写请求,并使备份宿主机的虚拟机上的读写请求在第二宿主机备份。即若已完成第二宿主机到备份宿主机的全量数据同步,则备份宿主机启动虚拟机并接收读写请求时,将读写请求直接落入备份宿主机的本地磁盘,不再将读写请求跳转到第二宿主机上执行,但备份宿主机上的虚拟机上的读写请求备份到第二宿主机上,其备份过程与步骤S1相同。
本实施例所提供的虚拟机快速恢复装置中,当第一宿主机宕机时,即在备份宿主机上启动第一宿主机的虚拟机;并在未完成第二宿主机到备份宿主机的全量数据同步时,将备份宿主机的虚拟机接收到的读写请求转发到具有虚拟机备份数据的第二宿主机上执行,可实现虚拟机不带存储的快速迁移及故障恢复,不需要共享存储,并提高虚拟机的鲁棒性(Robust),避免因无可用存储供虚拟机访问导致虚拟机上的业务中断的现象发生。
以下结合具体实施方式对该虚拟机快速恢复装置进行说明,在一具体实施方式中,该虚拟机快速恢复装置包括:
数据备份单元10,用于将第一宿主机A与第二宿主机B结成存储peer对,将第一宿主机A的虚拟机上的读写请求在第二宿主机B上备份。相应地,第二宿主机B的虚拟机上的读写请求也在第一宿主机A上备份;而第一宿主机A上的虚拟机和第二宿主机B上的虚拟机相互独立,但虚拟机数据相互备份,以避免第一宿主机A和第二宿主机B宕机或因其他故障导致无法正常运行,虚拟机无法快速恢复而导致其所提供的业务中断。具体地,数据备份单元10包括:
第一宿主机A的客户操作系统(GuestOS),用于接收读写请求,并将读写请求放入环形缓冲区(ring buffer)。其中,客户操作系统(GuestOS)是第一宿主机A的虚拟机上运行的操作系统。环形缓冲区(ring buffer)是在通信程序中,用来存放通信中发送和接收的数据的数据结构,可向通信程序提供对缓冲区的互斥访问。
第一宿主机A的Qemu模块从环形缓冲区(ring buffer),用于获取读写请求。其中,Qemu模块设置在第一宿主机的主机操作系统(Host OS),读写请求是未处理的读写请求。其中,Qemu是一可单独运行的软件,用来模拟机器,具有较高的灵活性和可移植性。Qemu主要通过一个特殊的“重编译器”将为特定处理器编写二进制代码转换为另一种,如在PPCmac上面运行MIPS代码,或者在X86PC上运行ARM代码。Qemu模块中IO路径大体分三层:virtio后端(a)、通用块设备层(b)和驱动层(c),通过在virtio后端(a)和通用块设备层(b)的接口部分插入部分代码以实现把读写请求传递到第二宿主机B落地备份。
第一宿主机A的Qemu模块,用于基于读请求,从第一宿主机A的本地磁盘上获取指定数据;或者第一宿主机A的Qemu模块基于写请求,将待写入数据存储在第一宿主机A的本地磁盘上。
第一宿主机A的Qemu模块,用于将写请求发送给主机操作系统的Sync Orig模块。其中,Sync Orig模块设置在第一宿主机A的主机操作系统(Host OS)上,是第一宿主机A的读写请求转发模块。
主机操作系统的Sync Orig模块,用于将写请求发送给第二宿主机B的Sync Term模块。第一宿主机A的Sync Orig模块与第二宿主机B的Sync Term模块之间通过网络相连。
第二宿主机的Sync Term模块,用于接收写请求,将写请求对应的待写入数据存储在第二宿主机的本地磁盘上,以实现第一宿主机A的虚拟机上的写请求在第二宿主机B备份。Sync Term模块设置在第二宿主机B的主机操作系统(Host OS)上,是第二宿主机B的读写请求接收模块。
进一步地,第一宿主机A与第二宿主机B结成存储peer对的伪代码如下:
Host A config file:
PeerID=1
Host B config file:
PeerID=1
第一宿主机A和第二宿主机B启动后,会向云分别上报自己的PeerID至服务器,服务器将PeerID相同的两台宿主机注册为一存储Peer对。
进一步地,将第一宿主机A的虚拟机上的读写请求在第二宿主机B上备份的伪代码包括:第一宿主机A的Qemu模块接收到写请求后,除将写请求对应的待写入数据存储在第一宿主机A的本地磁盘上,还将写请求对应的待写入数据存入第一宿主机A的主机操作系统(HostOS)的共享内存中。然后,为该写请求生成一个sequence编号,并将写请求需要修改的sector起始编号及sector个数填写到request中,交给主机操作系统(Host OS)的SyncOrig模块进行处理。主机操作系统(Host OS)接收到request,将request和共享内存中的待写入数据data组成一个TCP数据包,发送至第二宿主机B的主机操作系统(HostOS)。第二宿主机B的主机操作系统(HostOS)将数据包中的待写入数据data写入request指定的sector中,从而实现主机操作系统(Host OS)的虚拟机的写请求在主机操作系统(Host OS_B)备份。
备份机启动单元20,用于在第一宿主机A宕机时,备份宿主机C启动第一宿主机A的虚拟机。本实施例中,在第一宿主机A宕机或无法继续提供服务时,需在另外一台运行正常的机器上启动第一宿主机A的虚拟机,以保证第一宿主机A的虚拟机所提供的服务能够尽快恢复。由于第二宿主机B上已承载有一定数量的虚拟机,若将第一宿主机A的虚拟机迁移至第二宿主机B进行恢复,虽然可以立即获取在第二宿主机B的本地磁盘上备份的第一宿主机A的虚拟机数据,但将造成第二宿主机B的虚拟机访问负载过高,影响第二宿主机B对外提供服务的能力。其中,备份宿主机C是集群中一台运行正常的备用机器,需使备份宿主机C的硬件配置需满足能够启动第一宿主机A上所有的虚拟机的需求,从而保证第一宿主机A的虚拟机所提供的服务能够尽快恢复。以下将在备份宿主机C上启动的第一宿主机A的虚拟机称为备份宿主机C的虚拟机。
请求判断单元30,用于使备份宿主机C上启动的虚拟机接收调用方发送的读写请求,并判断是否完成第二宿主机B到备份宿主机C的全量数据同步。具体地,备份宿主机C判断是否提供到第二宿主机发送的同步已完成通知,若接收到同步已完成通知,则认定已完成第二宿主机B到备份宿主机C的全量数据同步;反之,则未完成第二宿主机B到备份宿主机C的全量数据同步。如图5所示,请求判断单元30包括第一判断子单元31、第一同步子单元32、第二判断子单元33、第一确定子单元34和第二确定子单元35。
第一判断子单元31,用于使第二宿主机B判断当前运行指标是否达到预设条件。即在备份宿主机C上启动第一宿主机A的虚拟机后,第二宿主机B将实时检测当前网络吞吐量、磁盘访问等当前运行指标,并在各项当前运行指标均达到预设条件后,执行步骤S32。
第一同步子单元32,用于在达到预设条件时,将第二宿主机B上备份的第一宿主机A的虚拟机上的读写请求同步到备份宿主机C上,即将第二宿主机B的虚拟机数据同步到备份宿主机C上。
第二判断子单元33,用于判断第二宿主机B上是否存在未同步数据。第二宿主机B还实时判断是否存在未同步数据,以确定是否完成第二宿主机B到备份宿主机C上的全量数据同步。
第一确定子单元34,用于在存在未同步数据时,确定未完成第二宿主机B到备份宿主机C的全量数据同步,将未同步数据发送给备份宿主机C进行备份。
第二确定子单元35,用于在不存在未同步数据时,确定已完成第二宿主机B到备份宿主机C的全量数据同步,向备份宿主机C发送同步已完成通知。
进一步地,请求判断单元30中,备份宿主机C的客户操作系统(GuestOS)接收读写请求,并将读写请求放入环形缓冲区(ring buffer)。
第一处理单元40,用于在未完成第二宿主机B到备份宿主机C的全量数据同步时,将读写请求发送给第二宿主机B;第二宿主机B基于写请求将待写入数据存储在第二宿主机B上,或者基于读请求获取指定数据并将指定数据发送给备份宿主机C;备份宿主机C将指定数据发送给调用方。具体地,第一处理单元40具体包括:
备份宿主机C的Qemu模块,用于从环形缓冲区(ring buffer)中获取读写请求。
备份宿主机C的Qemu模块,用于将读写请求发送给主机操作系统上的Sync Orig模块。
主机操作系统上的Sync Orig模块,用于将读写请求发送给第二宿主机B的SyncTerm模块。
第二宿主机B的Sync Term模块,用于接收读写请求,基于写请求将待写入数据存储在第二宿主机B的本地磁盘上。
第二宿主机B的Sync Term模块,用于基于读请求,从第二宿主机B的本地磁盘上获取指定数据,并将指定数据发送给备份宿主机C的Sync Orig模块。
备份宿主机的Sync Orig模块,用于接收指定数据,并将指定数据发送给备份宿主机C的Qemu模块。
备份宿主机C的Qemu模块,用于将指定数据发送给备份宿主机C的客户操作系统(GuestOS),进而发送给调用方。
进一步地,备份宿主机C的虚拟机的读写请求转到第二宿主机B进行进行处理的伪代码如下:
在备份宿主机C的Qemu模块启动前,在其配置文件中,将remoteIO标志置为True。
备份宿主机C的Qemu模块启动时,读到remoteIO=True,将此后收到的每个IO请求(即读写请求),都不做本地磁盘访问,而是通过共享内存告知Sync Orig模块,由Sync Orig模块转发至第二宿主机B。
第二宿主机B的Sync Term模块收到备份宿主机C的Sync Orig模块的写请求后,将写数据在备份宿主机C的本地磁盘落地。
第二宿主机B的Sync Term模块收到备份宿主机C的Sync Orig模块的读请求后,从指定sector读到指定数据后,通过TCP发回备份宿主机C的Sync Orig模块。
备份宿主机C的Sync Orig模块收到B机反馈的指定数据后,将此反馈指定数据写入共享内存中,并通过TCP消息通知备份宿主机C的Qemu模块。
备份宿主机C的Qemu模块收到备份宿主机C的Sync Orig模块的TCP消息通知后,从指定共享内存中获取指定数据,并向调用方反馈。
在虚拟机在备份宿主机上稳定后,启动第二宿主机B到备份宿主机C的数据同步。虚拟机不在存储迁移到备份宿主机C完成后,启动第二宿主机B到备份宿主机C的全量数据同步过程的伪代码如下:
第二宿主机B的Sync Term模块通过分析出本地磁盘的qcow2文件的sector写入情况,将被写过的sector逐一发送至备份宿主机C的Sync Orig模块。备份宿主机C的SyncOrig模块收到第二宿主机B的Sync Term模块发来的同步sector数据后,将数据内容写入本地磁盘的qcow2文件中。
在第二宿主机B上执行的伪代码如下:
在备份宿主机C上执行的伪代码如下:
备份宿主机C在全量数据同步完成后,将虚拟机的读写请求恢复在备份宿主机C的本地磁盘上执行,不再转发至第二宿主机B。此时,在第二宿主机B上执行的伪代码如下:
在备份宿主机C上执行的伪代码如下:
If(Received_msg(hostB,all_data_synchronized=true))
{
Qemu.remoteIO=False;
}
本发明是通过几个具体实施例进行说明的,本领域技术人员应当明白,在不脱离本发明范围的情况下,还可以对本发明进行各种变换和等同替代。另外,针对特定情形或具体情况,可以对本发明做各种修改,而不脱离本发明的范围。因此,本发明不局限于所公开的具体实施例,而应当包括落入本发明权利要求范围内的全部实施方式。
Claims (10)
1.一种虚拟机快速恢复方法,其特征在于,包括:
将第一宿主机和第二宿主机结成存储peer对,使所述第一宿主机的虚拟机上的读写请求在所述第二宿主机备份;
当所述第一宿主机宕机时,备份宿主机启动所述第一宿主机的虚拟机;
备份宿主机上启动的虚拟机接收调用方发送的读写请求,并判断是否完成第二宿主机到备份宿主机的全量数据同步;
若未完成第二宿主机到备份宿主机的全量数据同步,则将所述读写请求发送给所述第二宿主机;所述第二宿主机基于写请求将待写入数据存储在所述第二宿主机上,或者基于读请求获取指定数据并将所述指定数据发送给备份宿主机;所述备份宿主机将所述指定数据发送给所述调用方。
2.根据权利要求1所述的虚拟机快速恢复方法,其特征在于,若已完成第二宿主机到备份宿主机的全量数据同步,则在所述备份宿主机上执行所述读写请求,并使备份宿主机的虚拟机上的读写请求在所述第二宿主机备份。
3.根据权利要求1所述的虚拟机快速恢复方法,其特征在于,还包括:
所述备份宿主机的客户操作系统接收所述读写请求,并将所述读写请求放入环形缓冲区;
所述备份宿主机的Qemu模块从所述环形缓冲区中获取所述读写请求,并将所述读写请求发送给主机操作系统上的Sync Orig模块;所述Sync Orig模块将所述读写请求发送给所述第二宿主机;
所述第二宿主机的Sync Term模块接收所述读写请求;基于写请求将待写入数据存储在所述第二宿主机的本地磁盘上;或者基于读请求从所述第二宿主机的本地磁盘上获取指定数据,并将所述指定数据发送给所述备份宿主机的Sync Orig模块;
所述备份宿主机的Sync Orig模块接收所述指定数据并将所述指定数据发送给所述备份宿主机的Qemu模块;
所述备份宿主机的Qemu模块将所述指定数据发送给所述备份宿主机的客户操作系统。
4.根据权利要求1所述的虚拟机快速恢复方法,其特征在于,所述将所述第一宿主机的虚拟机的数据在所述第二宿主机上备份,包括:
所述第一宿主机的客户操作系统接收读写请求,并将所述读写请求放入环形缓冲区;
所述第一宿主机的Qemu模块从所述环节缓冲区获取所述读写请求;所述Qemu模块基于读请求,从所述第一宿主机的本地磁盘上获取指定数据;或者所述Qemu模块基于写请求,将待写入数据存储在所述第一宿主机的本地磁盘上;并将所述写请求发送给主机操作系统的Sync Orig模块;
所述主机操作系统的Sync Orig模块将所述写请求发送给所述第二宿主机的SyncTerm模块;
所述第二宿主机的Sync Term模块接收所述写请求,并将所述写请求对应的待写入数据存储在所述第二宿主机的本地磁盘上。
5.根据权利要求1-4任一项所述的虚拟机快速恢复方法,其特征在于,还包括:
所述第二宿主机判断当前运行指标是否达到预设条件;
若是,则将所述第二宿主机上备份的第一宿主机的虚拟机上的读写请求同步到备份宿主机上;
判断所述第二宿主机上是否存在未同步数据;
若存在,则未完成第二宿主机到备份宿主机的全量数据同步;
若不存在,则已完成第二宿主机到备份宿主机的全量数据同步,向所述备份宿主机发送同步已完成通知。
6.一种虚拟机快速恢复装置,其特征在于,包括:
数据备份单元,用于将第一宿主机和第二宿主机结成存储peer对,使所述第一宿主机的虚拟机上的读写请求在所述第二宿主机备份;
备份机启动单元,用于在所述第一宿主机宕机时,备份宿主机启动所述第一宿主机的虚拟机;
请求判断单元,用于使备份宿主机上启动的虚拟机接收调用方发送的读写请求,并判断是否完成第二宿主机到备份宿主机的全量数据同步;
第一处理单元,用于在未完成第二宿主机到备份宿主机的全量数据同步时,将所述读写请求发送给所述第二宿主机;所述第二宿主机基于写请求将待写入数据存储在所述第二宿主机上,或者基于读请求获取指定数据并将所述指定数据发送给备份宿主机;所述备份宿主机将所述指定数据发送给所述调用方。
7.根据权利要求6所述的虚拟机快速恢复装置,其特征在于,还包括第二处理单元,用于在已完成第二宿主机到备份宿主机的全量数据同步时,在所述备份宿主机上执行所述读写请求,并使备份宿主机的虚拟机上的读写请求在所述第二宿主机备份。
8.根据权利要求6所述的虚拟机快速恢复装置,其特征在于,还包括:
所述备份宿主机的客户操作系统,用于接收所述读写请求,并将所述读写请求放入环形缓冲区;
所述备份宿主机的Qemu模块,用于从所述环形缓冲区中获取所述读写请求,并将所述读写请求发送给主机操作系统上的Sync Orig模块;所述Sync Orig模块将所述读写请求发送给所述第二宿主机;
所述第二宿主机的Sync Term模块,用于接收所述读写请求;基于写请求将待写入数据存储在所述第二宿主机的本地磁盘上;或者基于读请求从所述第二宿主机的本地磁盘上获取指定数据,并将所述指定数据发送给所述备份宿主机的Sync Orig模块;
所述备份宿主机的Sync Orig模块,用于接收所述指定数据并将所述指定数据发送给所述备份宿主机的Qemu模块;
所述备份宿主机的Qemu模块,用于将所述指定数据发送给所述备份宿主机的客户操作系统。
9.根据权利要求6所述的虚拟机快速恢复装置,其特征在于,所述数据备份单元包括:
所述第一宿主机的客户操作系统,用于接收读写请求,并将所述读写请求放入环形缓冲区;
所述第一宿主机的Qemu模块,用于从所述环节缓冲区获取所述读写请求;所述Qemu模块基于读请求,从所述第一宿主机的本地磁盘上获取指定数据;或者所述Qemu模块基于写请求,将待写入数据存储在所述第一宿主机的本地磁盘上;并将所述写请求发送给主机操作系统的Sync Orig模块;
所述主机操作系统的Sync Orig模块,用于将所述写请求发送给所述第二宿主机的Sync Term模块;
所述第二宿主机的Sync Term模块,用于接收所述写请求,并将所述写请求对应的待写入数据存储在所述第二宿主机的本地磁盘上。
10.根据权利要求6-9任一项所述的虚拟机快速恢复装置,其特征在于,所述请求判断单元,包括:
第一判断子单元,用于使第二宿主机判断当前运行指标是否达到预设条件;
第一同步子单元,用于在达到预设条件时,将所述第二宿主机上备份的第一宿主机的虚拟机上的读写请求同步到备份宿主机上;
第二判断子单元,用于判断所述第二宿主机上是否存在未同步数据;
第一确定子单元,用于在存在未同步数据时,确定未完成第二宿主机到备份宿主机的全量数据同步;
第二确定子单元,用于在不存在未同步数据时,确定已完成第二宿主机到备份宿主机的全量数据同步,向所述备份宿主机发送同步已完成通知。
Priority Applications (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611240016.5A CN106708603B (zh) | 2016-12-28 | 2016-12-28 | 虚拟机快速恢复方法及装置 |
US15/772,798 US10740197B2 (en) | 2016-12-28 | 2017-04-10 | Quick recovery method, device and system of a virtual machine |
EP17857672.4A EP3564815A4 (en) | 2016-12-28 | 2017-04-10 | FAST RECOVERY METHOD, DEVICE AND SYSTEM FOR VIRTUAL MACHINE |
PCT/CN2017/079912 WO2018120491A1 (zh) | 2016-12-28 | 2017-04-10 | 虚拟机快速恢复方法、装置和系统 |
JP2018519449A JP6735820B2 (ja) | 2016-12-28 | 2017-04-10 | 仮想マシンの高速復旧方法 |
AU2017341159A AU2017341159B2 (en) | 2016-12-28 | 2017-04-10 | Quick recovery method, device and system of a virtual machine |
SG11201803894WA SG11201803894WA (en) | 2016-12-28 | 2017-04-10 | Quick recovery method, device and system of a virtual machine |
KR1020187015545A KR102067918B1 (ko) | 2016-12-28 | 2017-04-10 | 가상 머신의 신속한 복원 방법, 장치 및 시스템 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611240016.5A CN106708603B (zh) | 2016-12-28 | 2016-12-28 | 虚拟机快速恢复方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106708603A true CN106708603A (zh) | 2017-05-24 |
CN106708603B CN106708603B (zh) | 2019-04-26 |
Family
ID=58903718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611240016.5A Active CN106708603B (zh) | 2016-12-28 | 2016-12-28 | 虚拟机快速恢复方法及装置 |
Country Status (8)
Country | Link |
---|---|
US (1) | US10740197B2 (zh) |
EP (1) | EP3564815A4 (zh) |
JP (1) | JP6735820B2 (zh) |
KR (1) | KR102067918B1 (zh) |
CN (1) | CN106708603B (zh) |
AU (1) | AU2017341159B2 (zh) |
SG (1) | SG11201803894WA (zh) |
WO (1) | WO2018120491A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107168774A (zh) * | 2017-06-14 | 2017-09-15 | 北京云联万维技术有限公司 | 一种基于本地存储的虚拟机迁移方法及系统 |
CN109298977A (zh) * | 2018-10-19 | 2019-02-01 | 深信服科技股份有限公司 | 一种虚拟机业务快速恢复方法、系统、装置及存储介质 |
CN111090491A (zh) * | 2019-07-03 | 2020-05-01 | 杭州海康威视系统技术有限公司 | 虚拟机任务状态的恢复方法、装置及电子设备 |
CN111221561A (zh) * | 2020-01-14 | 2020-06-02 | 平安科技(深圳)有限公司 | 流表更新方法、装置、系统、计算机设备及存储介质 |
CN111240889A (zh) * | 2018-11-29 | 2020-06-05 | 阿里巴巴集团控股有限公司 | 数据备份系统和方法以及电子设备 |
CN113900716A (zh) * | 2021-09-29 | 2022-01-07 | 武汉噢易云计算股份有限公司 | 桌面启动的管理方法及装置 |
CN111221561B (zh) * | 2020-01-14 | 2024-05-31 | 平安科技(深圳)有限公司 | 流表更新方法、装置、系统、计算机设备及存储介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7006461B2 (ja) * | 2018-04-02 | 2022-01-24 | 株式会社デンソー | 電子制御装置および電子制御システム |
US11509487B2 (en) * | 2020-03-16 | 2022-11-22 | Kaseya Limited | System for rollout of certificates to client and server independent of public key infrastructure |
CN113918284B (zh) * | 2021-10-13 | 2022-08-02 | 江苏安超云软件有限公司 | 云主机批量迁移的方法及装置、电子设备和存储介质 |
CN114760242B (zh) * | 2022-03-30 | 2024-04-09 | 深信服科技股份有限公司 | 虚拟路由器的迁移方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130185716A1 (en) * | 2012-01-13 | 2013-07-18 | Computer Associates Think, Inc. | System and method for providing a virtualized replication and high availability environment |
CN103559108A (zh) * | 2013-11-11 | 2014-02-05 | 中国科学院信息工程研究所 | 一种基于虚拟化实现主备故障自动恢复的方法及系统 |
CN104965757A (zh) * | 2015-01-21 | 2015-10-07 | 深圳市腾讯计算机系统有限公司 | 虚拟机热迁移的方法、虚拟机迁移管理装置及系统 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7653794B2 (en) * | 2006-05-08 | 2010-01-26 | Microsoft Corporation | Converting physical machines to virtual machines |
KR101007279B1 (ko) * | 2007-12-17 | 2011-01-13 | 한국전자통신연구원 | 가상 머신 디스크 풀을 이용한 가상 머신 프로비저닝 방법 및 시스템 |
CN103838593B (zh) * | 2012-11-22 | 2020-04-03 | 华为技术有限公司 | 恢复虚拟机的方法、系统及控制器、服务器、寄宿主机 |
KR20140140719A (ko) * | 2013-05-30 | 2014-12-10 | 삼성에스디에스 주식회사 | 가상 머신 동기화 장치 및 시스템과 이를 이용한 장애 처리 방법 |
US9529617B2 (en) * | 2014-03-21 | 2016-12-27 | Ca, Inc. | Instant virtual machines |
KR102174692B1 (ko) * | 2014-03-26 | 2020-11-05 | 에스케이텔레콤 주식회사 | 가상화 환경에서의 장애 처리 방법 |
KR20160012863A (ko) * | 2014-07-24 | 2016-02-03 | 삼성전자주식회사 | 가상 머신을 실행하는 전자 장치 및 가상 머신을 실행하는 방법 |
CN105653345A (zh) * | 2014-10-17 | 2016-06-08 | 伊姆西公司 | 用于支持对数据的非易失性随机访问的方法和设备 |
CN104331318B (zh) | 2014-10-27 | 2018-04-06 | 上海斐讯数据通信技术有限公司 | 一种嵌入式双系统及其工作方法 |
US9632881B1 (en) * | 2015-03-24 | 2017-04-25 | EMC IP Holding Company LLC | Replication of a virtual distributed volume |
CN105159798A (zh) * | 2015-08-28 | 2015-12-16 | 浪潮集团有限公司 | 一种虚拟机的双机热备方法、双机热备管理服务器和系统 |
-
2016
- 2016-12-28 CN CN201611240016.5A patent/CN106708603B/zh active Active
-
2017
- 2017-04-10 EP EP17857672.4A patent/EP3564815A4/en active Pending
- 2017-04-10 KR KR1020187015545A patent/KR102067918B1/ko active IP Right Grant
- 2017-04-10 SG SG11201803894WA patent/SG11201803894WA/en unknown
- 2017-04-10 US US15/772,798 patent/US10740197B2/en active Active
- 2017-04-10 AU AU2017341159A patent/AU2017341159B2/en active Active
- 2017-04-10 WO PCT/CN2017/079912 patent/WO2018120491A1/zh active Application Filing
- 2017-04-10 JP JP2018519449A patent/JP6735820B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130185716A1 (en) * | 2012-01-13 | 2013-07-18 | Computer Associates Think, Inc. | System and method for providing a virtualized replication and high availability environment |
CN103559108A (zh) * | 2013-11-11 | 2014-02-05 | 中国科学院信息工程研究所 | 一种基于虚拟化实现主备故障自动恢复的方法及系统 |
CN104965757A (zh) * | 2015-01-21 | 2015-10-07 | 深圳市腾讯计算机系统有限公司 | 虚拟机热迁移的方法、虚拟机迁移管理装置及系统 |
Non-Patent Citations (1)
Title |
---|
何云超: "基于硬件支持的USB设备虚拟化框架研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107168774A (zh) * | 2017-06-14 | 2017-09-15 | 北京云联万维技术有限公司 | 一种基于本地存储的虚拟机迁移方法及系统 |
CN109298977A (zh) * | 2018-10-19 | 2019-02-01 | 深信服科技股份有限公司 | 一种虚拟机业务快速恢复方法、系统、装置及存储介质 |
CN111240889A (zh) * | 2018-11-29 | 2020-06-05 | 阿里巴巴集团控股有限公司 | 数据备份系统和方法以及电子设备 |
CN111090491A (zh) * | 2019-07-03 | 2020-05-01 | 杭州海康威视系统技术有限公司 | 虚拟机任务状态的恢复方法、装置及电子设备 |
CN111221561A (zh) * | 2020-01-14 | 2020-06-02 | 平安科技(深圳)有限公司 | 流表更新方法、装置、系统、计算机设备及存储介质 |
CN111221561B (zh) * | 2020-01-14 | 2024-05-31 | 平安科技(深圳)有限公司 | 流表更新方法、装置、系统、计算机设备及存储介质 |
CN113900716A (zh) * | 2021-09-29 | 2022-01-07 | 武汉噢易云计算股份有限公司 | 桌面启动的管理方法及装置 |
CN113900716B (zh) * | 2021-09-29 | 2023-05-30 | 武汉噢易云计算股份有限公司 | 桌面启动的管理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
AU2017341159B2 (en) | 2019-07-25 |
US20190272219A1 (en) | 2019-09-05 |
KR102067918B1 (ko) | 2020-01-17 |
EP3564815A1 (en) | 2019-11-06 |
AU2017341159A1 (en) | 2018-07-12 |
US10740197B2 (en) | 2020-08-11 |
CN106708603B (zh) | 2019-04-26 |
EP3564815A4 (en) | 2020-09-02 |
SG11201803894WA (en) | 2018-08-30 |
WO2018120491A1 (zh) | 2018-07-05 |
JP6735820B2 (ja) | 2020-08-05 |
KR20180087278A (ko) | 2018-08-01 |
JP2019504374A (ja) | 2019-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106708603A (zh) | 虚拟机快速恢复方法及装置 | |
CN109151045B (zh) | 一种分布式云系统及监控方法 | |
CN106528327B (zh) | 一种数据处理方法以及备份服务器 | |
US9639437B2 (en) | Techniques to manage non-disruptive SAN availability in a partitioned cluster | |
US8521703B2 (en) | Multiple node/virtual input/output (I/O) server (VIOS) failure recovery in clustered partition mobility | |
US9753761B1 (en) | Distributed dynamic federation between multi-connected virtual platform clusters | |
US9727429B1 (en) | Method and system for immediate recovery of replicated virtual machines | |
JP5536878B2 (ja) | ファイバ・チャネル・ファブリックへのアクセスの変更 | |
US9489230B1 (en) | Handling of virtual machine migration while performing clustering operations | |
CN103618627B (zh) | 一种管理虚拟机的方法、装置及系统 | |
US20210081287A1 (en) | Data service failover in shared storage clusters | |
CN105677480B (zh) | 一种数据处理方法及装置 | |
CN106970861A (zh) | 一种虚拟机容错方法和系统 | |
CN107038096A (zh) | 虚拟磁盘备份系统、方法和装置 | |
CN106681858A (zh) | 一种虚拟机数据容灾方法及管理装置 | |
CN106612314A (zh) | 基于虚拟机实现软件定义存储的系统 | |
CN110046064B (zh) | 一种基于故障漂移的云服务器容灾实现方法 | |
US11036530B2 (en) | Application continuous high availability solution | |
CN109254873A (zh) | 数据备份方法、相关装置及系统 | |
CN115766405B (zh) | 一种故障处理方法、装置、设备和存储介质 | |
CN107181608A (zh) | 一种恢复服务及性能提升的方法及运维管理系统 | |
CN110618884A (zh) | 故障监控方法、虚拟化的网络功能模块管理器和存储介质 | |
CN107704618A (zh) | 一种基于aufs文件系统的热迁徙方法和系统 | |
CN112134933A (zh) | 一种OpenStack高可用缓存集群的实现方法、装置及存储介质 | |
CN111427659A (zh) | 一种ssd硬盘直通虚拟机的热迁移的方法和设备 |
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 |