CN110347483B - 物理机到虚拟机迁移方法、装置及存储介质 - Google Patents
物理机到虚拟机迁移方法、装置及存储介质 Download PDFInfo
- Publication number
- CN110347483B CN110347483B CN201810308312.7A CN201810308312A CN110347483B CN 110347483 B CN110347483 B CN 110347483B CN 201810308312 A CN201810308312 A CN 201810308312A CN 110347483 B CN110347483 B CN 110347483B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- data
- file
- program
- check code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 105
- 238000003860 storage Methods 0.000 title claims abstract description 24
- 230000008569 process Effects 0.000 claims abstract description 37
- 238000013508 migration Methods 0.000 claims description 83
- 230000005012 migration Effects 0.000 claims description 83
- 230000015654 memory Effects 0.000 claims description 13
- 238000004364 calculation method Methods 0.000 claims description 11
- 238000012544 monitoring process Methods 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 claims description 9
- 238000001914 filtration Methods 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 5
- 230000000875 corresponding effect Effects 0.000 description 60
- 238000005192 partition Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 10
- 230000001276 controlling effect Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 5
- 101100356020 Haemophilus influenzae (strain ATCC 51907 / DSM 11121 / KW20 / Rd) recA gene Proteins 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 101100042680 Mus musculus Slc7a1 gene Proteins 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 101100412102 Haemophilus influenzae (strain ATCC 51907 / DSM 11121 / KW20 / Rd) rec2 gene Proteins 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 101150037928 recN gene Proteins 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- 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/45562—Creating, deleting, cloning 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/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/45575—Starting, stopping, suspending or resuming 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/45591—Monitoring or debugging support
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种物理机到虚拟机(P2V)迁移方法、装置及存储介质,将物理机(PM)的磁盘数据传输至服务器;所述磁盘数据供所述服务器基于所述PM的磁盘数据创建并启动虚拟机;获取传输所述PM的磁盘数据过程中所述PM运行程序所产生的第一脏数据;基于所获取的所述第一脏数据,对创建所述虚拟机的所述磁盘数据进行更新;基于更新后的所述虚拟机的所述磁盘数据,控制所述虚拟机基于所述程序的进度继续运行所述程序。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种物理机到虚拟机(P2V,Physical tovirtual)迁移方法、装置及存储介质。
背景技术
随着云计算和虚拟化技术的迅速发展,越来越多的企业使用此技术构建新的数据中心,以提高资源利用率和管理效率。云计算技术的核心是服务器虚拟化技术,通过对服务器的虚拟化,实现一台服务器上运行多个虚拟机,然而在构建新的数据中心的过程中,如何把现有的物理机(PM,Physical Machine)上的系统迁移到云平台上来作为一台虚拟机运行是一个关键问题。相关技术中,实现P2V迁移的方式需要多次切断PM运行的程序,对程序的执行造成很大影响,用户体验差。
发明内容
有鉴于此,本发明实施例提供一种P2V迁移方法、装置及存储介质,至少解决了现有技术中存在的问题,能够在实现P2V迁移的同时降低对程序的影响。
本发明实施例的技术方案是这样实现的:
本发明实施例提供了一种P2V迁移方法,所述方法包括:
将PM的磁盘数据传输至服务器;所述磁盘数据供所述服务器基于所述PM的磁盘数据创建并启动虚拟机;
获取传输所述PM的磁盘数据过程中所述PM运行程序所产生的第一脏数据;
基于所获取的所述第一脏数据,对创建所述虚拟机的所述磁盘数据进行更新;
基于更新后的所述虚拟机的所述磁盘数据,控制所述虚拟机基于所述程序的进度继续运行所述程序。
上述方案中,所述获取传输所述PM的磁盘数据过程中所述PM运行程序所产生的第一脏数据,包括:
在传输所述PM的磁盘数据过程中,对所述PM运行所述程序对应的文件进行监控,形成记录文件;
基于所述记录文件,获取所述PM运行所述程序所产生的第一脏数据。
上述方案中,所述基于所述记录文件,获取所述PM运行所述程序所产生的第一脏数据,包括:
发送所述记录文件至所述虚拟机,以获得所述虚拟机基于所述记录文件生成并返回的校验码;
计算对应所述程序的本地文件的校验码;
将所述虚拟机返回的所述校验码与计算得到的所述校验码进行匹配,得到所述第一脏数据。
上述方案中,所述将所述虚拟机返回的所述校验码与计算得到的所述校验码进行匹配,得到所述第一脏数据,包括:
按照文件偏移量依次读取计算得到的所述校验码;
分别将每次读取的校验码与所述虚拟机返回的所述校验码进行匹配;
将匹配失败的数据作为所述PM运行所述程序所产生的第一脏数据。
上述方案中,所述校验码包括强校验码及弱校验码;
相应的,所述分别将每次读取的校验码与所述虚拟机返回的所述校验码进行匹配,包括:
将读取的第一弱校验码所述虚拟机返回的第二弱校验码进行第一匹配;
当所述第一匹配失败时,确定所述匹配失败;
当所述第一匹配成功时,将对应所述第一弱校验码的第一强校验码与对应所述第二弱校验码的第二强校验码进行第二匹配;
当所述第二匹配失败时,确定所述匹配失败。
上述方案中,所述虚拟机基于所述记录文件生成校验码,包括:
读取所述记录文件中的数据;
按固定长度的字节对读取的所述数据进行数据块划分;
针对划分得到的每个数据块生成相应的校验码。
上述方案中,所述基于所获取的所述第一脏数据,对创建所述虚拟机的所述磁盘数据进行更新,包括:
发送所述第一脏数据至所述虚拟机,以使所述虚拟机基于所述第一脏数据进行第一数据更新;
获取实现所述第一数据更新过程中,所述PM运行程序所产生的第二脏数据;
发送所述第二脏数据至所述虚拟机,以使所述虚拟机基于所述第二脏数据进行第二数据更新;
以此类推,直至获取第N脏数据,停止运行所述程序并发送所述第N脏数据至所述虚拟机,以使所述虚拟机基于所述第N脏数据进行第N数据更新;
其中,所述第N脏数据的数据大小小于预设的数据阈值。
上述方案中,所述获取第N脏数据之后,所述方法还包括:
发送停止运行所述程序的请求给所述虚拟机,以获取所述虚拟机返回的对应所述请求的响应。
上述方案中,所述虚拟机基于所述第一脏数据进行第一数据更新,包括:
创建第一临时文件;
将所述第一脏数据及所述虚拟机存储的第一数据写入所述第一临时文件,形成第二临时文件;
其中,所述第一数据为对应所述程序的文件中除第一脏数据对应的文件偏移量以外的数据;
使用所述第二临时文件替换所述虚拟机存储的对应所述程序的文件。
上述方案中,所述形成第二临时文件之后,所述方法还包括:
计算所述第二临时文件的整体校验码;
确定所述第二临时文件的整体校验码与对应所述程序的文件的整体校验码相匹配。
上述方案中,所述方法还包括:
将所述PM的操作系统的类型、版本信息与指定的所述虚拟机的操作系统的类型、版本信息进行比较;
确定所述PM的操作系统的类型与所述指定的所述虚拟机的操作系统的类型相同,但所述PM的操作系统的版本与所述指定的所述虚拟机的版本不同时,更新所述虚拟机的操作系统对应的驱动。
上述方案中,所述方法还包括:
比较所述PM的操作系统对应的驱动版本与指定的所述虚拟机的操作系统对应的驱动版本之间的差异;
确定所述差异满足预设的驱动更新条件。
上述方案中,所述更新所述虚拟机的操作系统对应的驱动,包括:
获取所述PM的操作系统对应的驱动与指定的所述虚拟机的操作系统对应的驱动的差异文件;
同步所述差异文件至所述虚拟机,以基于所述差异文件更新所述虚拟机的操作系统对应的驱动。
本发明实施例还提供了一种物理机到虚拟机迁移装置,所述装置包括:
处理模块,用于将PM的磁盘数据传输至服务器;所述磁盘数据供所述服务器基于所述PM的磁盘数据创建并启动虚拟机;
获取模块,用于获取传输所述PM的磁盘数据过程中所述PM运行程序所产生的第一脏数据;
更新模块,用于基于所获取的所述第一脏数据,对创建所述虚拟机的所述磁盘数据进行更新;
控制模块,用于基于更新后的所述虚拟机的所述磁盘数据,控制所述虚拟机接管所述PM所运行的所述程序。
上述方案中,所述获取模块,还用于在传输所述PM的磁盘数据过程中,对所述PM运行所述程序对应的文件进行监控,形成记录文件;
基于所述记录文件,获取所述PM运行所述程序所产生的第一脏数据。
上述方案中,所述更新模块,还用于发送所述第一脏数据至所述虚拟机,以使所述虚拟机基于所述第一脏数据进行第一数据更新;
获取实现所述第一数据更新过程中,所述PM运行程序所产生的第二脏数据;
发送所述第二脏数据至所述虚拟机,以使所述虚拟机基于所述第二脏数据进行第二数据更新;
以此类推,直至获取第N脏数据,停止运行所述程序并发送所述第N脏数据至所述虚拟机,以使所述虚拟机基于所述第N脏数据进行第N数据更新;
其中,所述第N脏数据的数据大小小于预设的数据阈值。
上述方案中,还包括:
过滤模块,用于将所述PM的操作系统的类型、版本信息与指定的所述虚拟机的操作系统的类型、版本信息进行比较;
确定所述PM的操作系统的类型与所述指定的所述虚拟机的操作系统的类型相同,但所述PM的操作系统的版本与所述指定的所述虚拟机的版本不同时,更新所述虚拟机的操作系统对应的驱动。
本发明实施例还提供了一种物理机到虚拟机迁移装置,所述装置包括:
存储器,配置为存储可执行程序;
处理器,配置为执行所述存储器中存储的可执行程序时,实现上述的P2V迁移方法。
本发明实施例还提供了一种存储介质,存储有可执行程序,所述可执行程序被处理器执行时,实现上述的P2V迁移方法。
应用本发明实施例提供的P2V迁移方法、装置及存储介质,通过对创建所述虚拟机的所述磁盘数据进行更新,实现PM和虚拟机的数据同步,在实现P2V迁移的整个过程中,仅需在虚拟机接管PM所运行的程序时中断PM所运行的程序,对该程序的影响小,用户体验高。
附图说明
图1为本发明实施例提供的P2V迁移方法流程示意图一;
图2为本发明实施例提供的P2V迁移方法流程示意图二;
图3为本发明实施例提供的P2V迁移的实现示意图;
图4为本发明实施例提供的P2V迁移方法流程示意图三;
图5为本发明实施例提供的P2V迁移方法流程示意图四;
图6为本发明实施例提供的P2V迁移方法流程示意图五;
图7为本发明实施例提供的P2V迁移装置的组成结构示意图一;
图8为本发明实施例提供的P2V迁移装置的组成结构示意图二。
具体实施方式
以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所提供的实施例仅仅用以解释本发明,并不用于限定本发明。另外,以下所提供的实施例是用于实施本发明的部分实施例,而非提供实施本发明的全部实施例,在不冲突的情况下,本发明实施例记载的技术方案可以任意组合的方式实施。
需要说明的是,本发明实施例所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序。应该理解“第一\第二\第三”区分的对象在适当情况下可以互换,以使这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
在本发明实施例中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的方法或者装置不仅包括所明确记载的要素,而且还包括没有明确列出的其他要素,或者是还包括为实施方法或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的方法或者装置中还存在另外的相关要素(例如方法中的步骤或者装置中的模块,这里的模块可以是部分电路、部分处理器、部分程序或软件等等)。
例如,本发明实施例提供的P2V迁移方法包含了一系列的步骤,但是本发明实施例提供的P2V迁移方法不限于所记载的步骤,同样地,本发明实施例提供的P2V迁移装置包括了一系列模块,但是本发明实施例提供的P2V迁移装置不限于包括所明确记载的模块,还可以包括为获取相关信息、或基于信息进行处理时所需要设置的单元。
发明人在研究过程中发现,在一实施例中,可通过如下方式实现P2V迁移:先制作源端磁盘镜像,然后将制作好的镜像放到目的端磁盘上,在目的端启动虚拟机,之后进行多次增量数据同步,每次增量同步都需要切断程序,以保证目的主机与源主机数据一致。显然,多次切断程序,对该程序的执行造成很大影响,使得用户的体验差。
为了在实现P2V迁移的同时,降低对运行程序的影响,在一实施例中,可通过如下方式实现P2V迁移:将PM的磁盘数据传输至虚拟化管理平台,以基于所述PM的磁盘数据创建并启动虚拟机;获取传输所述PM的磁盘数据过程中所述PM运行程序所产生的第一脏数据;基于所获取的所述第一脏数据,对创建所述虚拟机的所述磁盘数据进行迭代更新;基于更新后的所述虚拟机的所述磁盘数据,控制所述虚拟机接管所述PM所运行的所述程序。
对本发明进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)脏数据:文件往目的端拷贝的过程中源端程序很可能还在运行,将文件中变化的数据称之为脏数据,如仍在继续写入数据,则将新写入的数据称之为脏数据。
2)脏数据率:表示接下来一段时间内新写入数据的概率,根据之前一段时间内新写入数据的情况估计出来的预测值。脏数据率与新数据写入的速率呈正相关。
基于上述对本发明实施例中涉及的名词和术语的解释,接下来参见图1、图2,图1为本发明实施例提供的P2V迁移方法流程示意图,图2为本发明实施例提供的另一P2V迁移方法流程示意图,本发明实施例提供的P2V迁移为热迁移(在线迁移),由P2V迁移装置实现,结合图1、图2所示,本发明实施例提供的P2V迁移方法包括:
步骤101:将PM的磁盘数据传输至虚拟化管理平台,以基于所述PM的磁盘数据创建并启动虚拟机。
这里,在实际应用中,虚拟化管理平台可以通过虚拟化应用系统(VAS,Virtualization Application System)实施;VAS依赖于基于内核的虚拟机(KVM,Kernel-based Virtual Machine)实现,所述虚拟化管理平台通过在服务器上部署虚拟化的应用实现,提供了完全基于B/S架构的管理控制台,可以非常方便的管理虚拟机。PM可以为物理Linux主机。
在一实施例中,将PM的磁盘数据传输至虚拟化管理平台之前,PM可以进行系统初始化操作,创建系统全局变量(如磁盘信息、日志文件描述符等);在一实施例中,还可以启动日志记录模块,开始日志记录(如迁移过程每个步骤的结果、数据传输的情况和关键命令执行的结果),便于进行系统维护和错误查找;在一实施例中,亦可对系统异常(如网络中断、配置出错、引导程序安装出错、VAS系统异常等)进行检测,获得检测结果。
在一实施例中,物理机可以通过如下方式实现将PM的磁盘数据传输至虚拟化管理平台:响应于接收到的热迁移指令,获取PM的磁盘数据(即磁盘上所有的有效文件、原始文件),基于和虚拟化管理平台的通信连接,发送PM的磁盘数据传输至虚拟化管理平台,以使虚拟化管理平台基于所述PM的磁盘数据创建并启动虚拟机。
步骤102:获取传输所述PM的磁盘数据过程中所述PM运行程序所产生的第一脏数据。
在实际应用中,PM传输磁盘数据的同时PM上可能有程序在运行,因此,在传输磁盘数据、创建并启动虚拟机的过程中,进行数据拷贝的目录下的文件会有变化,如添加、删除、修改、属性变化、移动等,继而PM上会产生脏数据,即变化的数据。
在一实施例中,PM可以通过如下方式获取传输所述PM的磁盘数据过程中所述PM运行程序所产生的第一脏数据:
在传输PM的磁盘数据过程中,对PM运行所述程序对应的文件进行监控,形成记录文件(rec1);基于所述记录文件,获取所述PM运行所述程序所产生的第一脏数据(即发生变化的数据)。在实际应用中,通过监控可以监听一个目录的文件更新,并检测这个目录下所有文件及子目录下文件的更新,除了对发生修改的文件进行记录,还可以对指定的事件进行监听,并支持对需要监控的文件进行筛选。在一实施例中,所述记录文件为周期性的形成,即对文件的监控为周期性的监控,周期为实现一次数据同步(拷贝)为一个周期,进行下一次文件同步时,要重新对文件进行监控。
在一实施例中,基于所述记录文件,获取所述PM运行所述程序所产生的第一脏数据,可以包括:发送所述记录文件至所述虚拟机,以获得所述虚拟机基于所述记录文件生成并返回的校验码;计算对应所述程序的本地文件的校验码;将所述虚拟机返回的所述校验码与计算得到的所述校验码进行匹配,得到所述第一脏数据。
在一实施例中,将所述虚拟机返回的所述校验码与计算得到的所述校验码进行匹配,得到所述第一脏数据,可以包括:按照文件偏移量依次读取计算得到的所述校验码;分别将每次读取的校验码与所述虚拟机返回的所述校验码进行匹配;将匹配失败的数据作为所述PM运行所述程序所产生的第一脏数据。
在一实施例中,所述校验码包括强校验码及弱校验码;
相应的,分别将每次读取的校验码与所述虚拟机返回的所述校验码进行匹配,包括:将读取的第一弱校验码所述虚拟机返回的第二弱校验码进行第一匹配;当所述第一匹配失败时,确定所述匹配失败;当所述第一匹配成功时,将对应所述第一弱校验码的第一强校验码与对应所述第二弱校验码的第二强校验码进行第二匹配;当所述第二匹配失败时,确定所述匹配失败;当所述第一匹配成功且所述第二匹配成功时,确定所述匹配成功。
在一实施例中,虚拟机基于所述记录文件生成校验码,可以包括:读取所述记录文件中的数据;按固定长度的字节对读取的所述数据进行数据块划分;针对划分得到的每个数据块生成相应的校验码。
示例性地,虚拟机接收到PM发送的记录文件(rec1),读取需要同步的文件,放入一个文件列表中,然后依次读取每一个文件,把文件按固定长度的字节划分成长度相同的数据块,针对每个数据分别计算两种校验码,并存入相应数据结构中,最后将此校验码发送到PM端。PM调用系统函数打开和虚拟机的传输控制协议(TCP,Transmission ControlProtocol)通道,从通道中读取数据,把收到的校验码存入哈希表中,并进行校验码匹配,循环读取要进行同步的文件,每次循环计算数据块的弱校验码,然后在哈希表中查找是否有与之匹配的弱校验码,找到则调用函数来计算强校验并比较,若找不到则将文件偏移量加1,继续读取下一数据块。若均匹配,则比较当前匹配偏移量和上次匹配偏移量之间的距离,此间隔之间的就是不匹配数据(第一脏数据),将这些数据进行传输,之后将文件偏移加上数据块大小,继续读取下一数据块。
步骤103:基于所获取的所述第一脏数据,对创建所述虚拟机的所述磁盘数据进行更新。
在一实施例中,PM可通过如下方式实现基于所获取的所述第一脏数据,对创建所述虚拟机的所述磁盘数据进行更新:
发送所述第一脏数据至所述虚拟机,以使所述虚拟机基于所述第一脏数据进行第一数据更新;获取实现第一数据更新过程中,PM运行程序所产生的第二脏数据;发送所述第二脏数据至所述虚拟机,以使所述虚拟机基于所述第二脏数据进行第二数据更新;以此类推,直至获取第N脏数据,停止运行所述程序并发送所述第N脏数据至所述虚拟机,以使所述虚拟机基于所述第N脏数据进行第N数据更新;其中,所述第N脏数据的数据大小小于预设的数据阈值,或者获取第N脏数据后的脏数据率小于预设阈值。
这里,获取第二脏数据、第三脏数据…第N脏数据的方式与获取第一脏数据的方式相同,第N脏数据基于记录文件recN得到。
示例性地,参见图2,在第一轮数据传输过程中,同时PM的程序继续运行,传输过程中产生的所有文件的变化全部记录到文件rec1中。随后,rec1被传输到目标虚拟机来更新文件,文件更新过程中虚拟机产生了第二个记录文件rec2,接下来的迭代过程总是拷贝上一轮文件更新过程中产生的记录文件。由于记录传输和文件更新的速度很快,PM的记录文件的大小很快就降到很小的数量级,经过几轮的数据传输之后,当PM的记录文件减小到系统设置的一个阈值V时(注:阈值可以事先设定,衡量指标是记录文件中更新记录的多少,即文件变化的程度),基于当前的记录文件得到第N脏数据。
在一实施例中,虚拟机基于第一脏数据进行第一数据更新,可以包括:
创建第一临时文件;将第一脏数据及所述虚拟机存储的第一数据写入所述第一临时文件,形成第二临时文件;其中,所述第一数据为对应所述程序的文件中除第一脏数据对应的文件偏移量以外的数据;使用第二临时文件替换虚拟机存储的对应所述程序的文件。
在一实施例中,形成第二临时文件之后,还可以包括:
计算所述第二临时文件的整体校验码;确定所述第二临时文件的整体校验码与对应所述程序的文件的整体校验码相匹配。
以基于第一脏数据进行数据更新为例进行说明,虚拟机接收到PM发送的第一脏数据之后,新建一个临时文件(第一临时文件),然后读取第一脏数据,如果是匹配的记录,则从本地文件中读取并写入临时文件,如果是不匹配的记录,这将一脏数据中的内容根据偏移量写入临时文件。这样可以从头到尾构建完成临时文件。临时文件生成后,计算整个文件的弱校验码,并和从PM端接收到的原文件的整体校验码进行比较,如果一致,则使用此临时文件替换本地文件;如果不一致,则删除临时文件,对此文件进行一次同步。
在一实施例中,获取第N脏数据之后,还可以包括:
发送停止运行所述程序的请求给所述虚拟机,以获取所述虚拟机返回的对应所述请求的响应。
示例性地,当获得第N脏数据之后,PM询问目的虚拟机停止-拷贝阶段是否可以立即执行(即发送停止运行所述程序的请求),如果虚拟机还没有处理完上一轮以前的文件更新工作,虚拟机发送给PM一个消息延迟停止-拷贝阶段的执行,那么,PM继续执行数据的迭代传输,虚拟机文件更新的速率很快,通常最终目的虚拟机的文件状态会追上PM的文件状态,如果经过多次询问仍无法达到停止-拷贝的条件,强行进入停止-拷贝阶段,可能导致相对长的停机时间。当停止-拷贝阶段开始时,物理机停止运行所述程序,虚拟机基于第N脏数据进行数据更新,目的虚拟机和物理机上的文件状态就完全一致了,为了确保数据的一致性,对所有文件进行最后一次文件同步。
步骤104:基于更新后的所述虚拟机的所述磁盘数据,控制所述虚拟机基于所述程序的进度继续运行所述程序。
在实际实施时,PM保存自身正在运行的程序到文件中,并发送文件至虚拟机,PM中断所运行的程序,虚拟机基于接收到的文件依次启动各程序,修改虚拟机IP地址为源PM地址,启动对外提供服务(程序)的服务进程,并广播自身互联网协议地址(IP,InternetProtocol Address)地址,虚拟机就可以接管源PM的程序。
在一实施例中,还包括:将所述PM的操作系统的类型、版本信息与指定的所述虚拟机的操作系统的类型、版本信息进行比较;确定所述PM的操作系统的类型与所述指定的所述虚拟机的操作系统的类型相同,但所述PM的操作系统的版本与所述指定的所述虚拟机的版本不同时,更新所述虚拟机的操作系统对应的驱动。其中,还包括:
比较所述PM的操作系统对应的驱动版本与指定的所述虚拟机的操作系统对应的驱动版本之间的差异;确定所述差异满足预设的驱动更新条件。
在一实施例中,更新所述虚拟机的操作系统对应的驱动,可以包括:
获取所述PM的操作系统对应的驱动与指定的所述虚拟机的操作系统对应的驱动的差异文件;同步所述差异文件至所述虚拟机,以基于所述差异文件更新所述虚拟机的操作系统对应的驱动。
示例性地,PM获取自身的操作系统类型、版本信息,以及用户指定的虚拟机(VM,Virtual Machine)端操作系统信息,如果操作系统类型不一致则报错“不同操作系统无法迁移”。若类型一致但版本不一致,检查两个操作系统驱动程序版本的差异,根据用户预选指定的条件来判断是否需要升级驱动程序版本,如驱动程序发布时间间隔半年内等,如果需要升级驱动程序版本,则停止对应的服务,卸载原驱动版本,安装新驱动版本,绑定对应的设备;如果不需要升级驱动程序版本,循环扫描VM端绑定的设备,对每一个设备生成过滤设备并绑定,绑定所有设备后,重启对应的服务。
在一实施例中,上述物理机到虚拟机迁移的实现主要可概括为三部分,即文件监控、文件同步及程序接管;图3为本发明实施例提供的P2V迁移的实现示意图,参见图3,其中:
文件监控:对迁移或同步过程中发生变化的文件进行监控,并记录相关变化,一轮文件同步结束后,将记录文件发送给目的虚拟机端,进行文件同步。
文件同步:可分为源PM端和目的虚拟机端两部分,C/S结构。其中,目的虚拟机端作为client,PM端作为server。Client接收从server发送过来的记录文件,发起同步操作,计算并发送需同步文件的校验码,server接收client端的文件校验码并计算本地文件校验码和校验码匹配,计算出差异文件,发送给client,client接收到差异文件后对文件进行恢复,一次同步过程完成。
程序接管:最后一次文件同步完成后,对目的虚拟机进行相关配置和操作,使其接管PM程序。
应用本发明上述实施例,在迁移开始之后,程序在源端(PM)不停止运行,在目的端申请运行虚拟机所需的资源,迁移通过循环迭代拷贝,将源端数据发送到目的端,第一轮迭代发送所有数据,同时通过监控获取第一轮迭代过程中所有变化的数据,接下来的每一轮迭代发送上一轮迭代过程中变化的数据(脏数据),经过多次迭代,最终脏数据率低于预先设定的阈值后终止迭代,进入停机阶段,进行最后一轮迭代后,启动目的端的虚机及其上的程序,并终止源端虚机上程序的运行。通过上述实施例,能将程序停机时间和对程序的影响缩短到最小。
相关技术中,只能支持同版本操作系统迁移,迁移之前操作系统与迁移后一样,无法实现迁移后操作系统版本的提升(比如有的程序迁移前是Win8操作系统,迁移后要求升到Win10操作系统,因为高版本操作系统API接口更丰富,安全漏洞更少),而应用上述实施例,实现了从低版本操作系统到高版本操作系统的迁移,并且通过驱动过滤模块屏蔽了底层驱动不同版本对于上层的程序差异,并能自动升级驱动程序的版本,提高了虚拟化环境下程序开发的效率和体验。
图4为本发明实施例提供的P2V迁移方法流程示意图,本发明实施例提供的P2V迁移为冷迁移,由P2V迁移装置实现,在实际实施时,冷迁移可以包括本地迁移和远程迁移两种方式,接下来基于图4,对本发明实施例的本地迁移进行说明,包括:
步骤201:PM获取物理机信息。
这里,在实际实施时,响应于用户的冷迁移指令,要在VAS中创建和物理机相同的虚拟机,首先要知道物理机的相关信息,如中央处理器(CPU,Central Processing Unit)、内存、磁盘容量,当然也可以手工进行相应修改或者在虚拟机创建完成后进行修改,首先通过执行shell脚本获取这些信息并存放到本地文件中,然后再把这些信息读取到程序中使用数据结构进行存储,在物理主机端通过这些信息生成相应命令直接在VAS主机中执行。
在一实施例中,P2V迁移方法可以由P2V迁移系统完成,P2V迁移系统包括一台X86服务器和一台台式机,X86服务器上安装VAS,台式机安装Linux操作系统,程序运行在物理主机端,在VAS主机端执行的是shell脚本,通过物理主机端进行控制。
步骤202:在所述PM上创建镜像文件,并挂载所述镜像文件。
这里,要在本地磁盘中生成磁盘镜像文件,所以要选择有合适大小的磁盘作为工作域,也就是磁盘镜像文件存储路径。在一实施例中,创建镜像文件之前,需要选取镜像文件工作域,具体的可以通过如下方式实现:
通过脚本执行相应命令,遍历所有磁盘分区剩余空间大小,根据所需磁盘空间的大小,找出满足目标虚拟磁盘空间大小的所有物理磁盘设备及其挂载目录,将结果存放到文件中,之后显示所有可选设备,再选择一个磁盘来创建工作域,如果当前系统内没有磁盘可以满足虚拟磁盘大小,则报错退出。
在实际应用中,选取了镜像文件工作域后,在此工作域下创建镜像文件(一个或多个),一个镜像文件就代表一个磁盘,因为要对此镜像文件进行分区操作,所以创建的文件能够包含完整的文件系统,这就要用到loop设备。在Linux系统里,loop设备是一种伪设备(pseudo-device),或者说是仿真设备,它能使我们像块设备一样访问一个文件。在使用之前,一个loop设备必须要和一个文件进行连接。如果这个文件包含有一个完整的文件系统,那么这个文件就可以像一个磁盘设备一样被mount(挂载)起来。
步骤203:复制所述PM的磁盘数据至所述镜像文件。
在一实施例中,创建并挂载所述镜像文件之后,需要对挂载的文件进行磁盘分区、格式化和创建逻辑卷管理(LVM,Logical Volume Manager)分区,之后挂载磁盘,并将本机磁盘中根目录下的数据拷贝到磁盘文件中;文件拷贝以根目录下的子目录为单位。
在一实施例中,还可以包括:刷新引导程序;具体地,在实际实施时,可通过如下方式实现:
a:加载SeaBIOS设备信息并进行自我测试(注:KVM虚拟机是用SeaBIOS软件模拟BIOS实现类似的功能),并依据配置信息取得第一个可启动装置;
b:读取并运行第一个启动装置内MBR的bootLoader(一般是grub程序),初始化相关工作,如修改scsi驱动程序;
c:依据boot loader的配置加载Kernel,Kernel会开始检测硬件与加载驱动程序,获取系统启动磁盘的设备名,设置启动分区;
d:在硬件驱动成功后,Kernel会主动调用init程序,初始化系统,然后启动各种服务。
步骤204:发送包含有所述PM的磁盘数据的所述镜像文件至所述虚拟化管理平台,以基于包含有所述PM的磁盘数据的所述镜像文件创建并启动虚拟机。
这里,在实际实施时,可手动将镜像文件拷贝至VAS主机的相关目录下,在管理页面上新建虚拟机,选择此镜像文件作为虚拟机存储,启动方式选择系统盘的镜像文件,启动虚拟机进行相关配置即可使用。
图5为本发明实施例提供的P2V迁移方法流程示意图,图6为本发明实施例提供的另一P2V迁移方法流程示意图,本发明实施例提供的P2V迁移为冷迁移,由P2V迁移装置实现,在实际实施时,冷迁移可以包括本地迁移和远程迁移两种方式,接下来结合图5、图6,对本发明实施例的远程迁移进行说明,包括:
步骤301:获取所述虚拟化管理平台的虚拟机相关信息。
这里,在实际实施时,相比本地迁移,由于远程迁移牵扯到不同主机之间文件的传输,所以流程相对复杂,为保持数据的一致性,在迁移过程中要把PM上的对外服务全部停掉(关闭对外网络)。
在一实施例中,P2V迁移方法可以由P2V迁移系统完成,P2V迁移系统包括一台X86服务器和一台台式机,X86服务器上安装VAS,台式机安装Linux操作系统,程序运行在物理主机端,在VAS主机端执行的是shell脚本,通过物理主机端进行控制。
在实际实施时,响应于用户的冷迁移指令,在获取所述虚拟化管理平台的虚拟机相关信息之前,可以获取物理机相关信息(CPU、内存等)并显示。
在一实施例中,可通过如下方式获取所述虚拟化管理平台的虚拟机相关信息:建立与所述虚拟化管理平台(VAS)的通信连接;基于建立的所述通信连接,发送脚本文件至所述虚拟化管理平台;控制所述虚拟化管理平台运行所述脚本文件,以返回所述虚拟化管理平台的虚拟机相关信息。
其中,在实际应用中,根据输入的VAS主机IP地址、用户名、密码等信息建立和VAS的通信连接。
在一实施例中,虚拟机相关信息可以包括存储池、虚拟机列表等信息。
步骤302:基于所获取的所述虚拟机相关信息,生成特定格式的文件。
在一实施例中,当PM获得VAS返回的虚拟机相关信息后,用户根据可选项指定存储池和虚拟机名称,并为虚拟机设置临时IP地址,根据特定格式生成创建虚拟机所需要的XML文件(特定格式的文件);其中,如果选择的存储池空间容量小于源物理机的磁盘空间容量,提示用户选择合适的存储池,最终生成的镜像文件就在该存储池下。
在一实施例中,还可包括:PM端控制VAS端执行脚本,获取VAS主机的CPU核数、总内存大小、已存在虚拟机名列表等信息并写入文件中,然后PM端获取这些文件,用户根据提示选择修改或者不修改这些信息(CPU内存虚拟机名等),但是如果出现物理机CPU核数大于VAS主机CPU核数、物理机内存大于VAS主机内存、物理机主机名在VAS中已存在等情况,则必须修改这些信息。
在一实施例中,还可包括:配置迁移过程中相关的网络信息,如IP地址、子网掩码、网关,输入的信息保存在变量中,这里的网络配置只是在迁移时使用,设置辅助虚拟机的IP地址、目的虚拟机的最终IP由用户配置或设置为源物理机的网络地址。
步骤303:发送所述特定格式的文件至虚拟化管理平台。
步骤304:控制所述虚拟化管理平台创建并启动所述虚拟机。
在一实施例中,可通过如下方式控制所述虚拟化管理平台创建并启动所述虚拟机:控制所述虚拟化管理平台基于所述虚拟机相关信息创建辅助虚拟机;建立与所述辅助虚拟机的通信连接;基于所述辅助虚拟机的通信连接,发送所述PM的磁盘数据至所述辅助虚拟机,以使所述辅助虚拟机基于所述PM的磁盘数据创建并启动所述虚拟机。
示例性地,P2V迁移装置远程控制虚拟化管理平台(VAS)基于虚拟机相关信息创建辅助虚拟机,从一个ISO文件中启动,其中运行的是一个微型的linux系统,通过这个Linux系统与PM建立连接,然后根据得到的PM的磁盘分区信息创建磁盘分区、格式化和创建LVM分区。通过建立的与辅助虚拟机的通信连接登录到辅助虚拟机后,首先要把密钥文件发送过去,然后将要执行的脚本文件和分区信息等发送到辅助虚拟机指定目录下。
在一实施例中,发送所述PM的磁盘数据至所述辅助虚拟机之前,还可以包括:通过辅助虚拟机对磁盘进行分区,并进行PM文件的备份和引导程序的安装,相应的操作包括创建分区、数据备份和刷新引导程序:
1)创建分区,对磁盘进行分区前要将磁盘挂载到操作系统中,远程迁移直接把磁盘挂载到辅助虚拟机中,P2V工具再根据磁盘分区信息依次对磁盘进行分区。
2)数据备份,磁盘分区完成后,将磁盘进行挂载,然后将本机磁盘中根目录下的数据拷贝到磁盘文件中。文件拷贝以根目录下的子目录为单位。
3)刷新引导程序,包括如下:
a:加载SeaBIOS设备信息并进行自我测试(注:KVM虚拟机是用SeaBIOS软件模拟BIOS实现类似的功能),并依据配置信息取得第一个可启动装置;
b:读取并运行第一个启动装置内MBR的bootLoader(一般是grub程序),初始化相关工作,如修改scsi驱动程序;
c:依据boot loader的配置加载Kernel,Kernel会开始检测硬件与加载驱动程序,获取系统启动磁盘的设备名,设置启动分区;
d:在硬件驱动成功后,Kernel会主动调用init程序,初始化系统,然后启动各种服务。
在实际应用中,依次将磁盘中的数据打包传输至辅助虚拟机并解压,然后虚拟机安装引导程序,通过重新设置,启动虚拟机(即辅助虚拟机从虚拟机的磁盘启动)。
图7为本发明实施例提供的P2V迁移装置的组成结构示意图;如图7所示,本发明实施例提供的P2V迁移装置包括:
处理模块71,用于将物理机PM的磁盘数据传输至服务器;所述磁盘数据供所述服务器基于所述PM的磁盘数据创建并启动虚拟机;
获取模块72,用于获取传输所述PM的磁盘数据过程中所述PM运行程序所产生的第一脏数据;
更新模块73,用于基于所获取的所述第一脏数据,对创建所述虚拟机的所述磁盘数据进行更新;
控制模块74,用于基于更新后的所述虚拟机的所述磁盘数据,控制所述虚拟机基于所述程序的进度继续运行所述程序。
在一实施例中,所述获取模块72,还用于在传输所述PM的磁盘数据过程中,对所述PM运行所述程序对应的文件进行监控,形成记录文件;
基于所述记录文件,获取所述PM运行所述程序所产生的第一脏数据。
在一实施例中,所述获取模块72,还用于发送所述记录文件至所述虚拟机,以获得所述虚拟机基于所述记录文件生成并返回的校验码;
计算对应所述程序的本地文件的校验码;
将所述虚拟机返回的所述校验码与计算得到的所述校验码进行匹配,得到所述第一脏数据。
在一实施例中,所述获取模块72,还用于按照文件偏移量依次读取计算得到的所述校验码;
分别将每次读取的校验码与所述虚拟机返回的所述校验码进行匹配;
将匹配失败的数据作为所述PM运行所述程序所产生的第一脏数据。
在一实施例中,所述校验码包括强校验码及弱校验码;
相应的,所述获取模块72,还用于将读取的第一弱校验码所述虚拟机返回的第二弱校验码进行第一匹配;
当所述第一匹配失败时,确定所述匹配失败;
当所述第一匹配成功时,将对应所述第一弱校验码的第一强校验码与对应所述第二弱校验码的第二强校验码进行第二匹配;
当所述第二匹配失败时,确定所述匹配失败。
在一实施例中,所述控制模块74,还用于控制所述虚拟机读取所述记录文件中的数据;
按固定长度的字节对读取的所述数据进行数据块划分;
针对划分得到的每个数据块生成相应的校验码。
在一实施例中,所述更新模块73,还用于发送所述第一脏数据至所述虚拟机,以使所述虚拟机基于所述第一脏数据进行第一数据更新;
获取实现所述第一数据更新过程中,所述PM运行程序所产生的第二脏数据;
发送所述第二脏数据至所述虚拟机,以使所述虚拟机基于所述第二脏数据进行第二数据更新;
以此类推,直至获取第N脏数据,停止运行所述程序并发送所述第N脏数据至所述虚拟机,以使所述虚拟机基于所述第N脏数据进行第N数据更新;
其中,所述第N脏数据的数据大小小于预设的数据阈值。
在一实施例中,所述更新模块73,还用于发送停止运行所述程序的请求给所述虚拟机,以获取所述虚拟机返回的对应所述请求的响应。
在一实施例中,所述更新模块73,还用于创建第一临时文件;
将所述第一脏数据及所述虚拟机存储的第一数据写入所述第一临时文件,形成第二临时文件;
其中,所述第一数据为对应所述程序的文件中除第一脏数据对应的文件偏移量以外的数据;
使用所述第二临时文件替换所述虚拟机存储的对应所述程序的文件。
在一实施例中,所述更新模块73,还用于计算所述第二临时文件的整体校验码;
确定所述第二临时文件的整体校验码与对应所述程序的文件的整体校验码相匹配。
在一实施例中,还包括:
过滤模块75,用于将所述PM的操作系统的类型、版本信息与指定的所述虚拟机的操作系统的类型、版本信息进行比较;
确定所述PM的操作系统的类型与所述指定的所述虚拟机的操作系统的类型相同,但所述PM的操作系统的版本与所述指定的所述虚拟机的版本不同时,更新所述虚拟机的操作系统对应的驱动。
在一实施例中,所述过滤模块75,还用于比较所述PM的操作系统对应的驱动版本与指定的所述虚拟机的操作系统对应的驱动版本之间的差异;
确定所述差异满足预设的驱动更新条件。
在一实施例中,所述过滤模块75,还用于获取所述PM的操作系统对应的驱动与指定的所述虚拟机的操作系统对应的驱动的差异文件;
同步所述差异文件至所述虚拟机,以基于所述差异文件更新所述虚拟机的操作系统对应的驱动。
图8为本发明实施例提供的P2V迁移装置的组成结构示意图;如图8所示,本发明实施例提供的P2V迁移装置包括:
处理器81、存储器82以及至少一个外部通信接口83;所述处理器81、存储器82以及外部通信接口83均通过总线84连接;其中,
存储器82,用于存储可执行程序821;
处理器81,用于通过执行所述存储器中存储的可执行程序时实现:
将物理机PM的磁盘数据传输至服务器;所述磁盘数据供所述服务器基于所述PM的磁盘数据创建并启动虚拟机;获取传输所述PM的磁盘数据过程中所述PM运行程序所产生的第一脏数据;基于所获取的所述第一脏数据,对创建所述虚拟机的所述磁盘数据进行迭代更新;基于更新后的所述虚拟机的所述磁盘数据,控制所述虚拟机基于所述程序的进度继续运行所述程序,即控制所述虚拟机接管所述PM所运行的所述程序。
相应的,本发明实施例还提供了一种可读存储介质,所述可读存储介质存储有可执行程序;
所述可执行程序,用于被处理器执行时实现:
将物理机PM的磁盘数据传输至虚拟化管理平台,以基于所述PM的磁盘数据创建并启动虚拟机;获取传输所述PM的磁盘数据过程中所述PM运行程序所产生的第一脏数据;基于所获取的所述第一脏数据,对创建所述虚拟机的所述磁盘数据进行迭代更新;基于更新后的所述虚拟机的所述磁盘数据,控制所述虚拟机接管所述PM所运行的所述程序。
这里需要指出的是:以上涉及P2V迁移装置的描述,与上述方法描述是类似的,同方法的有益效果描述,不做赘述。对于本发明所述P2V迁移装置实施例中未披露的技术细节,请参照本发明方法实施例的描述。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (15)
1.一种物理机到虚拟机P2V迁移方法,其特征在于,所述方法包括:
将物理机PM的磁盘数据传输至服务器;所述磁盘数据供所述服务器基于所述PM的磁盘数据创建并启动虚拟机;
获取传输所述PM的磁盘数据过程中所述PM运行程序所产生的第一脏数据;
基于所获取的所述第一脏数据,对创建所述虚拟机的所述磁盘数据进行更新;
基于更新后的所述虚拟机的所述磁盘数据,控制所述虚拟机基于所述程序的进度继续运行所述程序;
所述获取传输所述PM的磁盘数据过程中所述PM运行程序所产生的第一脏数据,包括:
在传输所述PM的磁盘数据过程中,对所述PM运行所述程序对应的文件进行监控,形成记录文件;
基于所述记录文件,获取所述PM运行所述程序所产生的第一脏数据;
所述基于所述记录文件,获取所述PM运行所述程序所产生的第一脏数据,包括:
发送所述记录文件至所述虚拟机,以获得所述虚拟机基于所述记录文件生成并返回的校验码;
计算对应所述程序的本地文件的校验码;
将所述虚拟机返回的所述校验码与计算得到的所述校验码进行匹配,得到所述第一脏数据;
所述将所述虚拟机返回的所述校验码与计算得到的所述校验码进行匹配,得到所述第一脏数据,包括:
按照文件偏移量依次读取计算得到的所述校验码;
分别将每次读取的校验码与所述虚拟机返回的所述校验码进行匹配;
将匹配失败的数据作为所述PM运行所述程序所产生的第一脏数据。
2.如权利要求1 所述的方法,其特征在于,所述校验码包括强校验码及弱校验码;
相应的,所述分别将每次读取的校验码与所述虚拟机返回的所述校验码进行匹配,包括:
将读取的第一弱校验码所述虚拟机返回的第二弱校验码进行第一匹配;
当所述第一匹配失败时,确定所述匹配失败;
当所述第一匹配成功时,将对应所述第一弱校验码的第一强校验码与对应所述第二弱校验码的第二强校验码进行第二匹配;
当所述第二匹配失败时,确定所述匹配失败。
3.如权利要求1所述的方法,其特征在于,所述虚拟机基于所述记录文件生成校验码,包括:
读取所述记录文件中的数据;
按固定长度的字节对读取的所述数据进行数据块划分;
针对划分得到的每个数据块生成相应的校验码。
4.如权利要求1所述的方法,其特征在于,所述基于所获取的所述第一脏数据,对创建所述虚拟机的所述磁盘数据进行更新,包括:
发送所述第一脏数据至所述虚拟机,以使所述虚拟机基于所述第一脏数据进行第一数据更新;
获取实现所述第一数据更新过程中,所述PM运行程序所产生的第二脏数据;
发送所述第二脏数据至所述虚拟机,以使所述虚拟机基于所述第二脏数据进行第二数据更新;
以此类推,直至获取第N脏数据,停止运行所述程序并发送所述第N脏数据至所述虚拟机,以使所述虚拟机基于所述第N脏数据进行第N数据更新;
其中,所述第N脏数据的数据大小小于预设的数据阈值。
5.如权利要求4所述的方法,其特征在于,所述获取第N脏数据之后,所述方法还包括:
发送停止运行所述程序的请求给所述虚拟机,以获取所述虚拟机返回的对应所述请求的响应。
6.如权利要求4所述的方法,其特征在于,所述虚拟机基于所述第一脏数据进行第一数据更新,包括:
创建第一临时文件;
将所述第一脏数据及所述虚拟机存储的第一数据写入所述第一临时文件,形成第二临时文件;
其中,所述第一数据为对应所述程序的文件中除第一脏数据对应的文件偏移量以外的数据;
使用所述第二临时文件替换所述虚拟机存储的对应所述程序的文件。
7.如权利要求6所述的方法,其特征在于,所述形成第二临时文件之后,所述方法还包括:
计算所述第二临时文件的整体校验码;
确定所述第二临时文件的整体校验码与对应所述程序的文件的整体校验码相匹配。
8.如权利要求1所述的方法,其特征在于,所述方法还包括:
将所述PM的操作系统的类型、版本信息与指定的所述虚拟机的操作系统的类型、版本信息进行比较;
确定所述PM的操作系统的类型与所述指定的所述虚拟机的操作系统的类型相同,但所述PM的操作系统的版本与所述指定的所述虚拟机的版本不同时,更新所述虚拟机的操作系统对应的驱动。
9.如权利要求8所述的方法,其特征在于,所述方法还包括:
比较所述PM的操作系统对应的驱动版本与指定的所述虚拟机的操作系统对应的驱动版本之间的差异;
确定所述差异满足预设的驱动更新条件。
10.如权利要求8所述的方法,其特征在于,所述更新所述虚拟机的操作系统对应的驱动,包括:
获取所述PM的操作系统对应的驱动与指定的所述虚拟机的操作系统对应的驱动的差异文件;
同步所述差异文件至所述虚拟机,以基于所述差异文件更新所述虚拟机的操作系统对应的驱动。
11.一种物理机到虚拟机P2V迁移装置,其特征在于,所述装置包括:
处理模块,用于将物理机PM的磁盘数据传输至服务器;所述磁盘数据供所述服务器基于所述PM的磁盘数据创建并启动虚拟机;
获取模块,用于获取传输所述PM的磁盘数据过程中所述PM运行程序所产生的第一脏数据;
更新模块,用于基于所获取的所述第一脏数据,对创建所述虚拟机的所述磁盘数据进行更新;
控制模块,用于基于更新后的所述虚拟机的所述磁盘数据,控制所述虚拟机接管所述PM所运行的所述程序;
所述获取模块,还用于在传输所述PM的磁盘数据过程中,对所述PM运行所述程序对应的文件进行监控,形成记录文件;
基于所述记录文件,获取所述PM运行所述程序所产生的第一脏数据,具体包括:
发送所述记录文件至所述虚拟机,以获得所述虚拟机基于所述记录文件生成并返回的校验码;
计算对应所述程序的本地文件的校验码;
将所述虚拟机返回的所述校验码与计算得到的所述校验码进行匹配,得到所述第一脏数据;
所述获取模块,还用于按照文件偏移量依次读取计算得到的所述校验码;分别将每次读取的校验码与所述虚拟机返回的所述校验码进行匹配;将匹配失败的数据作为所述PM运行所述程序所产生的第一脏数据。
12.如权利要求11所述的装置,其特征在于,
所述更新模块,还用于发送所述第一脏数据至所述虚拟机,以使所述虚拟机基于所述第一脏数据进行第一数据更新;
获取实现所述第一数据更新过程中,所述PM运行程序所产生的第二脏数据;
发送所述第二脏数据至所述虚拟机,以使所述虚拟机基于所述第二脏数据进行第二数据更新;
以此类推,直至获取第N脏数据,停止运行所述程序并发送所述第N脏数据至所述虚拟机,以使所述虚拟机基于所述第N脏数据进行第N数据更新;
其中,所述第N脏数据的数据大小小于预设的数据阈值。
13.如权利要求11所述的装置,其特征在于,还包括:
过滤模块,用于将所述PM的操作系统的类型、版本信息与指定的所述虚拟机的操作系统的类型、版本信息进行比较;
确定所述PM的操作系统的类型与所述指定的所述虚拟机的操作系统的类型相同,但所述PM的操作系统的版本与所述指定的所述虚拟机的版本不同时,更新所述虚拟机的操作系统对应的驱动。
14.一种物理机到虚拟机P2V迁移装置,其特征在于,所述装置包括:
存储器,配置为存储可执行程序;
处理器,配置为执行所述存储器中存储的可执行程序时,实现如权利要求1至10任一项所述的P2V迁移方法。
15.一种存储介质,其特征在于,存储有可执行程序,所述可执行程序被处理器执行时,实现如权利要求1至10任一项所述的P2V迁移方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810308312.7A CN110347483B (zh) | 2018-04-08 | 2018-04-08 | 物理机到虚拟机迁移方法、装置及存储介质 |
EP19784957.3A EP3761173A4 (en) | 2018-04-08 | 2019-04-02 | METHOD AND DEVICE FOR PHYSICAL TO VIRTUAL MIGRATION AND STORAGE MEDIUM |
PCT/CN2019/080977 WO2019196705A1 (zh) | 2018-04-08 | 2019-04-02 | 物理机到虚拟机迁移方法、装置及存储介质 |
US17/041,566 US11886902B2 (en) | 2018-04-08 | 2019-04-02 | Physical-to-virtual migration method and apparatus, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810308312.7A CN110347483B (zh) | 2018-04-08 | 2018-04-08 | 物理机到虚拟机迁移方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110347483A CN110347483A (zh) | 2019-10-18 |
CN110347483B true CN110347483B (zh) | 2021-05-11 |
Family
ID=68163408
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810308312.7A Active CN110347483B (zh) | 2018-04-08 | 2018-04-08 | 物理机到虚拟机迁移方法、装置及存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11886902B2 (zh) |
EP (1) | EP3761173A4 (zh) |
CN (1) | CN110347483B (zh) |
WO (1) | WO2019196705A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112486313B (zh) * | 2019-09-11 | 2024-03-26 | 华为技术有限公司 | 终端的节电方法和装置 |
CN111651238A (zh) * | 2020-06-03 | 2020-09-11 | 上海英方软件股份有限公司 | 一种虚拟机保护中有效数据获取系统及方法 |
CN111913753A (zh) * | 2020-07-10 | 2020-11-10 | 江苏安超云软件有限公司 | 一种windows系统云迁移中启动方式的变更方法及系统 |
CN113259473B (zh) * | 2021-06-08 | 2021-11-05 | 广东睿江云计算股份有限公司 | 一种自适应云数据迁移的方法 |
CN113342471A (zh) * | 2021-06-25 | 2021-09-03 | 航天云网科技发展有限责任公司 | 虚拟机迁移方法、系统及电子设备 |
CN113641452A (zh) * | 2021-08-16 | 2021-11-12 | 付睿智 | 基于p2v的数据热迁移方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727392A (zh) * | 2009-12-29 | 2010-06-09 | 浪潮电子信息产业股份有限公司 | 一种排查操作系统和软件故障的方法 |
CN102081552A (zh) * | 2009-12-01 | 2011-06-01 | 华为技术有限公司 | 一种物理机到虚拟机的在线迁移方法、装置和系统 |
CN104503823A (zh) * | 2014-12-22 | 2015-04-08 | 国家电网公司 | 基于oem操作系统的p2v迁移及配置方法 |
CN104965757A (zh) * | 2015-01-21 | 2015-10-07 | 深圳市腾讯计算机系统有限公司 | 虚拟机热迁移的方法、虚拟机迁移管理装置及系统 |
CN106569881A (zh) * | 2015-10-09 | 2017-04-19 | 中国石油化工股份有限公司 | 一种基于kvm的数据迁移方法及系统 |
CN106897137A (zh) * | 2017-04-19 | 2017-06-27 | 南京大学 | 一种基于虚拟机热迁移的物理机与虚拟机映射转换方法 |
CN107704314A (zh) * | 2017-11-09 | 2018-02-16 | 北京百度网讯科技有限公司 | 用于迁移虚拟机的方法和装置 |
CN107797878A (zh) * | 2016-09-06 | 2018-03-13 | 阿里巴巴集团控股有限公司 | 虚拟机热迁移处理方法及系统 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7653794B2 (en) | 2006-05-08 | 2010-01-26 | Microsoft Corporation | Converting physical machines to virtual machines |
US8234641B2 (en) | 2006-10-17 | 2012-07-31 | Managelq, Inc. | Compliance-based adaptations in managed virtual systems |
US8458695B2 (en) | 2006-10-17 | 2013-06-04 | Manageiq, Inc. | Automatic optimization for virtual systems |
US7925850B1 (en) * | 2007-02-16 | 2011-04-12 | Vmware, Inc. | Page signature disambiguation for increasing the efficiency of virtual machine migration in shared-page virtualized computer systems |
CN101984631A (zh) * | 2010-11-05 | 2011-03-09 | 北京世纪互联工程技术服务有限公司 | 一种Xen虚拟机安全动态迁移方法 |
CN102455942B (zh) | 2010-12-02 | 2013-09-25 | 中标软件有限公司 | 一种广域网虚拟机动态迁移方法及系统 |
EP2798486B1 (en) | 2011-12-29 | 2019-11-06 | VMware, Inc. | N-way synchronization of desktop images |
CN102981929B (zh) * | 2012-11-05 | 2015-11-25 | 曙光云计算技术有限公司 | 磁盘镜像的管理方法和系统 |
US9292330B2 (en) | 2012-11-29 | 2016-03-22 | International Business Machines Corporation | Replacing virtual machine disks |
CN104598303B (zh) | 2013-10-31 | 2018-04-10 | 中国电信股份有限公司 | 基于kvm的虚拟机间在线迁移方法与装置 |
CN104298559B (zh) * | 2014-09-30 | 2018-03-02 | 深信服科技股份有限公司 | 物理主机系统虚拟化的方法及装置 |
EP3314424A4 (en) * | 2015-06-26 | 2019-02-06 | Intel Corporation | MIGRATION TECHNIQUES OF VIRTUAL MACHINES |
JP2017049772A (ja) * | 2015-09-01 | 2017-03-09 | 富士通株式会社 | 移動制御プログラム、移動制御装置及び移動制御方法 |
WO2017138967A1 (en) * | 2016-02-12 | 2017-08-17 | Hewlett Packard Enterprise Development Lp | Creating operating system volumes |
US9936019B2 (en) * | 2016-03-16 | 2018-04-03 | Google Llc | Efficient live-migration of remotely accessed data |
CN107203564B (zh) * | 2016-03-18 | 2020-11-24 | 北京京东尚科信息技术有限公司 | 数据传输的方法、装置及系统 |
-
2018
- 2018-04-08 CN CN201810308312.7A patent/CN110347483B/zh active Active
-
2019
- 2019-04-02 US US17/041,566 patent/US11886902B2/en active Active
- 2019-04-02 EP EP19784957.3A patent/EP3761173A4/en active Pending
- 2019-04-02 WO PCT/CN2019/080977 patent/WO2019196705A1/zh active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102081552A (zh) * | 2009-12-01 | 2011-06-01 | 华为技术有限公司 | 一种物理机到虚拟机的在线迁移方法、装置和系统 |
CN101727392A (zh) * | 2009-12-29 | 2010-06-09 | 浪潮电子信息产业股份有限公司 | 一种排查操作系统和软件故障的方法 |
CN104503823A (zh) * | 2014-12-22 | 2015-04-08 | 国家电网公司 | 基于oem操作系统的p2v迁移及配置方法 |
CN104965757A (zh) * | 2015-01-21 | 2015-10-07 | 深圳市腾讯计算机系统有限公司 | 虚拟机热迁移的方法、虚拟机迁移管理装置及系统 |
CN106569881A (zh) * | 2015-10-09 | 2017-04-19 | 中国石油化工股份有限公司 | 一种基于kvm的数据迁移方法及系统 |
CN107797878A (zh) * | 2016-09-06 | 2018-03-13 | 阿里巴巴集团控股有限公司 | 虚拟机热迁移处理方法及系统 |
CN106897137A (zh) * | 2017-04-19 | 2017-06-27 | 南京大学 | 一种基于虚拟机热迁移的物理机与虚拟机映射转换方法 |
CN107704314A (zh) * | 2017-11-09 | 2018-02-16 | 北京百度网讯科技有限公司 | 用于迁移虚拟机的方法和装置 |
Non-Patent Citations (1)
Title |
---|
将物理机迁移至VMware主机;薛建等;《电脑与电信》;20150831(第4期);第81-83页 * |
Also Published As
Publication number | Publication date |
---|---|
US20210019171A1 (en) | 2021-01-21 |
EP3761173A4 (en) | 2021-04-07 |
CN110347483A (zh) | 2019-10-18 |
US11886902B2 (en) | 2024-01-30 |
WO2019196705A1 (zh) | 2019-10-17 |
EP3761173A1 (en) | 2021-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110347483B (zh) | 物理机到虚拟机迁移方法、装置及存储介质 | |
US9841966B2 (en) | Selective migration of virtualized applications | |
US11741046B2 (en) | Method and apparatus for creating system disk snapshot of virtual machine | |
US8924954B2 (en) | Application software installation method and application software installation apparatus | |
EP2765508B1 (en) | Installation method and installation device for application software | |
EP3227783B1 (en) | Live rollback for a computing environment | |
US8191063B2 (en) | Method for migrating a plurality of virtual machines by associating files and state information with a single logical container | |
US8738883B2 (en) | Snapshot creation from block lists | |
US20120144391A1 (en) | Provisioning a virtual machine | |
US10922123B2 (en) | Container migration in computing systems | |
EP2843549B1 (en) | Virtual machine deployment and management engine | |
US9268610B2 (en) | Rapid virtual machine cloning | |
US10445186B1 (en) | Associating a guest application within a virtual machine to create dependencies in backup/restore policy | |
US20110208929A1 (en) | In-place virtualization during operating system installation | |
US8924969B2 (en) | Virtual machine image write leasing | |
US10108434B2 (en) | Booting a computing device by streaming a desktop image over a network | |
CN109144776A (zh) | 虚拟机镜像文件处理方法及装置 | |
CN115048181A (zh) | 一种基于Kubernetes容器云平台的热部署方法、装置及应用 | |
CN110928624A (zh) | 用于用户终端的云桌面调用方法、装置及终端 | |
RU2793457C2 (ru) | Способ, система и машиночитаемый носитель для выполнения миграции с физических машин на виртуальные | |
US20240111642A1 (en) | Lossless failover for data recovery | |
US20240095011A1 (en) | State machine operation for non-disruptive update of a data management system |
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 |