CN111124599B - 虚拟机内存数据迁移方法、装置、电子设备及存储介质 - Google Patents

虚拟机内存数据迁移方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN111124599B
CN111124599B CN201911093652.3A CN201911093652A CN111124599B CN 111124599 B CN111124599 B CN 111124599B CN 201911093652 A CN201911093652 A CN 201911093652A CN 111124599 B CN111124599 B CN 111124599B
Authority
CN
China
Prior art keywords
virtual machine
page information
memory page
information table
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911093652.3A
Other languages
English (en)
Other versions
CN111124599A (zh
Inventor
丁宁
应志伟
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.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology Co Ltd
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 Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN201911093652.3A priority Critical patent/CN111124599B/zh
Publication of CN111124599A publication Critical patent/CN111124599A/zh
Application granted granted Critical
Publication of CN111124599B publication Critical patent/CN111124599B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请实施例公开一种虚拟机内存数据迁移方法、装置、电子设备及存储介质,涉及虚拟机迁移技术领域,为提高虚拟机内存数据的迁移效率而发明。所述迁移方法包括:将需要迁移的虚拟机内存页信息放入内存页信息表中;将所述内存页信息表分为两个以上的内存页信息表段,并将所述两个以上的内存页信息表段,分别发送给不同的安全处理器;各安全处理器根据接收到的内存页信息表段,读取虚拟机内存数据,并将读取的虚拟机内存数据处理后发送给所述虚拟机监视器;所述虚拟机监视器将处理后的虚拟机内存数据及迁移信息向目标机发送,以进行虚拟机内存数据的迁移。本申请适用于虚拟机与虚拟机之间内存数据的迁移。

Description

虚拟机内存数据迁移方法、装置、电子设备及存储介质
技术领域
本申请涉及虚拟机迁移技术领域,尤其涉及一种虚拟机内存数据迁移方法、装置、电子设备及存储介质。
背景技术
基于安全虚拟化技术的虚拟机在进行迁移时,虚拟机监视器和安全处理器需要进行交互,交互过程会有耗时,安全处理器本身处理内存页也需要一定的时间开销,并且每次只处理一页内存,导致了迁移效率低下,整个过程耗时较长。
发明内容
有鉴于此,本申请实施例提供一种虚拟机内存数据迁移方法、装置、电子设备及存储介质,能够提升虚拟机内存数据的迁移效率。
第一方面,本申请实施例提供一种虚拟机内存数据迁移方法,应用于发送端,包括:将需要迁移的虚拟机内存页信息放入内存页信息表中;将所述内存页信息表分为两个以上的内存页信息表段,并将所述两个以上的内存页信息表段,分别发送给不同的安全处理器;各安全处理器根据接收到的内存页信息表段,读取虚拟机内存数据,并将读取的虚拟机内存数据处理后发送给所述虚拟机监视器;所述虚拟机监视器将处理后的虚拟机内存数据及迁移信息向目标机发送,以进行虚拟机内存数据的迁移,其中,所述迁移信息包括所述需要迁移的虚拟机内存页信息或所述内存页信息表。
根据本申请一具体实施方式,在将需要迁移的虚拟机内存页信息放入内存页信息表中之后,所述方法还包括:判断所述内存页信息表中项目的数量是否达到阈值,若所述内存页信息表中项目的数量达到阈值,则执行将所述内存页信息表分为两个以上的内存页信息表段的步骤;其中,所述内存页信息表中的一个项目对应至少一条需要迁移的虚拟机内存页信息。
根据本申请一具体实施方式,所述将所述内存页信息表分为两个以上的内存页信息表段,包括:根据当前空闲的安全处理器的数量,将所述内存页信息表分为两个以上的内存页信息表段;所述两个以上的内存页信息表段的数量,小于或等于当前空闲的安全处理器的数量。
根据本申请一具体实施方式,所述将所述内存页信息表分为两个以上的内存页信息表段,包括:将所述内存页信息表分为第一基本段和第二基本段;根据当前时刻空闲的安全处理器的数量,将所述第一基本段分为两个以上的第一子段;所述两个以上的第一子段的数量,小于或等于当前时刻空闲的安全处理器的数量;所述将所述两个以上的内存页信息表段,分别发送给不同的安全处理器,包括:将所述两个以上的第一子段,分别发送给当前时刻空闲的不同的安全处理器;根据下一时刻空闲的安全处理器的数量,将所述第二基本段分为两个以上的第二子段;所述两个以上的第二子段的数量,小于或等于下一时刻空闲的安全处理器的数量;所述将所述两个以上的内存页信息表段,分别发送给不同的安全处理器,包括:将所述两个以上的第二子段,分别发送给下一时刻空闲的不同的安全处理器。
根据本申请一具体实施方式,所述各安全处理器根据接收到的内存页信息表段,读取虚拟机内存数据,并将读取的虚拟机内存数据处理后发送给所述虚拟机监视器,包括:
各安全处理器根据接收到的内存页信息表段,读取虚拟机内存数据,并将读取的虚拟机内存数据进行加密处理后或进行加密处理及生成完整性校验数据后发送给所述虚拟机监视器。
根据本申请一具体实施方式,在判断所述内存页信息表中项目的数量是否达到阈值之前,所述方法还包括:与接收端动态协商确定所述阈值;或者,根据迁移网络状态确定所述阈值。
根据本申请一具体实施方式,所述各安全处理器根据接收到的内存页信息表段,读取虚拟机内存数据,并将读取的虚拟机内存数据处理后发送给所述虚拟机监视器,包括:各安全处理器根据接收到的内存页信息表段,读取虚拟机内存数据,并将读取的虚拟机内存数据经由本地的密码协处理器处理后,发送给所述虚拟机监视器。
第二方面,本申请还提供另一种虚拟机内存数据迁移方法,应用于接收端,包括:接收需要迁入的虚拟机内存数据和迁移信息,所述迁移信息中包括需要迁入的虚拟机内存数据的内存页信息或内存页信息表;若所述迁移信息中包括需要迁入的虚拟机内存数据的内存页信息,则将所述内存页信息放入内存页信息表中;将所述内存页信息表分为两个以上的内存页信息表段;将所述两个以上的内存页信息表段,分别发送给不同的安全处理器;各安全处理器根据接收到的内存页信息表段,读取所述需要迁入的虚拟机内存数据,并将读取的所述需要迁入的虚拟机内存数据处理后写入虚拟机内存。
根据本申请一具体实施方式,若所述迁移信息中包括需要迁入的虚拟机内存数据的内存页信息,将所述内存页信息放入内存页信息表中之后,所述方法还包括:判断所述内存页信息表中项目的数量是否达到阈值,若所述内存页信息表中项目的数量达到阈值,则执行将所述内存页信息表分为两个以上的内存页信息表段的步骤;其中,所述内存页信息表中的一个项目对应至少一条需要迁入的虚拟机内存页信息。
根据本申请一具体实施方式,所述将所述内存页信息表分为两个以上的内存页信息表段,包括:根据当前空闲的安全处理器的数量,将所述内存页信息表分为两个以上的内存页信息表段;所述两个以上的内存页信息表段的数量,小于或等于当前空闲的安全处理器的数量。
根据本申请一具体实施方式,所述将所述内存页信息表分为两个以上的内存页信息表段,包括:将所述内存页信息表分为第一基本段和第二基本段;根据当前时刻空闲的安全处理器的数量,将所述第一基本段分为两个以上的第一子段;所述两个以上的第一子段的数量,小于或等于当前时刻空闲的安全处理器的数量;所述将所述两个以上的内存页信息表段,分别发送给不同的安全处理器,包括:将所述两个以上的第一子段,分别发送给当前时刻空闲的不同的安全处理器;根据下一时刻空闲的安全处理器的数量,将所述第二基本段分为两个以上的第二子段;所述两个以上的第二子段的数量,小于或等于下一时刻空闲的安全处理器的数量;所述将所述两个以上的内存页信息表段,分别发送给不同的安全处理器,包括:将所述两个以上的第二子段,分别发送给下一时刻空闲的不同的安全处理器。
根据本申请一具体实施方式,所述各安全处理器根据接收到的内存页信息表段,读取所述需要迁入的虚拟机内存数据,并将读取的所述需要迁入的虚拟机内存数据处理后写入虚拟机内存,包括:各安全处理器根据接收到的内存页信息表段,读取所述需要迁入的虚拟机内存数据,并将读取的所述需要迁入的虚拟机内存数据进行解密处理后,或进行解密处理及完整性校验成功后写入虚拟机内存。
根据本申请一具体实施方式,在判断所述内存页信息表中项目的数量是否达到阈值之前,所述方法还包括:与发送端动态协商确定所述阈值;或者,根据迁移网络状态确定所述阈值。
根据本申请一具体实施方式,所述各安全处理器根据接收到的内存页信息表段,读取所述需要迁入的虚拟机内存数据,并将读取的所述需要迁入的虚拟机内存数据处理后写入虚拟机内存,包括:各安全处理器根据接收到的内存页信息表段,读取所述需要迁入的虚拟机内存数据,并将读取的所述需要迁入的虚拟机内存数据经由本地的密码协处理器处理后,写入虚拟机内存。
第三方面,本申请提供一种虚拟机内存数据迁移装置,应用于发送端,包括:虚拟机监视器,用于将需要迁移的虚拟机内存页信息放入内存页信息表中;将所述内存页信息表分为两个以上的内存页信息表段,并将所述两个以上的内存页信息表段,分别发送给不同的安全处理器;安全处理器,数量为两个以上,用于根据接收到的内存页信息表段,读取虚拟机内存数据,并将读取的虚拟机内存数据处理后发送给虚拟机监视器;
所述虚拟机监视器,还用于将处理后的虚拟机内存数据及迁移信息向目标机发送,以进行虚拟机内存数据的迁移,其中,所述迁移信息包括所述需要迁移的虚拟机内存页信息或所述内存页信息表。
根据本申请一具体实施方式,所述虚拟机监视器,还用于:判断所述内存页信息表中项目的数量是否达到阈值,若所述内存页信息表中项目的数量达到阈值,则将所述内存页信息表分为两个以上的内存页信息表段;所述内存页信息表中的一个项目对应至少一条需要迁移的虚拟机内存页信息。
根据本申请一具体实施方式,所述虚拟机监视器,进一步用于:根据当前空闲的安全处理器的数量,将所述内存页信息表分为两个以上的内存页信息表段;所述两个以上的内存页信息表段的数量,小于或等于当前空闲的安全处理器的数量。
根据本申请一具体实施方式,所述虚拟机监视器,进一步用于:将所述内存页信息表分为第一基本段和第二基本段;根据当前时刻空闲的安全处理器的数量,将所述第一基本段分为两个以上的第一子段;所述两个以上的第一子段的数量,小于或等于当前时刻空闲的安全处理器的数量;将所述两个以上的第一子段,分别发送给当前时刻空闲的不同的安全处理器;根据下一时刻空闲的安全处理器的数量,将所述第二基本段分为两个以上的第二子段;所述两个以上的第二子段的数量,小于或等于下一时刻空闲的安全处理器的数量;将所述两个以上的第二子段,分别发送给下一时刻空闲的不同的安全处理器。
根据本申请一具体实施方式,所述安全处理器,具体用于:根据接收到的内存页信息表段,读取虚拟机内存数据,并将读取的虚拟机内存数据进行加密处理后或进行加密处理及生成完整性校验数据后发送给所述虚拟机监视器。
根据本申请一具体实施方式,所述虚拟机监视器,还用于与接收端虚拟机监视器动态协商确定所述阈值;或者,根据迁移网络状态确定所述阈值。
根据本申请一具体实施方式,所述安全处理器,具体用于根据接收到的内存页信息表段,读取虚拟机内存数据,并将读取的虚拟机内存数据经由本地的密码协处理器处理后,发送给所述虚拟机监视器。
第四方面,本申请还提供一种虚拟机内存数据迁移装置,应用于接收端,包括:虚拟机监视器,用于接收需要迁入的虚拟机内存数据和迁移信息,所述迁移信息中包括需要迁入的虚拟机内存数据的内存页信息或内存页信息表;若所述迁移信息中包括需要迁入的虚拟机内存数据的内存页信息,则将所述内存页信息放入内存页信息表中;将所述内存页信息表分为两个以上的内存页信息表段;将所述两个以上的内存页信息表段,分别发送给不同的安全处理器;安全处理器,数量为两个以上,用于根据接收到的内存页信息表段,读取所述需要迁入的虚拟机内存数据,并将读取的所述需要迁入的虚拟机内存数据处理后写入虚拟机内存。
根据本申请一具体实施方式,所述虚拟机监视器还用于:判断所述内存页信息表中项目的数量是否达到阈值,若所述内存页信息表中项目的数量达到阈值,则将所述内存页信息表分为两个以上的内存页信息表段;其中,所述内存页信息表中的一个项目对应至少一条需要迁入的虚拟机内存页信息。
根据本申请一具体实施方式,所述虚拟机监视器进一步用于:根据当前空闲的安全处理器的数量,将所述内存页信息表分为两个以上的内存页信息表段;所述两个以上的内存页信息表段的数量,小于或等于当前空闲的安全处理器的数量。
根据本申请一具体实施方式,所述虚拟机监视器进一步用于:将所述内存页信息表分为第一基本段和第二基本段;根据当前时刻空闲的安全处理器的数量,将所述第一基本段分为两个以上的第一子段;所述两个以上的第一子段的数量,小于或等于当前时刻空闲的安全处理器的数量;将所述两个以上的第一子段,分别发送给当前时刻空闲的不同的安全处理器;根据下一时刻空闲的安全处理器的数量,将所述第二基本段分为两个以上的第二子段;所述两个以上的第二子段的数量,小于或等于下一时刻空闲的安全处理器的数量;将所述两个以上的第二子段,分别发送给下一时刻空闲的不同的安全处理器。
根据本申请一具体实施方式,所述安全处理器具体用于:根据接收到的内存页信息表段,读取所述需要迁入的虚拟机内存数据,并将读取的所述需要迁入的虚拟机内存数据进行解密处理后,或进行解密处理及完整性校验成功后写入虚拟机内存。
根据本申请一具体实施方式,所述虚拟机监视器,还用于与发送端虚拟机监视器动态协商确定所述阈值;或者,根据迁移网络状态确定所述阈值。
根据本申请一具体实施方式,所述安全处理器具体用于:根据接收到的内存页信息表段,读取所述需要迁入的虚拟机内存数据,并将读取的所述需要迁入的虚拟机内存数据经由本地的密码协处理器处理后,写入虚拟机内存。
第五方面,本申请还提供一种电子设备,包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施方式所述的方法。
第六方面,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述任一实施方式所述的方法。
本申请实施例虚拟机内存数据迁移方法、装置、电子设备及存储介质,虚拟机迁移发送端可借助虚拟机内存页信息表,将需要迁移的内存页信息分段(分批次)发送给安全处理器处理,而不是一页一页单独处理。此外,本申请中,基于安全虚拟化的平台可有多个安全处理器,多个处理器可由虚拟机监视器统一管理和调度,虚拟机监视器可将一张内存页信息表分段后分派到多个安全处理器来实现并发处理多页内存,减少单个安全处理器处理内存页的时间开销,进而减少虚拟机监视器和安全处理器的交互时间,提升迁移效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请一实施例虚拟机内存数据迁移方法流程示意图;
图2为本申请一实施例中内存页信息表的结构示意图;
图3为本申请另一实施例虚拟机内存数据迁移方法流程示意图;
图4为本申请另一实施例虚拟机内存数据迁移方法流程示意图;
图5为本申请一实施例虚拟机内存数据迁移方法流程示意图;
图6为本申请另一实施例虚拟机内存数据迁移方法流程示意图;
图7为本申请另一实施例虚拟机内存数据迁移方法流程示意图;
图8为本申请另一实施例虚拟机内存数据迁移方法流程示意图;
图9为本申请另一实施例虚拟机内存数据迁移方法流程示意图;
图10为本申请一实施例虚拟机内存数据迁移装置的方框图;
图11为本申请一实施例虚拟机内存数据迁移装置的方框图;
图12为本申请一实施例电子设备的结构示意图。
具体实施方式
本申请实施例主要目的是提供一种虚拟机内存数据迁移方法、装置、电子设备及存储介质,在进行虚拟机迁移时,可利用多个安全处理器并行处理多个虚拟机内存页的数据,以提升虚拟机内存数据的迁移效率。所述虚拟机内存数据迁移方法及装置,可适用于基于安全虚拟化技术的虚拟机之间的虚拟机内存数据的迁移。
下面结合附图对本申请实施例进行详细描述。应当明确,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
虚拟机(VM,Virtual Machine)技术就是在一个宿主计算机体系结构上模拟运行其他的客户机操作系统,模拟的客户机可以与宿主计算机是同一个体系结构,也可以是不同的体系结构。
硬件虚拟化是比较流行的虚拟化技术。硬件虚拟化直接将宿主系统的硬件系统虚拟化供虚拟机使用。硬件虚拟化使用虚拟机监视器(VMM,Virtual Machine Monitor)来隔离虚拟系统与宿主硬件。VMM也可称为虚拟机管理器,其可直接运行在系统硬件上,也可以运行在宿主操作系统上。VMM实现了从虚拟资源到物理资源的映射,并利用本地物理资源进行计算。当虚拟系统访问系统资源时,VMM将接管这个请求,并将处理结果返回给虚拟机系统,这样就实现了多个硬件设备的虚拟,保证虚拟系统的有效隔离。
虚拟机迁移属于虚拟化技术中一个很重要的应用场景,其可包括物理机到虚拟机的迁移(P2V,Physical-to-Virtual),虚拟机到虚拟机的迁移(V2V,Virtual-to-Virtual)。其中,P2V迁移是指迁移物理服务器上的操作系统及其上的应用软件和数据到VMM管理的虚拟服务器中。V2V迁移是在虚拟机之间移动操作系统和数据。虚拟机从一个物理机上的VMM迁移到另一个物理机的VMM,这两个VMM的类型可以相同,也可以不同。本申请中的虚拟机迁移主要是指V2V迁移。
对于VM的内存状态的迁移,可采用预拷贝(pre-copy)的策略。迁移开始之后,源主机VM仍在运行,目的主机VM尚未启动。迁移通过一个循环,将源主机VM的内存数据发送至目的主机VM。循环第一轮发送所有内存页数据,接下来的每一轮循环发送上一轮预拷贝过程中被VM写过的脏页(dirty pages)内存数据。直到时机成熟,预拷贝循环结束,进入停机拷贝阶段,源主机被挂起,不再有内存更新。最后一轮循环中的脏页被传输至目的主机VM。预拷贝机制极大的减少了停机拷贝阶段需要传输的内存数据量,从而将停机时间大大缩小。然而,对于更新速度非常快的内存部分,每次循环过程都会变脏,需要重复pre-copy,同时也导致循环次数非常多,迁移的时间变长。
基于安全虚拟化技术的虚拟机,由于其内存数据使用了虚拟机加密密钥进行加密,因此在迁移时,虚拟机监视器需要同安全处理器进行交互。普通虚拟机和基于安全虚拟化技术的虚拟机的迁移过程区别如下:
对于普通虚拟机迁移,虚拟机监视器获取到需要迁移的内存页之后,直接将内存页数据和相关信息直接发送给接收端。
基于安全虚拟化技术的虚拟机在进行迁移时,由于其内存被加密,所以当虚拟机监视器获取到需要迁移的内存页后,需要先将该内存页转交给安全处理器处理,然后等待安全处理器处理结束,接着虚拟机监视器继续查找下一个需要迁移的内存页。重复上面的过程,直到满足迁移结束条件。
基于安全虚拟化技术的虚拟机在进行迁移时,虚拟机监视器和安全处理器需要进行交互,交互过程会有耗时,安全处理器本身处理内存页也需要一定的时间开销,并且每次只处理一页内存,导致了迁移效率低下,整个过程耗时较长。支持安全虚拟化的硬件平台一般支持多个安全处理器,但是虚拟机监视器同时只同一个安全处理器进行交互,没有发挥多安全处理器并发处理的性能优势。其中,安全处理器是一种可独立进行密钥生成、加解密的处理器,其内部可拥有独立的处理器和存储单元,可存储密钥和特征数据。
此外,虚拟机迁移的过程中,虚拟机停机时间是虚拟机监视器停止虚拟机到恢复虚拟机运行的时间间隔,其决定着虚拟机迁移的体验,而虚拟机内存页的处理时间长短会直接影响停机时间。基于安全虚拟化技术的虚拟机在迁移时,由于虚拟机的内存页需要经过安全处理器处理,所以停机时间也会明显增加。
图1为本申请一实施例虚拟机内存数据迁移方法流程示意图,应用于发送端,即应用于虚拟机迁移发送端,所述方法可包括如下步骤:
S100、将需要迁移的虚拟机内存页信息放入内存页信息表中。
虚拟机内存页为宿主机物理内存上的一块(可称为页框),一个虚拟机内存页即为宿主机物理内存上的一个页框。一个虚拟机内存页可对应一条虚拟机内存页信息。虚拟机内存页信息可采取数组或列表等形式。
每条虚拟机内存页信息可包括物理内存地址、对应的物理内存长度以及内存页中的数据是否被修改过的标识(如可用标志位1表示修改过,用标志位0表示未修改过)。若一条虚拟机内存页信息中包含内存页中的数据被修改过的标识,则表明该条虚拟机内存页信息为需要迁移(迁出)的虚拟机内存页信息。
虚拟机内存页信息可保存在内存控制器(也可称为内存管理器)中。发送端虚拟机监视器可通过对发送端内存控制器中的虚拟机内存页信息进行扫描,从中获取需要迁移的虚拟机内存页信息。
在首轮(第一轮)迁移时,由于需要发送所有内存页数据,因此,每条虚拟机内存页信息均为需要迁移的虚拟机内存页信息。
在非首轮迁移时,仅需要发送上一轮预拷贝过程中被VM写过的脏页内存数据,因此,可能仅有部分虚拟机内存页信息为需要迁移的虚拟机内存页信息。
发送端虚拟机监视器,将获取的需要迁移的虚拟机内存页信息,放入内存页信息表中。内存页信息表可简称为信息表或表。在内存页信息表中可包括多个项目,每个项目在内存页信息表中可依次存放。每个项目可对应至少一条需要迁移的虚拟机内存页信息。内存页信息表可采用数组、列表或链表等形式。图2为本申请一实施例中内存页信息表的结构示意图。
S102、将内存页信息表分为两个以上的内存页信息表段,并将所述两个以上的内存页信息表段,分别发送给不同的安全处理器。
发送端虚拟机监视器,可根据本地当前空闲的安全处理器的数量,对内存页信息表进行动态分段。具体地,发送端虚拟机监视器,可根据本地当前空闲的安全处理器的数量,将所述内存页信息表分为两个以上的内存页信息表段;所述两个以上的内存页信息表段的数量,小于或等于发送端本地当前空闲的安全处理器的数量。在一个例子中,发送端虚拟机监视器所分的内存页信息表段的数量,与本地当前空闲的安全处理器的数量相等,以最大化利用本地当前空闲的安全处理器,提升数据处理的效率。
发送端虚拟机监视器,可通过查询安全处理器的空闲标志位来确定本地当前空闲的安全处理器,发送端虚拟机监视器也可通过接收本地安全处理器发送的空闲中断信号来确定本地当前空闲的安全处理器。
发送端虚拟机监视器将内存页信息表分为两个以上的内存页信息表段之后,将所述两个以上的内存页信息表段,分别发送给本地当前空闲的不同的安全处理器。
在一个具体例子中,对于一个包含有30个项目的内存页信息表,发送端虚拟机监视器通过查询本地安全处理器的空闲标志位(如为0则表示空闲),确定本地当前时刻处于空闲状态的安全处理器的数量为3个,即安全处理器C1、C2和C3处于空闲状态,发送端虚拟机监视器据此将内存页信息表均分为3个子段,即D1段、D2段和D3段,并将D1段发送给安全处理器C1处理,将D2段发送给安全处理器C2处理,将D3段发送给安全处理器C3处理。
由于不同的虚拟机内存页的数据大小可能不同,或者不同的安全处理器的处理速度可能不同,这样,不同的安全处理器在处理不同的虚拟机内存页数据时,可能存在有的安全处理器先行处理完毕,提前处于空闲状态的情况。为了适应这种情况,进一步提升数据处理效率,在一些实施方式中,对于同一内存页信息表,发送端虚拟机监视器可进行两次分段处理,具体地,发送端虚拟机监视器可先将内存页信息表分为第一基本段和第二基本段。第一基本段中包括的项目的数量可大于第二基本段中包含的项目的数量,二者可呈一定的倍数或比例关系。在一个例子中,第一基本段中包括的项目的数量,与第二基本段中包含的项目的数量的比例关系可为5∶1,在另一个例子中,第一基本段中包括的项目的数量,与第二基本段中包含的项目的数量的比例关系可为3∶1,在又一个例子中,第一基本段中包括的项目的数量,与第二基本段中包含的项目的数量的比例关系可为2∶1。
发送端虚拟机监视器将内存页信息表分为第一基本段和第二基本段后,可根据本地当前时刻空闲的安全处理器的数量,将第一基本段分为两个以上的第一子段,并将两个以上的第一子段,分别发送给本地当前时刻空闲的不同的安全处理器。其中,第一子段的数量,小于或等于当前时刻空闲的安全处理器的数量。在一个例子中,虚拟机监视器所分的第一子段的数量,与本地当前时刻空闲的安全处理器的数量相等,以最大化利用本地当前时刻空闲的安全处理器,提升数据处理的效率。
发送端虚拟机监视器在将两个以上的第一子段,分别发送给本地不同的安全处理器后,在等待这些安全处理器处理数据的过程中,可确定下一时刻空闲的安全处理器的数量,即确定下一时刻上述安全处理器中先行处于空闲状态的安全处理器的数量,并根据下一时刻空闲的安全处理器的数量,将第二基本段分为两个以上的第二子段,并将所述两个以上的第二子段,分别发送给下一时刻空闲的不同的安全处理器。第二子段的数量,小于或等于下一时刻空闲的安全处理器的数量。在一个例子中,发送端虚拟机监视器所分的第二子段的数量,与本地下一时刻空闲的安全处理器的数量相等,以最大化利用本地下一时刻空闲的安全处理器,进一步提升数据处理的效率。
在一个具体例子中,对于一个包含有50个项目的内存页信息表,发送端虚拟机监视器先将内存页信息表分为第一基本段D1(包含40个项目)和第二基本段D2(包含10个项目)。发送端虚拟机监视器,通过查询本地安全处理器的空闲标志位(如为0则表示空闲),确定当前时刻本地处于空闲状态的安全处理器的数量为5个,即安全处理器C1、C2、C3、C4和C5处于空闲状态,发送端虚拟机监视器据此将第一基本段D1均分为5个第一子段,即D11段、D12段、D13段、D14段和D15段,并将D11段发送给安全处理器C1处理,将D12段发送给安全处理器C2处理,将D13段发送给安全处理器C3处理,将D14段发送给安全处理器C4处理,将D15段发送给安全处理器C5处理。
发送端虚拟机监视器在等待安全处理器C1、C2、C3、C4和C5处理数据的过程中,确定下一时刻本地空闲的安全处理器有C1和C3(表明C1和C3相对于C2、C4和C5先行处于空闲状态)。发送端虚拟机监视器据此将第二基本段D2均分为两个第二子段,即D21段和D22段,将D21段发送给安全处理器C1处理,将D22段发送给安全处理器C3处理。这样,可最大化利用本地下一时刻空闲的安全处理器,进一步提升数据处理的效率。
S104、各安全处理器根据接收到的内存页信息表段,读取虚拟机内存数据,并将读取的虚拟机内存数据处理后发送给所述虚拟机监视器。
各安全处理器,根据接收到的内存页信息表段中记录的物理内存地址及物理内存长度,读取虚拟机内存数据,对读取虚拟机内存数据进行处理。
在一些实施方式中,各安全处理器可将读取的虚拟机内存数据进行加密处理。具体地,可采用对称加密算法(如DES、3DES或AES等算法)进行对称加密处理,也可采用非对称加密算法(如RSA、ECC等算法)进行非对称加密处理。
在一些实施方式中,各安全处理器可将读取的虚拟机内存数据除了进行加密处理外,还可生成完整性校验数据,以防止数据被篡改。在一个例子中,各安全处理器可利用哈希算法(MD5、SHA1等),生成一个消息摘要。
在一些实施方式中,在各安全处理器将读取的虚拟机内存数据进行加密处理或进行加密处理及生成完整性校验数据后,还可对加密处理后的虚拟机内存数据,和/或生成的完整性校验数据进行压缩处理,以节省在进行数据传输时所消耗的网络流量。
安全处理器中通常会有多个密码协处理器。在一些实施方式中,为了提高数据处理效率,各安全处理器可将读取的虚拟机内存数据发送给本地的密码协处理器进行处理。
各安全处理器将读取的虚拟机内存数据处理后,发送给发送端虚拟机监视器。
S106、虚拟机监视器将处理后的虚拟机内存数据及迁移信息向目标机发送,以进行虚拟机内存数据的迁移。
所述迁移信息可包括所述需要迁移的虚拟机内存页信息或所述内存页信息表。为了便于接收方对接收到的虚拟机内存数据进行完整性校验,所述迁移信息还可包括完整性校验数据。
根据上述步骤S100-S106,可实现至少部分虚拟机内存数据的迁移,若根据上述步骤S100-S106执行一轮迁移后,仍有脏页内存数据需要迁移,则可重复执行上述步骤S100-S106,直至满足迁移结束条件。迁移结束条件可以是根据最近几轮(如最近三轮)迁移的脏页的数量,预估下一轮剩余的脏页数量低于预定阈值(如低于3),也可以是迁移的循环次数达到预定阈值(如30次)。
虚拟机内存页信息表记录了一定数量的内存页信息,这些内存页信息对应的内存页数据需要通过安全处理器处理后才可发送给虚拟机迁移接收端。本实施例的虚拟机内存数据迁移方法,虚拟机迁移发送端可借助虚拟机内存页信息表,将需要迁移的内存页信息分段(分批次)发送给安全处理器处理,而不是一页一页单独处理。此外,本申请中,基于安全虚拟化的平台可有多个安全处理器,多个处理器可由虚拟机监视器统一管理和调度,虚拟机监视器可将一张内存页信息表分段后分派到多个安全处理器来实现并发处理多页内存,减少单个安全处理器处理内存页的时间开销,进而减少虚拟机监视器和安全处理器的交互时间,提升迁移效率,减少迁移时间开销,减少停机时间。
图3为本申请另一实施例虚拟机内存数据迁移方法流程示意图,参看图3,本实施例与图1所示实施例基本相同,不同之处在于,本实施例中,在将需要迁移的虚拟机内存页信息放入内存页信息表中之后,所述方法还可包括步骤:
S101、判断所述内存页信息表中项目的数量是否达到阈值;
若所述内存页信息表中项目的数量达到阈值,则执行将所述内存页信息表分为两个以上的内存页信息表段的步骤,否则执行步骤S100。
如前所述,对于更新速度非常快的内存部分,每次循环过程内存页都可能会变脏,需要重复预拷贝,同时也导致循环次数非常多,迁移的时间变长。对此,本申请中通过阈值来集中控制内存页信息表中项目的数量,即通过阈值集中控制一个循环内的脏页的数量,可在一个循环内集中传输一定数量的脏页,这样,可有效减少循环次数,缩短迁移时间。
所述阈值可预先确定为一个固定值。具体可根据安全处理器的处理能力以及虚拟机监视器的处理能力来确定,例如:当阈值增大到一定值时,性能不再有明显提升,此值可以作为阈值。比如可为30、40、45或50等。
在一些实施方式中,也可通过发送端虚拟机监视器和接收端的虚拟机监视器以协商的方式确定所述阈值。比如,可以取发送端和接收端安全处理器和虚拟机监视器处理能力(例如每秒钟处理数据量)的最小值作为阈值。所述阈值,也可在数据处理的过程中,通过动态协商的方式确定,以充分利用安全处理器和虚拟机监视器的处理能力。
在一些实施方式中,也可根据迁移网络状态确定所述阈值。在一个例子中,可根据发送端或接收端的安全处理器和虚拟机监视器处理能力(包含最大处理能力和最小处理能力)确定一个范围,当网络状态好且传输数据的速度超过处理能力时,则取最大处理能力的值作为阈值,当网络状态不好且传输数据的速度低于处理能力时,取接近最小处理能力的值作为阈值(不低于最小处理能力)。
下面以一个实施例为例说明应用于虚拟机迁移发送端的虚拟机内存数据迁移方法。
图4为本申请另一实施例虚拟机内存数据迁移方法流程示意图,参看图4,本实施例虚拟机内存数据迁移方法,可包括如下步骤:
S300、获取需要迁移的虚拟机内存页信息。
迁移开始后,发送端虚拟机监视器不断获取需要迁移的虚拟机内存页信息。
S302、将内存页信息放入到虚拟机内存页信息表中。
发送端虚拟机监视器将获取到的需要迁移的虚拟机内存页信息,放入到虚拟机内存页信息表中,直到内存页信息表中的项目数量达到一定的阈值。
S304、判断内存页信息表中的项目数量是否达到阈值。
发送端虚拟机监视器,将获取到的需要迁移的虚拟机内存页信息放入到虚拟机内存页信息表中后,判断内存页信息表中的项目数量是否达到阈值。若内存页信息表中的项目数量达到阈值,则执行步骤S306,否则执行步骤S300。
S306、根据空闲安全处理器的数量将内存页信息表分段。
发送端虚拟机监视器,根据当前时刻空闲的安全处理器的数量,将内存页信息表分段,得到两个以上的存页信息表段。
S308、取一个空闲安全处理器并向其递交对应的内存页信息表段。
发送端虚拟机监视器与发送端本地的安全处理器进行交互,获取空闲安全处理器,将未处理的内存页信息表段逐个递交(即传送)给空闲安全处理器处理。
S310、判断所有内存页信息表段是否均递交完毕。
若所有内存页信息表段未递交完毕,则执行步骤S308,直到所有内存页信息表分段均递交到空闲安全处理器;若所有内存页信息表段已递交完毕,则执行步骤S318。
S312、获取内存页信息表段。
发送端本地安全处理器收到发送端虚拟机监视器的交互请求后,先从发送端虚拟机监视器获取内存页信息表段。
S314、处理内存页信息表段。
发送端本地安全处理器,根据内存页信息表段中记录的内存页信息,读取相应的内存页中的内存数据,并对读取的内存数据进行处理。
具体地,各安全处理器可将读取的虚拟机内存数据进行加密处理。除了进行加密处理外,还可生成完整性校验数据,以防止数据被篡改。
S316、返回结果,等待下一次交互请求。
发送端本地安全处理器对读取的内存数据进行处理后,返回结果,等待下一次交互请求。
S318、等待所有安全处理器处理结束。
发送端虚拟机监视器,将所有内存页信息表段均递交到空闲安全处理器后,等待所有安全处理器处理结束。
S320、接收安全处理器返回的结果。
发送端虚拟机监视器,可等待所有安全处理器处理结束后,接收安全处理器返回的结果。
S322、检查所有安全处理器是否均返回结果。
发送端虚拟机监视器判断所有安全处理器是否均返回结果,若是,则执行步骤S324,否则,执行步骤318。
S324、将处理结果及相关信息向接收端发送。
发送端虚拟机监视器,将本地安全处理器处理后的内存页数据及相关信息(迁移信息)向接收端虚拟机监视器发送。
S326、判断是否满足结束迁移条件。
发送端虚拟机监视器将处理后的虚拟机内存数据及迁移信息发送给接收端之后,判断是否满足结束迁移条件,若满足,则将发送端虚拟机停机以免新的脏页产生,并将剩余的脏页的内存数据经过上述流程步骤处理后,结束迁移流程,否则,执行步骤S300。
其中,所述迁移信息可包括所述需要迁移的虚拟机内存页信息或所述内存页信息表。为了便于接收方对接收到的虚拟机内存数据进行完整性校验,所述迁移信息还可包括完整性校验数据。
本实施例的虚拟机内存数据迁移方法,虚拟机迁移发送端可借助虚拟机内存页信息表,将需要迁移的内存页信息分段(分批次)发送给安全处理器处理,而不是一页一页单独处理。此外,本申请中,基于安全虚拟化的平台可有多个安全处理器,多个处理器可由虚拟机监视器统一管理和调度,虚拟机监视器可将一张内存页信息表分段后分派到多个安全处理器来实现并发处理多页内存,减少单个安全处理器处理内存页的时间开销,进而减少虚拟机监视器和安全处理器的交互时间,提升迁移效率,减少迁移时间开销,减少停机时间。
图5为本申请一实施例虚拟机内存数据迁移方法流程示意图,应用于接收端,即应用于虚拟机迁移接收端,参看图5,所述方法可包括如下步骤:
S400、接收需要迁入的虚拟机内存数据和内存页信息。
接收端虚拟机监视器,从发送端虚拟机监视器接收需要迁入的虚拟机内存数据和迁移信息,所述迁移信息中包括需要迁入的虚拟机内存数据的内存页信息。
S402、将所述内存页信息放入内存页信息表中。
接收端虚拟机监视器,将所述内存页信息放入内存页信息表中。内存页信息表可简称为信息表或表。在内存页信息表中可包括多个项目,每个项目在内存页信息表中可依次存放。每个项目可对应至少一条虚拟机内存页信息。内存页信息表可采用数组、列表或链表等形式。
S404、将所述内存页信息表分为两个以上的内存页信息表段,分别发送给不同的安全处理器。
接收端虚拟机监视器,可根据当前时刻空闲的安全处理器的数量,对内存页信息表进行动态分段,具体地,接收端虚拟机监视器,可根据当前时刻空闲的安全处理器的数量,将所述内存页信息表分为两个以上的内存页信息表段;所述两个以上的内存页信息表段的数量,小于或等于当前空闲的安全处理器的数量。在一个例子中,所分的内存页信息表段的数量,与当前时刻空闲的安全处理器的数量相等,以最大化利用当前时刻空闲的安全处理器,提升数据处理的效率。
接收端虚拟机监视器,可通过查询本地的安全处理器的空闲标志位来确定当前时刻空闲的安全处理器,也可通过接收本地的安全处理器发送的空闲中断信号来确定本地当前时刻空闲的安全处理器。
接收端虚拟机监视器,将内存页信息表分为两个以上的内存页信息表段之后,将所述两个以上的内存页信息表段,分别发送给本地当前时刻空闲的不同的安全处理器。
在一个具体例子中,对于一个包含有30个项目的内存页信息表,接收端虚拟机监视器通过查询本地安全处理器的空闲标志位(如为0则表示空闲)确定当前时刻本地处于空闲状态的安全处理器的数量为3个,即安全处理器C1‘、C2‘和C3‘处于空闲状态,接收端虚拟机监视器据此将内存页信息表均分为3个子段,即D1‘段、D2‘段和D3‘段,并将D1‘段发送给安全处理器C1‘处理,将D2‘段发送给安全处理器C2‘处理,将D3‘段发送给安全处理器C3‘处理。
由于不同的虚拟机内存页的数据大小可能不同,或者不同的安全处理器的处理速度可能不同,这样,不同的安全处理器在处理不同的虚拟机内存页数据时,可能存在有的安全处理器先行处理完毕,提前处于空闲状态的情况。为了适应这种情况,进一步提升数据处理效率,在一些实施方式中,对于同一内存页信息表,接收端虚拟机监视器可进行两次分段处理,具体地,接收端虚拟机监视器可先将内存页信息表分为第一基本段和第二基本段。第一基本段中包括的项目的数量可大于第二基本段中包含的项目的数量,二者可呈一定的倍数或比例关系。在一个例子中,第一基本段中包括的项目的数量,与第二基本段中包含的项目的数量的比例关系可为5∶1,在另一个例子中,第一基本段中包括的项目的数量,与第二基本段中包含的项目的数量的比例关系可为3∶1,在又一个例子中,第一基本段中包括的项目的数量,与第二基本段中包含的项目的数量的比例关系可为2∶1。
接收端虚拟机监视器将内存页信息表分为第一基本段和第二基本段后,可根据当前时刻空闲的安全处理器的数量,将第一基本段分为两个以上的第一子段,并将两个以上的第一子段,分别发送给当前时刻空闲的不同的安全处理器。其中,第一子段的数量,小于或等于当前时刻空闲的安全处理器的数量。在一个例子中,接收端虚拟机监视器所分的第一子段的数量,与当前时刻空闲的安全处理器的数量相等,以最大化利用当前时刻空闲的安全处理器,提升数据处理的效率。
接收端虚拟机监视器在将两个以上的第一子段,分别发送给不同的安全处理器后,在等待这些安全处理器处理数据的过程中,可确定下一时刻空闲的安全处理器的数量,即确定下一时刻上述安全处理器中先行处于空闲状态的安全处理器的数量,并根据下一时刻空闲的安全处理器的数量,将第二基本段分为两个以上的第二子段,并将所述两个以上的第二子段,分别发送给下一时刻空闲的不同的安全处理器。第二子段的数量,小于或等于下一时刻空闲的安全处理器的数量。在一个例子中,接收端虚拟机监视器所分的第二子段的数量,与下一时刻空闲的安全处理器的数量相等,以最大化利用下一时刻空闲的安全处理器,进一步提升数据处理的效率。
在一个具体例子中,对于一个包含有50个项目的内存页信息表,接收端虚拟机监视器先将内存页信息表分为第一基本段D1‘(包含40个项目)和第二基本段D2‘(包含10个项目)。接收端虚拟机监视器通过查询本地安全处理器的空闲标志位(如为0则表示空闲)确定本地当前时刻处于空闲状态的安全处理器的数量为5个,即安全处理器C1‘、C2‘、C3‘、C4‘和C5‘处于空闲状态,虚拟机监视器据此将第一基本段D1‘均分为5个第一子段,即D11‘段、D12‘段、D13‘段、D14‘段和D15‘段,并将D11‘段发送给安全处理器C1‘处理,将D12‘段发送给安全处理器C2‘处理,将D13‘段发送给安全处理器C3‘处理,将D14‘段发送给安全处理器C4‘处理,将D15‘段发送给安全处理器C5‘处理。
接收端虚拟机监视器在等待安全处理器C1‘、C2‘、C3‘、C4‘和C5‘处理数据的过程中,确定本地下一时刻空闲的安全处理器有Cl‘和C3‘(表明Cl‘和C3‘相对于C2‘、C4‘和C5‘先行处于空闲状态)。接收端虚拟机监视器据此将第二基本段D2‘均分为两个第二子段,即D21‘段和D22‘段,将D21‘段发送给安全处理器C1‘处理,将D22‘段发送给安全处理器C3‘处理。这样,可最大化利用本地下一时刻空闲的安全处理器,进一步提升数据处理的效率。
S406、各安全处理器根据接收到的内存页信息表段,读取所述需要迁入的虚拟机内存数据,并将读取的所述需要迁入的虚拟机内存数据处理后写入虚拟机内存。
接收端虚拟机监视器,从发送端虚拟机监视器接收到需要迁入的内存数据后,可将这部分数据进行缓存。接收端本地的各安全处理器,可根据接收到的内存页信息表段,从接收端虚拟机监视器所缓存的数据中,读取需要迁入的虚拟机内存数据。
在一些实施方式中,接收端本地的各安全处理器,可将读取的所述需要迁入的虚拟机内存数据进行解密处理。
在一些实施方式中,接收端本地的各安全处理器,可将读取的所述需要迁入的虚拟机内存数据进行解密处理之外,还可根据完整性校验数据,对需要迁入的虚拟机内存数据进行完整性校验,以防止数据被篡改。
在一些实施方式中,如果接收端虚拟机监视器,从发送端虚拟机监视器接收的需要迁入的内存数据为经压缩处理后的数据,则在接收端本地的各安全处理器,将读取的所述需要迁入的虚拟机内存数据进行解密处理之前,或进行解密处理及完整性校验之前,还需所述需要迁入的虚拟机内存数据进行解压缩,和/或对完整性校验信息进行解压缩处理;其中,所述完整性校验信息可包含在所述迁移信息中。
接收端本地的安全处理器中,通常会有多个密码协处理器。在一些实施方式中,为了提高数据处理效率,接收端本地的各安全处理器,可将读取的虚拟机内存数据发送给本地的密码协处理器进行处理。
接收端本地的各安全处理器,将读取的虚拟机内存数据处理后,写入虚拟机内存。具体地,接收端本地的各安全处理器,将读取的虚拟机内存数据处理后,通过接收端的内存控制器,写入接收端的虚拟机内存。在接收端的内存控制器,将经接收端本地的安全处理器处理后的内存数据写入接收端的虚拟机内存时,需要利用加密算法对要写入的内存数据进行加密。
在一些实施方式中,接收端本地的各安全处理器,将读取的虚拟机内存数据处理后,也可返回给接收端虚拟机监视器,由接收端虚拟机监视器,通过接收端的内存控制器,写入接收端的虚拟机内存。
图6为本申请另一实施例虚拟机内存数据迁移方法流程示意图,参看图6,本实施例与图5所示实施例基本相同,不同之处在于,本实施例中,在将需要迁入的虚拟机内存页信息放入内存页信息表中之后,所述方法还可包括:
S403、判断所述内存页信息表中项目的数量是否达到阈值。
若所述内存页信息表中项目的数量达到阈值,则执行将所述内存页信息表分为两个以上的内存页信息表段的步骤,否则执行步骤S400。
本申请中通过阈值来集中控制内存页信息表中项目的数量,即通过阈值集中控制一个循环内的脏页的数量,可在一个循环内集中传输一定数量的脏页,这样,可有效减少循环次数,缩短迁移时间。
所述阈值的确定方式可采用图3所示实施例中阈值的确定方式,在此不再赘述。
图7为本申请另一实施例虚拟机内存数据迁移方法流程示意图,参看图7,本实施例与图5所示实施例基本相同,不同之处在于,本实施例中,所述迁移信息中包括需要迁入的虚拟机内存数据的内存页信息表,即接收端虚拟机监视器,可从发送端虚拟机监视器直接接收需要迁入的虚拟机内存数据的内存页信息表,然后,可直接将所述内存页信息表分为两个以上的内存页信息表段,分别发送给不同的安全处理器,具体地,本实施例的迁移方法,可包括如下步骤:
S400‘、接收需要迁入的虚拟机内存数据和内存页信息表。
接收端虚拟机监视器,从发送端虚拟机监视器接收需要迁入的虚拟机内存数据和迁移信息,所述迁移信息中包括需要迁入的虚拟机内存数据的内存页信息表。
S402‘、将所述内存页信息表分为两个以上的内存页信息表段,分别发送给不同的安全处理器。
S404‘、各安全处理器根据接收到的内存页信息表段,读取所述需要迁入的虚拟机内存数据,并将读取的所述需要迁入的虚拟机内存数据处理后写入虚拟机内存。
本实施例中,接收端虚拟机监视器,可从发送端虚拟机监视器直接接收需要迁入的虚拟机内存数据的内存页信息表,这样可省去接收端虚拟机监视器收集内存页信息形成内存页信息表的过程,从而提升迁移效率。
下面以一个实施例为例说明应用于虚拟机迁移接收端的虚拟机内存数据迁移方法。
图8为本申请另一实施例虚拟机内存数据迁移方法流程示意图,参看图8,本实施例虚拟机内存数据迁移方法,用于接收端,可包括如下步骤:
S500、接收需要迁入的虚拟机内存页数据及内存页信息。
迁移开始后,接收端虚拟机监视器,从发送端虚拟机监视器接收需要迁入的虚拟机内存页数据及内存页信息。
S502、将内存页信息放入到内存页信息表中。
接收端虚拟机监视器,将接收到的内存页信息放入到虚拟机内存页信息表中,直到内存页信息表中的项目数量达到一定的阈值。
S504、判断内存页信息表中项目数量是否达到阈值。
接收端虚拟机监视器,将需要迁入的虚拟机内存页信息放入到虚拟机内存页信息表中后,判断内存页信息表中的项目数量是否达到阈值。若内存页信息表中的项目数量达到阈值,则执行步骤S506,否则执行步骤S500。
S506、根据空闲安全处理器的数量将内存页信息表分段。
接收端虚拟机监视器根据空闲安全处理器的数量,将内存页信息表分段,得到两个以上的存页信息表段。
S508、取一个空闲安全处理器并向其递交对应的内存页信息表段。
接收端虚拟机监视器与接收端本地的安全处理器进行交互,获取空闲安全处理器,将未处理的内存页信息表段逐个递交(即传送)给空闲安全处理器处理。
S510、判断所有内存页信息表段是否均递交完毕。
若所有内存页信息表段未递交完毕,则执行步骤S508,直到所有内存页信息表分段均递交到空闲安全处理器;若所有内存页信息表段已递交完毕,则执行步骤S518。
S512、获取内存页信息表段。
接收端本地安全处理器收到交互请求后,先从接收端虚拟机监视器获取内存页信息表段。
S514、处理内存页信息表段。
接收端本地安全处理器根据内存页信息表段中记录的内存页信息,读取相应的内存页中的内存数据,并对读取的内存数据进行处理。
具体地,各安全处理器可将读取的虚拟机内存数据进行解密处理。除了进行解密处理外,还根据接收端虚拟机监视器从发送端虚拟机监视器接收的完整性校验数据,对所述虚拟机内存数据进行完整性校验,以防止数据被篡改。
S516、返回结果,等待下一次交互请求。
接收端本地安全处理器对读取的内存数据进行处理后,返回结果,等待下一次交互请求。
S518、等待所有安全处理器处理结束。
虚拟机监视器将所有内存页信息表分段均递交到空闲安全处理器后,等待所有安全处理器处理结束。
S520、接收安全处理器返回的结果。
接收端虚拟机监视器,等待所有安全处理器处理结束后,接收安全处理器返回的结果。
S522、检查所有安全处理器是否均返回结果。
接收端虚拟机监视器,判断本地所有安全处理器是否均返回结果,若是,则执行步骤S524,否则,执行步骤518。
S524、对所有安全处理器返回的结果进行处理。
接收端虚拟机监视器,将本地所有安全处理器返回的处理后的内存数据,通过接收端的内存控制器,写入接收端的虚拟机内存。
S526、判断是否满足迁入结束条件。
接收端虚拟机监视器,判断是否满足迁入结束条件,若是则结束迁移流程,否则,执行步骤500。所述迁入接收条件可以是接收端虚拟机监视器接收到发送端虚拟机监视器发送的迁移结束通知消息。
图9为本申请另一实施例虚拟机内存数据迁移方法流程示意图,参看图9,本实施例虚拟机内存数据迁移方法,与图8所示实施例的方法基本相同,不同之处在于,本实施例中,接收端虚拟机监视器,可从发送端虚拟机监视器直接接收需要迁入的虚拟机内存数据的内存页信息表,并直接将所述内存页信息表分为两个以上的内存页信息表段,分别发送给不同的安全处理器,具体地,本实施例的迁移方法。可包括如下步骤:
S500‘、接收需要迁入的虚拟机内存页数据及内存页信息表。
迁移开始后,接收端虚拟机监视器,从发送端虚拟机监视器接收需要迁入的虚拟机内存页数据及内存页信息表。
S506‘、根据空闲安全处理器的数量将内存页信息表分段。
接收端虚拟机监视器根据空闲安全处理器的数量,将内存页信息表分段,得到两个以上的存页信息表段。
S508‘、取一个空闲安全处理器并向其递交对应的内存页信息表段。
接收端虚拟机监视器与接收端本地的安全处理器进行交互,获取空闲安全处理器,将未处理的内存页信息表段逐个递交(即传送)给空闲安全处理器处理。
S510‘、判断所有内存页信息表段是否均递交完毕。
若所有内存页信息表段未递交完毕,则执行步骤S508‘,直到所有内存页信息表分段均递交到空闲安全处理器;若所有内存页信息表段已递交完毕,则执行步骤S518‘。
S512‘、获取内存页信息表段。
接收端本地安全处理器收到交互请求后,先从接收端虚拟机监视器获取内存页信息表段。
S514‘、处理内存页信息表段。
接收端本地安全处理器根据内存页信息表段中记录的内存页信息,读取相应的内存页中的内存数据,并对读取的内存数据进行处理。
具体地,各安全处理器可将读取的虚拟机内存数据进行解密处理。除了进行解密处理外,还根据接收端虚拟机监视器从发送端虚拟机监视器接收的完整性校验数据,对所述虚拟机内存数据进行完整性校验,以防止数据被篡改。
S516‘、返回结果,等待下一次交互请求。
接收端本地安全处理器对读取的内存数据进行处理后,返回结果,等待下一次交互请求。
S518‘、等待所有安全处理器处理结束。
虚拟机监视器将所有内存页信息表分段均递交到空闲安全处理器后,等待所有安全处理器处理结束。
S520‘、接收安全处理器返回的结果。
接收端虚拟机监视器,等待所有安全处理器处理结束后,接收安全处理器返回的结果。
S522‘、检查所有安全处理器是否均返回结果。
接收端虚拟机监视器,判断本地所有安全处理器是否均返回结果,若是,则执行步骤S524‘,否则,执行步骤518‘。
S524‘、对所有安全处理器返回的结果进行处理。
接收端虚拟机监视器,将本地所有安全处理器返回的处理后的内存数据,通过接收端的内存控制器,写入接收端的虚拟机内存。
S526‘、判断是否满足迁入结束条件。
接收端虚拟机监视器,判断是否满足迁入结束条件,若是则结束迁移流程,否则,执行步骤500‘。所述迁入接收条件可以是接收端虚拟机监视器接收到发送端虚拟机监视器发送的迁移结束通知消息。
本实施例中,接收端虚拟机监视器,可从发送端虚拟机监视器直接接收需要迁入的虚拟机内存数据的内存页信息表,这样可省去接收端虚拟机监视器收集内存页信息形成内存页信息表的过程,从而提升迁移效率。
图10为本申请一实施例虚拟机内存数据迁移装置的方框图,参看图10,本实施例虚拟机内存数据迁移装置10a,应用于发送端,可包括虚拟机监视器100a和安全处理器102a,其中,虚拟机监视器100a,用于将需要迁移的虚拟机内存页信息放入内存页信息表中;所述内存页信息表中的一个项目对应至少一条虚拟机内存页信息;将所述内存页信息表分为两个以上的内存页信息表段,并将所述两个以上的内存页信息表段,分别发送给不同的安全处理器;安全处理器102a,数量为两个以上,用于根据接收到的内存页信息表段,读取虚拟机内存数据,并将读取的虚拟机内存数据处理后发送给虚拟机监视器;所述虚拟机监视器100a,还用于将处理后的虚拟机内存数据及迁移信息向目标机发送,以进行虚拟机内存数据的迁移,其中,所述迁移信息包括所述需要迁移的虚拟机内存页信息或所述内存页信息表。
在一些实施方式中,所述虚拟机监视器100a,还用于:判断所述内存页信息表中项目的数量是否达到阈值,若所述内存页信息表中项目的数量达到阈值,则将所述内存页信息表分为两个以上的内存页信息表段。
在一些实施方式中,所述虚拟机监视器100a,进一步用于:根据当前空闲的安全处理器的数量,将所述内存页信息表分为两个以上的内存页信息表段;所述两个以上的内存页信息表段的数量,小于或等于当前空闲的安全处理器的数量。
在一些实施方式中,所述虚拟机监视器100a,进一步用于:将所述内存页信息表分为第一基本段和第二基本段;根据当前时刻空闲的安全处理器的数量,将所述第一基本段分为两个以上的第一子段;所述两个以上的第一子段的数量,小于或等于当前时刻空闲的安全处理器的数量;将所述两个以上的第一子段,分别发送给当前时刻空闲的不同的安全处理器;根据下一时刻空闲的安全处理器的数量,将所述第二基本段分为两个以上的第二子段;所述两个以上的第二子段的数量,小于或等于下一时刻空闲的安全处理器的数量;将所述两个以上的第二子段,分别发送给下一时刻空闲的不同的安全处理器。
在一些实施方式中,所述安全处理器102a,具体用于:根据接收到的内存页信息表段,读取虚拟机内存数据,并将读取的虚拟机内存数据进行加密处理后或进行加密处理及生成完整性校验数据后发送给所述虚拟机监视器。
在一些实施方式中,所述安全处理器102a,还用于对加密处理后的虚拟机内存数据,和/或生成的完整性校验数据进行压缩处理。
在一些实施方式中,所述虚拟机监视器100a,还用于通过与接收端虚拟机监视器动态协商的方式,或根据迁移网络状态确定所述阈值,具体可参考图3所示实施例中阈值的确定方式,在此不再赘述。
在一些实施方式中,所述安全处理器102a,具体用于根据接收到的内存页信息表段,读取虚拟机内存数据,并将读取的虚拟机内存数据经由本地的密码协处理器处理后,发送给所述虚拟机监视器。
本实施例的装置,可以用于执行图1、图3或图4所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图11为本申请一实施例虚拟机内存数据迁移装置的方框图,参看图11,本实施例虚拟机内存数据迁移装置10b,应用于接收端,可包括虚拟机监视器100b和安全处理器102b,其中,虚拟机监视器100b,用于接收需要迁入的虚拟机内存数据和迁移信息,所述迁移信息中包括需要迁入的虚拟机内存数据的内存页信息或内存页信息表;若所述迁移信息中包括需要迁入的虚拟机内存数据的内存页信息,则将所述内存页信息放入内存页信息表中;将所述内存页信息表分为两个以上的内存页信息表段;其中,所述内存页信息表中的一个项目对应至少一条虚拟机内存页信息;将所述两个以上的内存页信息表段,分别发送给不同的安全处理器;安全处理器102b,数量为两个以上,用于根据接收到的内存页信息表段,读取所述需要迁入的虚拟机内存数据,并将读取的所述需要迁入的虚拟机内存数据处理后写入虚拟机内存。
在一些实施方式中,所述虚拟机监视器100b还用于:判断所述内存页信息表中项目的数量是否达到阈值,若所述内存页信息表中项目的数量达到阈值,则将所述内存页信息表分为两个以上的内存页信息表段;其中,所述内存页信息表中的一个项目对应至少一条需要迁入的虚拟机内存页信息。
在一些实施方式中,所述虚拟机监视器100b进一步用于:根据当前空闲的安全处理器的数量,将所述内存页信息表分为两个以上的内存页信息表段;所述两个以上的内存页信息表段的数量,小于或等于当前空闲的安全处理器的数量。
在一些实施方式中,所述虚拟机监视器100b进一步用于:将所述内存页信息表分为第一基本段和第二基本段;根据当前时刻空闲的安全处理器的数量,将所述第一基本段分为两个以上的第一子段;所述两个以上的第一子段的数量,小于或等于当前时刻空闲的安全处理器的数量;将所述两个以上的第一子段,分别发送给当前时刻空闲的不同的安全处理器;根据下一时刻空闲的安全处理器的数量,将所述第二基本段分为两个以上的第二子段;所述两个以上的第二子段的数量,小于或等于下一时刻空闲的安全处理器的数量;将所述两个以上的第二子段,分别发送给下一时刻空闲的不同的安全处理器。
在一些实施方式中,所述安全处理器102b具体用于:根据接收到的内存页信息表段,读取所述需要迁入的虚拟机内存数据,并将读取的所述需要迁入的虚拟机内存数据进行解密处理后,或进行解密处理及完整性校验成功后写入虚拟机内存。
在一些实施方式中,所述安全处理器102b还用于:对读取的所述需要迁入的虚拟机内存数据进行解压缩,和/或对完整性校验信息进行解压缩处理;其中,所述完整性校验信息包含在所述迁移信息中。
在一些实施方式中,所述虚拟机监视器100b,还用于通过与发送端虚拟机监视器动态协商的方式或根据迁移网络状态确定所述阈值,具体可参考图3所示实施例中阈值的确定方式,在此不再赘述。
在一些实施方式中,所述安全处理器102b具体用于:根据接收到的内存页信息表段,读取所述需要迁入的虚拟机内存数据,并将读取的所述需要迁入的虚拟机内存数据经由本地的密码协处理器处理后,写入虚拟机内存。
本实施例的装置,可以用于执行图5至图9所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图12为本申请一实施例电子设备的方框图,参看图12,所述电子设备可以包括:壳体41、处理器42、存储器43、电路板44和电源电路45,其中,电路板44安置在壳体41围成的空间内部,处理器42和存储器43设置在电路板44上;电源电路45,用于为上述电子设备的各个电路或器件供电;存储器43用于存储可执行程序代码;处理器42通过读取存储器43中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例所述的方法。
处理器42对上述步骤的具体执行过程以及处理器42通过运行可执行程序代码来进一步执行的步骤,可以参见本申请图1、图3至图9所示实施例的描述,在此不再赘述。
该电子设备以多种形式存在,包括但不限于:服务器或其它提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述任一实施例所述的方法。
本申请的实施例还提供一种应用程序,所述应用程序被执行以实现本申请任一实施例提供的方法。
本申请实施例虚拟机内存数据迁移方法、装置、电子设备及存储介质,虚拟机迁移发送端可借助虚拟机内存页信息表,将需要迁移的内存页信息分段(分批次)发送给安全处理器处理,而不是一页一页单独处理。此外,本申请中,基于安全虚拟化的平台可有多个安全处理器,多个处理器可由虚拟机监视器统一管理和调度,虚拟机监视器可将一张内存页信息表分段后分派到多个安全处理器来实现并发处理多页内存,减少单个安全处理器处理内存页的时间开销,进而减少虚拟机监视器和安全处理器的交互时间,提升迁移效率,减少迁移时间开销,减少停机时间。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本申请时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (26)

1.一种虚拟机内存数据迁移方法,其特征在于,应用于发送端,包括:
将需要迁移的虚拟机内存页信息放入内存页信息表中;
将所述内存页信息表分为两个以上的内存页信息表段,并将所述两个以上的内存页信息表段,分别发送给不同的安全处理器;
各安全处理器根据接收到的内存页信息表段,读取虚拟机内存数据,并将读取的虚拟机内存数据处理后发送给所述虚拟机监视器;
所述虚拟机监视器将处理后的虚拟机内存数据及迁移信息向目标机发送,以进行虚拟机内存数据的迁移,其中,所述迁移信息包括所述需要迁移的虚拟机内存页信息或所述内存页信息表;
所述将所述内存页信息表分为两个以上的内存页信息表段,包括:
将所述内存页信息表分为第一基本段和第二基本段;
根据当前时刻空闲的安全处理器的数量,将所述第一基本段分为两个以上的第一子段;所述两个以上的第一子段的数量,小于或等于当前时刻空闲的安全处理器的数量;
所述将所述两个以上的内存页信息表段,分别发送给不同的安全处理器,包括:将所述两个以上的第一子段,分别发送给当前时刻空闲的不同的安全处理器;
根据下一时刻空闲的安全处理器的数量,将所述第二基本段分为两个以上的第二子段;所述两个以上的第二子段的数量,小于或等于下一时刻空闲的安全处理器的数量;
所述将所述两个以上的内存页信息表段,分别发送给不同的安全处理器,包括:将所述两个以上的第二子段,分别发送给下一时刻空闲的不同的安全处理器。
2.根据权利要求1所述的迁移方法,其特征在于,在将需要迁移的虚拟机内存页信息放入内存页信息表中之后,所述方法还包括:
判断所述内存页信息表中项目的数量是否达到阈值,若所述内存页信息表中项目的数量达到阈值,则执行将所述内存页信息表分为两个以上的内存页信息表段的步骤;其中,所述内存页信息表中的一个项目对应至少一条需要迁移的虚拟机内存页信息。
3.根据权利要求1所述的迁移方法,其特征在于,所述将所述内存页信息表分为两个以上的内存页信息表段,包括:
根据当前空闲的安全处理器的数量,将所述内存页信息表分为两个以上的内存页信息表段;所述两个以上的内存页信息表段的数量,小于或等于当前空闲的安全处理器的数量。
4.根据权利要求1所述的迁移方法,其特征在于,所述各安全处理器根据接收到的内存页信息表段,读取虚拟机内存数据,并将读取的虚拟机内存数据处理后发送给所述虚拟机监视器,包括:
各安全处理器根据接收到的内存页信息表段,读取虚拟机内存数据,并将读取的虚拟机内存数据进行加密处理后或进行加密处理及生成完整性校验数据后发送给所述虚拟机监视器。
5.根据权利要求2所述的迁移方法,其特征在于,在判断所述内存页信息表中项目的数量是否达到阈值之前,所述方法还包括:
与接收端动态协商确定所述阈值;或者,
根据迁移网络状态确定所述阈值。
6.根据权利要求1所述的迁移方法,其特征在于,所述各安全处理器根据接收到的内存页信息表段,读取虚拟机内存数据,并将读取的虚拟机内存数据处理后发送给所述虚拟机监视器,包括:
各安全处理器根据接收到的内存页信息表段,读取虚拟机内存数据,并将读取的虚拟机内存数据经由本地的密码协处理器处理后,发送给所述虚拟机监视器。
7.一种虚拟机内存数据迁移方法,其特征在于,应用于接收端,包括:
接收需要迁入的虚拟机内存数据和迁移信息,所述迁移信息中包括需要迁入的虚拟机内存数据的内存页信息或内存页信息表;若所述迁移信息中包括需要迁入的虚拟机内存数据的内存页信息,则将所述内存页信息放入内存页信息表中;
将所述内存页信息表分为两个以上的内存页信息表段;
将所述两个以上的内存页信息表段,分别发送给不同的安全处理器;
各安全处理器根据接收到的内存页信息表段,读取所述需要迁入的虚拟机内存数据,并将读取的所述需要迁入的虚拟机内存数据处理后写入虚拟机内存;
所述将所述内存页信息表分为两个以上的内存页信息表段,包括:
将所述内存页信息表分为第一基本段和第二基本段;
根据当前时刻空闲的安全处理器的数量,将所述第一基本段分为两个以上的第一子段;所述两个以上的第一子段的数量,小于或等于当前时刻空闲的安全处理器的数量;
所述将所述两个以上的内存页信息表段,分别发送给不同的安全处理器,包括:将所述两个以上的第一子段,分别发送给当前时刻空闲的不同的安全处理器;
根据下一时刻空闲的安全处理器的数量,将所述第二基本段分为两个以上的第二子段;所述两个以上的第二子段的数量,小于或等于下一时刻空闲的安全处理器的数量;
所述将所述两个以上的内存页信息表段,分别发送给不同的安全处理器,包括:将所述两个以上的第二子段,分别发送给下一时刻空闲的不同的安全处理器。
8.根据权利要求7所述的迁移方法,其特征在于,若所述迁移信息中包括需要迁入的虚拟机内存数据的内存页信息,将所述内存页信息放入内存页信息表中之后,所述方法还包括:
判断所述内存页信息表中项目的数量是否达到阈值,若所述内存页信息表中项目的数量达到阈值,则执行将所述内存页信息表分为两个以上的内存页信息表段的步骤;其中,所述内存页信息表中的一个项目对应至少一条需要迁入的虚拟机内存页信息。
9.根据权利要求7所述的迁移方法,其特征在于,所述将所述内存页信息表分为两个以上的内存页信息表段,包括:
根据当前空闲的安全处理器的数量,将所述内存页信息表分为两个以上的内存页信息表段;所述两个以上的内存页信息表段的数量,小于或等于当前空闲的安全处理器的数量。
10.根据权利要求7所述的迁移方法,其特征在于,所述各安全处理器根据接收到的内存页信息表段,读取所述需要迁入的虚拟机内存数据,并将读取的所述需要迁入的虚拟机内存数据处理后写入虚拟机内存,包括:
各安全处理器根据接收到的内存页信息表段,读取所述需要迁入的虚拟机内存数据,并将读取的所述需要迁入的虚拟机内存数据进行解密处理后,或进行解密处理及完整性校验成功后写入虚拟机内存。
11.根据权利要求8所述的迁移方法,其特征在于,在判断所述内存页信息表中项目的数量是否达到阈值之前,所述方法还包括:
与发送端动态协商确定所述阈值;或者,
根据迁移网络状态确定所述阈值。
12.根据权利要求7所述的迁移方法,其特征在于,所述各安全处理器根据接收到的内存页信息表段,读取所述需要迁入的虚拟机内存数据,并将读取的所述需要迁入的虚拟机内存数据处理后写入虚拟机内存,包括:
各安全处理器根据接收到的内存页信息表段,读取所述需要迁入的虚拟机内存数据,并将读取的所述需要迁入的虚拟机内存数据经由本地的密码协处理器处理后,写入虚拟机内存。
13.一种虚拟机内存数据迁移装置,其特征在于,应用于发送端,包括:
虚拟机监视器,用于将需要迁移的虚拟机内存页信息放入内存页信息表中;将所述内存页信息表分为两个以上的内存页信息表段,并将所述两个以上的内存页信息表段,分别发送给不同的安全处理器;
安全处理器,数量为两个以上,用于根据接收到的内存页信息表段,读取虚拟机内存数据,并将读取的虚拟机内存数据处理后发送给虚拟机监视器;
所述虚拟机监视器,还用于将处理后的虚拟机内存数据及迁移信息向目标机发送,以进行虚拟机内存数据的迁移,其中,所述迁移信息包括所述需要迁移的虚拟机内存页信息或所述内存页信息表;
所述虚拟机监视器,进一步用于:
将所述内存页信息表分为第一基本段和第二基本段;根据当前时刻空闲的安全处理器的数量,将所述第一基本段分为两个以上的第一子段;所述两个以上的第一子段的数量,小于或等于当前时刻空闲的安全处理器的数量;将所述两个以上的第一子段,分别发送给当前时刻空闲的不同的安全处理器;
根据下一时刻空闲的安全处理器的数量,将所述第二基本段分为两个以上的第二子段;所述两个以上的第二子段的数量,小于或等于下一时刻空闲的安全处理器的数量;将所述两个以上的第二子段,分别发送给下一时刻空闲的不同的安全处理器。
14.根据权利要求13所述的迁移装置,其特征在于,所述虚拟机监视器,还用于:判断所述内存页信息表中项目的数量是否达到阈值,若所述内存页信息表中项目的数量达到阈值,则将所述内存页信息表分为两个以上的内存页信息表段;所述内存页信息表中的一个项目对应至少一条需要迁移的虚拟机内存页信息。
15.根据权利要求13所述的迁移装置,其特征在于,所述虚拟机监视器,进一步用于:根据当前空闲的安全处理器的数量,将所述内存页信息表分为两个以上的内存页信息表段;所述两个以上的内存页信息表段的数量,小于或等于当前空闲的安全处理器的数量。
16.根据权利要求13所述的迁移装置,其特征在于,所述安全处理器,具体用于:根据接收到的内存页信息表段,读取虚拟机内存数据,并将读取的虚拟机内存数据进行加密处理后或进行加密处理及生成完整性校验数据后发送给所述虚拟机监视器。
17.根据权利要求14所述的迁移装置,其特征在于,所述虚拟机监视器,还用于与接收端虚拟机监视器动态协商确定所述阈值,或者,根据迁移网络状态确定所述阈值。
18.根据权利要求13所述的迁移装置,其特征在于,所述安全处理器,具体用于根据接收到的内存页信息表段,读取虚拟机内存数据,并将读取的虚拟机内存数据经由本地的密码协处理器处理后,发送给所述虚拟机监视器。
19.一种虚拟机内存数据迁移装置,其特征在于,应用于接收端,包括:
虚拟机监视器,用于接收需要迁入的虚拟机内存数据和迁移信息,所述迁移信息中包括需要迁入的虚拟机内存数据的内存页信息或内存页信息表;若所述迁移信息中包括需要迁入的虚拟机内存数据的内存页信息,则将所述内存页信息放入内存页信息表中;将所述内存页信息表分为两个以上的内存页信息表段;将所述两个以上的内存页信息表段,分别发送给不同的安全处理器;
安全处理器,数量为两个以上,用于根据接收到的内存页信息表段,读取所述需要迁入的虚拟机内存数据,并将读取的所述需要迁入的虚拟机内存数据处理后写入虚拟机内存;
所述虚拟机监视器进一步用于:将所述内存页信息表分为第一基本段和第二基本段;
根据当前时刻空闲的安全处理器的数量,将所述第一基本段分为两个以上的第一子段;所述两个以上的第一子段的数量,小于或等于当前时刻空闲的安全处理器的数量;将所述两个以上的第一子段,分别发送给当前时刻空闲的不同的安全处理器;
根据下一时刻空闲的安全处理器的数量,将所述第二基本段分为两个以上的第二子段;所述两个以上的第二子段的数量,小于或等于下一时刻空闲的安全处理器的数量;将所述两个以上的第二子段,分别发送给下一时刻空闲的不同的安全处理器。
20.根据权利要求19所述的迁移装置,其特征在于,所述虚拟机监视器还用于:判断所述内存页信息表中项目的数量是否达到阈值,若所述内存页信息表中项目的数量达到阈值,则将所述内存页信息表分为两个以上的内存页信息表段;其中,所述内存页信息表中的一个项目对应至少一条需要迁入的虚拟机内存页信息。
21.根据权利要求19所述的迁移装置,其特征在于,所述虚拟机监视器进一步用于:根据当前空闲的安全处理器的数量,将所述内存页信息表分为两个以上的内存页信息表段;所述两个以上的内存页信息表段的数量,小于或等于当前空闲的安全处理器的数量。
22.根据权利要求19所述的迁移装置,其特征在于,所述安全处理器具体用于:根据接收到的内存页信息表段,读取所述需要迁入的虚拟机内存数据,并将读取的所述需要迁入的虚拟机内存数据进行解密处理后,或进行解密处理及完整性校验成功后写入虚拟机内存。
23.根据权利要求20所述的迁移装置,其特征在于,所述虚拟机监视器,还用于与发送端虚拟机监视器动态协商确定所述阈值,或者,根据迁移网络状态确定所述阈值。
24.根据权利要求19所述的迁移装置,其特征在于,所述安全处理器具体用于:根据接收到的内存页信息表段,读取所述需要迁入的虚拟机内存数据,并将读取的所述需要迁入的虚拟机内存数据经由本地的密码协处理器处理后,写入虚拟机内存。
25.一种电子设备,其特征在于,包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述权利要求1-6或7-12任一项所述的方法。
26.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述权利要求1-6或7-12任一项所述的方法。
CN201911093652.3A 2019-11-08 2019-11-08 虚拟机内存数据迁移方法、装置、电子设备及存储介质 Active CN111124599B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911093652.3A CN111124599B (zh) 2019-11-08 2019-11-08 虚拟机内存数据迁移方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911093652.3A CN111124599B (zh) 2019-11-08 2019-11-08 虚拟机内存数据迁移方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN111124599A CN111124599A (zh) 2020-05-08
CN111124599B true CN111124599B (zh) 2021-04-30

Family

ID=70495570

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911093652.3A Active CN111124599B (zh) 2019-11-08 2019-11-08 虚拟机内存数据迁移方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN111124599B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112241305B (zh) * 2020-10-21 2023-01-31 海光信息技术股份有限公司 虚拟机脏页处理方法、处理芯片、计算机设备及存储介质
CN112256391B (zh) * 2020-10-22 2023-04-25 海光信息技术股份有限公司 一种虚拟机内存迁移方法、装置、及设备
CN112579255B (zh) * 2020-12-10 2023-03-24 海光信息技术股份有限公司 虚拟机迁移的压缩保护方法、迁入迁出加速器模块和soc芯片

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101984631A (zh) * 2010-11-05 2011-03-09 北京世纪互联工程技术服务有限公司 一种Xen虚拟机安全动态迁移方法
CN102271124A (zh) * 2010-06-01 2011-12-07 富士通株式会社 数据处理设备和数据处理方法
CN106095525A (zh) * 2016-06-06 2016-11-09 浪潮电子信息产业股份有限公司 一种虚拟机动态迁移安全防护方法
CN106250784A (zh) * 2016-07-20 2016-12-21 乐视控股(北京)有限公司 全盘加密方法和装置
CN109165080A (zh) * 2018-08-10 2019-01-08 云宏信息科技股份有限公司 虚拟机在线迁移过程内存数据的保护方法、装置及物理机

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103455373A (zh) * 2013-09-18 2013-12-18 浪潮电子信息产业股份有限公司 一种虚拟机动态迁移安全框架
US20170277898A1 (en) * 2016-03-25 2017-09-28 Advanced Micro Devices, Inc. Key management for secure memory address spaces
CN106844004B (zh) * 2016-12-29 2020-02-14 北京瑞星网安技术股份有限公司 基于虚拟化环境下的安全防护方法及系统
CN107885586A (zh) * 2017-11-15 2018-04-06 北京易讯通信息技术股份有限公司 一种在私有云中迁移虚拟机的安全防护方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102271124A (zh) * 2010-06-01 2011-12-07 富士通株式会社 数据处理设备和数据处理方法
CN101984631A (zh) * 2010-11-05 2011-03-09 北京世纪互联工程技术服务有限公司 一种Xen虚拟机安全动态迁移方法
CN106095525A (zh) * 2016-06-06 2016-11-09 浪潮电子信息产业股份有限公司 一种虚拟机动态迁移安全防护方法
CN106250784A (zh) * 2016-07-20 2016-12-21 乐视控股(北京)有限公司 全盘加密方法和装置
CN109165080A (zh) * 2018-08-10 2019-01-08 云宏信息科技股份有限公司 虚拟机在线迁移过程内存数据的保护方法、装置及物理机

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
KVM 虚拟化动态迁移技术的安全防护模型;范伟,孔斌,张珠君,王婷婷,张杰,黄伟庆;《软件学报》;20160122;第27卷(第6期);第1402-1416页 *

Also Published As

Publication number Publication date
CN111124599A (zh) 2020-05-08

Similar Documents

Publication Publication Date Title
JP7007425B2 (ja) 部分的にオフロードされた仮想化マネージャにおけるメモリ割当て技術
CN111124599B (zh) 虚拟机内存数据迁移方法、装置、电子设备及存储介质
CN102314377B (zh) 加速器及其实现支持虚拟机迁移的方法
US8171267B2 (en) Method and apparatus for migrating task in multi-processor system
US9413683B2 (en) Managing resources in a distributed system using dynamic clusters
CN109564523B (zh) 使用机会性管理程序降低性能可变性
US9703723B2 (en) Method and apparatus for performing mapping within a data processing system having virtual machines
CN111090869B (zh) 一种数据加密方法、处理器及计算机设备
JP2011100431A (ja) 仮想マシン制御装置及び仮想マシン制御方法
CN111158853A (zh) 虚拟机内存数据迁移方法、cpu芯片及服务器
US20110107344A1 (en) Multi-core apparatus and load balancing method thereof
WO2019028682A1 (zh) 一种多系统共享内存的管理方法及装置
US10318343B2 (en) Migration methods and apparatuses for migrating virtual machine including locally stored and shared data
US10579419B2 (en) Data analysis in storage system
CN116860391A (zh) Gpu算力资源调度方法、装置、设备和介质
CN105677481B (zh) 一种数据处理方法、系统及电子设备
US20210357339A1 (en) Efficient management of bus bandwidth for multiple drivers
CN114816777A (zh) 命令处理装置、方法、电子设备以及计算机可读存储介质
CN111290856A (zh) 数据处理装置和方法
CN106775846A (zh) 用于物理服务器的在线迁移的方法及装置
KR20120076127A (ko) 가상화 기반 휴대용 단말 관리 시스템 및 방법
CN111124606B (zh) 基于安全处理器的虚拟机数据处理方法、装置、cpu芯片及服务器
TW202314498A (zh) 用於記憶體管理機會與記憶體交換任務之運算系統及管理其之方法
US10241821B2 (en) Interrupt generated random number generator states
CN117573041B (zh) 一种改进vhost-scsi提升虚拟化存储性能的方法

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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 300392 North 2-204 industrial incubation-3-8, 18 Haitai West Road, Huayuan Industrial Zone, Binhai New Area, Tianjin

Applicant after: Haiguang Information Technology Co., Ltd

Address before: 300392 North 2-204 industrial incubation-3-8, 18 Haitai West Road, Huayuan Industrial Zone, Binhai New Area, Tianjin

Applicant before: HAIGUANG INFORMATION TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant