发明内容
为解决上述问题,本发明提供一种广域网可信虚拟机的安全迁移方法及系统,其将VPN技术和TPM&vTPM技术结合,以实现整条迁移链的安全与可信,保障可信虚拟机迁移过程的正确、高效和安全,突破可信虚拟机迁移仅限于局域网内的局限性,扩展可信技术使用的范围和灵活性的发明目的,为虚拟机的安全和防护提供新的应用场景及解决方案。
为实现上述发明目的,本发明提供一种广域网可信虚拟机的安全迁移方法,该方法包括:
步骤1,在广域网上部署两个数据中心,该两个数据中心之间通过建立两层桥接模式的虚拟专用网络进行网络连接,其中每个数据中心的业务节点运行虚拟机;
步骤2,将所述虚拟机镜像文件拆分为模板和用户私有数据,并将其分别储存于所述两个数据中心中的存储节点中,然后将每个数据中心的硬件资源虚拟化,以虚拟机的形式向用户提供服务;
步骤3,在所述两个数据中心之间通过部署虚拟可信平台创建并启动支持vTPM的可信虚拟机,并根据所述模板和用户私有数据生成与该可信虚拟机绑定的vTPM实例,然后加载TPM驱动;
步骤4,所述两个数据中心,一个作为源端,另一个作为目的端,根据所述vTPM实例对源端和目的端进行配置后,在源端对可信虚拟机的内存、CPU状态、磁盘、vTPM状态进行迁移,并在目的端进行恢复,实现vTPM和虚拟机的同步迁移。
进一步的,所述步骤1包括:
步骤11,在数据中心之外的广域网中随机选择一个节点作为VPNserver,每个数据中心选择一个节点作为VPNclient,所述VPNserver生成其建立服务和每个VPNclient请求连接时的认证文件,其中所述VPNserver为VPN服务器,VPNclient为VPN客户端;
步骤12,在所述VPNserver的配置文件中设置参数,包括:TCP协议,tap设备,IP地址,以及认证文件路径,之后启动VPNserver服务;
步骤13,所述每个数据中心选择一个节点作为VPNclient后将所述认证文件复制到该节点,并在VPNclient的配置文件中设置参数,包括:VPNserver的IP地址,TCP协议,tap设备,以及认证文件路径,之后启动VPNclient服务,所述VPNclient服务与VPNserver服务连接;
步骤14,在所述每个VPNclient上启动虚拟网桥,并将其与相应的tap设备对接;
步骤15,所述每个数据中心除VPNclient之外的节点上设置默认路由作为该数据中心的VPNclient的IP地址。
进一步的,所述步骤2包括:
步骤21,每个数据中心的所有存储节点形成统一的挂载接口,在该挂载接口上创建分布式文件系统的卷Volume,两个数据中心的Volume标记为Volume1、Volume2;
步骤22,将所述虚拟机镜像文件拆分为模板和用户私有数据,所述模板数据在用户请求服务时动态生成;
步骤22,将所述模板和用户私有数据分别存储于Volume1、Volume2。
进一步的,所述步骤3包括:
步骤31,在Dom0中加载TPM前端驱动,生成设备文件/dev/tpm0;
步骤32,在所述Dom0中加载TPM后端驱动,生成设备文件/dev/vtpm;
步骤33,配置并编译xen使其支持vTPM Manager、vTPM、及支持vTPM迁移;
步骤34,启动所述vTPM Manager,初始化监听线程;
步骤35,启动支持vTPM的可信虚拟机,在所述Dom0生成与虚拟机绑定的vTPM实例;
步骤36,在启动的可信虚拟机中加载所述TPM前端驱动。
进一步的,所述步骤4包括:
步骤41,在目的端开启vTPM实例迁移守护进程;
步骤42,在源端检查Hotplug脚本是否支持vTPM实例迁移,如果不支持,修改Hotplug脚本使其支持vTPM实例迁移,执行步骤43,若支持,直接执行步骤43;
步骤43,循环迭代拷贝虚拟机内存脏页到目的端;
步骤44,虚拟机进入停机拷贝阶段后,对剩余脏页、CPU状态、磁盘文件进行拷贝;
步骤45,停机拷贝后,激发vTPM迁移;
步骤46,vTPM迁移被激活后,调用脚本完成vTPM迁移的沟通迁移密钥;
步骤47,vTPM迁移调用沟通迁移密钥完成后,会继续调用脚本完成vTPM迁移的传送vTPM状态数据;
步骤48,在目的端恢复迁移过来的虚拟机,并对源端虚拟机及vTPM实例进行销毁。
为实现上述发明目的,本发明还提供一种广域网可信虚拟机的安全迁移系统,该系统包括:
建立连接模块,在广域网上部署两个数据中心,该两个数据中心之间通过建立两层桥接模式的虚拟专用网络进行网络连接,其中每个数据中心的业务节点运行虚拟机;
拆分处理模块,将所述虚拟机镜像文件拆分为模板和用户私有数据,并将其分别储存于所述两个数据中心中的存储节点中,然后将每个数据中心的硬件资源虚拟化,以虚拟机的形式向用户提供服务;
vTPM实例处理模块,在所述两个数据中心之间通过部署虚拟可信平台创建并启动支持vTPM的可信虚拟机,并根据所述模板和用户私有数据生成与该可信虚拟机绑定的vTPM实例,然后加载TPM驱动;
迁移处理模块,所述两个数据中心,一个作为源端,另一个作为目的端,根据所述vTPM实例对源端和目的端进行配置后,在源端对可信虚拟机的内存、CPU状态、磁盘、vTPM状态进行迁移,并在目的端进行恢复,实现vTPM和虚拟机的同步迁移。
进一步的,所述建立连接模块包括:
VPNserver处理模块,在数据中心之外的广域网中随机选择一个节点作为VPNserver,每个数据中心选择一个节点作为VPNclient,所述VPNserver生成其建立服务和每个VPNclient请求连接时的认证文件,其中所述VPNserver为VPN服务器,VPNclient为VPN客户端;
参数设置模块,在所述VPNserver的配置文件中设置参数,包括:TCP协议,tap设备,IP地址,以及认证文件路径,之后启动VPNserver服务;
VPNclient处理模块,所述每个数据中心选择一个节点作为VPNclient后将所述认证文件复制到该节点,并在VPNclient的配置文件中设置参数,包括:VPNserver的IP地址,TCP协议,tap设备,以及认证文件路径,之后启动VPNclient服务,所述VPNclient服务与VPNserver服务连接;
虚拟处理模块,在所述每个VPNclient上启动虚拟网桥,并将其与相应的tap设备对接;
IP地址处理模块,所述每个数据中心除VPNclient之外的节点上设置默认路由作为该数据中心的VPNclient的IP地址。
进一步的,所述拆分处理模块包括:
接口处理模块,每个数据中心的所有存储节点形成统一的挂载接口,在该挂载接口上创建分布式文件系统的卷Volume,两个数据中心的Volume标记为Volume1、Volume2;
拆分模块,将所述虚拟机镜像文件拆分为模板和用户私有数据,所述模板数据在用户请求服务时动态生成;
存储模块,将所述模板和用户私有数据分别存储于Volume1、Volume2。
进一步的,所述vTPM实例处理模块包括:
加载前端模块,在Dom0中加载TPM前端驱动,生成设备文件/dev/tpm0;
加载后端模块,在所述Dom0中加载TPM后端驱动,生成设备文件/dev/vtpm;
配置处理模块,配置并编译xen使其支持vTPM Manager、vTPM、及支持vTPM迁移;
初始化模块,启动所述vTPM Manager,初始化监听线程;
vTPM实例生成模块,启动支持vTPM的可信虚拟机,在所述Dom0生成与虚拟机绑定的vTPM实例;
加载处理模块,在启动的可信虚拟机中加载所述TPM前端驱动。
进一步的,所述迁移处理模块包括:
进程开启模块,在目的端开启vTPM实例迁移守护进程;
检查处理模块,在源端检查Hotplug脚本是否支持vTPM实例迁移,如果不支持,修改Hotplug脚本使其支持vTPM实例迁移,执行迭代处理模块,若支持,直接执行迭代处理模块;
迭代处理模块,循环迭代拷贝虚拟机内存脏页到目的端;
拷贝处理模块,虚拟机进入停机拷贝阶段后,对剩余脏页、CPU状态、磁盘文件进行拷贝;
激发迁移模块,停机拷贝后,激发vTPM迁移;
调用处理模块,vTPM迁移被激活后,调用脚本完成vTPM迁移的沟通迁移密钥;
vTPM数据传送模块,vTPM迁移调用沟通迁移密钥完成后,会继续调用脚本完成vTPM迁移的传送vTPM状态数据;
销毁处理模块,在目的端恢复迁移过来的虚拟机,并对源端虚拟机及vTPM实例进行销毁。
本发明的有益功效在于:
通过克服广域网迁移过程中遇到的挑战和困难,保障了可信虚拟机迁移过程的正确、高效和安全。通过将局域网内的可信虚拟机迁移扩展到了广域网环境,突破了可信虚拟机迁移仅限于局域网内的局限性,扩展了可信技术使用的范围和灵活性,为虚拟机的安全和防护提供了新的应用场景及解决方案。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
具体实施方式
本发明将VPN技术和TPM&vTPM技术结合,实现了虚拟机迁移端、接入端、网络传输,整条迁移链的安全与可信。与现有技术的安全迁移协议相比,本专利的不用重新构建安全迁移协议,直接采用现有VPN(OpenVPN)中SSL机制,大大减少了实现的难度,以及产品的兼容性。所述虚拟化环境为Xen虚拟化环境,所述可信虚拟机为支持TPM可信计算功能的虚拟机,所叙安全迁移,指对传输端进行可信验证,并借助VPN安全协议对传输过程进行加密处理。
图1是本发明的广域网可信虚拟机的安全迁移方法流程图。如图1所示,该方法包括:
S1,在广域网上部署两个数据中心,该两个数据中心之间通过建立两层桥接模式的虚拟专用网络进行网络连接,其中每个数据中心的业务节点运行虚拟机;
S2,将所述虚拟机镜像文件拆分为模板和用户私有数据,并将其分别储存于所述两个数据中心中的存储节点中,然后将每个数据中心的硬件资源虚拟化,以虚拟机的形式向用户提供服务;
S3,在所述两个数据中心之间通过部署虚拟可信平台创建并启动支持vTPM的可信虚拟机,并根据所述模板和用户私有数据生成与该可信虚拟机绑定的vTPM实例,然后加载TPM驱动;
S4,所述两个数据中心,一个作为源端,另一个作为目的端,根据所述vTPM实例对源端和目的端进行配置后,在源端对可信虚拟机的内存、CPU状态、磁盘、vTPM状态进行迁移,并在目的端进行恢复,实现vTPM和虚拟机的同步迁移。
进一步的,所述S1包括:
步骤11,在数据中心之外的广域网中随机选择一个节点作为VPNserver,每个数据中心选择一个节点作为VPNclient,所述VPNserver生成其建立服务和每个VPNclient请求连接时的认证文件,其中所述VPNserver为VPN服务器,VPNclient为VPN客户端;
步骤12,在所述VPNserver的配置文件中设置参数,包括:TCP协议,tap设备,IP地址,以及认证文件路径,之后启动VPNserver服务;
步骤13,所述每个数据中心选择一个节点作为VPNclient后将所述认证文件复制到该节点,并在VPNclient的配置文件中设置参数,包括:VPNserver的IP地址,TCP协议,tap设备,以及认证文件路径,之后启动VPNclient服务,所述VPNclient服务与VPNserver服务连接;
步骤14,在所述每个VPNclient上启动虚拟网桥,并将其与相应的tap设备对接;
步骤15,所述每个数据中心除VPNclient之外的节点上设置默认路由作为该数据中心的VPNclient的IP地址。
进一步的,所述S2包括:
步骤21,每个数据中心的所有存储节点形成统一的挂载接口,在该挂载接口上创建分布式文件系统的卷Volume,两个数据中心的Volume标记为Volume1、Volume2;
步骤22,将所述虚拟机镜像文件拆分为模板和用户私有数据,所述模板数据在用户请求服务时动态生成;
步骤22,将所述模板和用户私有数据分别存储于Volume1、Volume2。
进一步的,所述S3包括:
步骤31,在Dom0中加载TPM前端驱动,生成设备文件/dev/tpm0;
步骤32,在所述Dom0中加载TPM后端驱动,生成设备文件/dev/vtpm;
步骤33,配置并编译xen使其支持vTPM Manager、vTPM、及支持vTPM迁移;
步骤34,启动所述vTPM Manager,初始化监听线程;
步骤35,启动支持vTPM的可信虚拟机,在所述Dom0生成与虚拟机绑定的vTPM实例;
步骤36,在启动的可信虚拟机中加载所述TPM前端驱动。
进一步的,所述S4包括:
步骤41,在目的端开启vTPM实例迁移守护进程;
步骤42,在源端检查Hotplug脚本是否支持vTPM实例迁移,如果不支持,修改Hotplug脚本使其支持vTPM实例迁移,执行步骤43,若支持,直接执行步骤43;
步骤43,循环迭代拷贝虚拟机内存脏页到目的端;
步骤44,虚拟机进入停机拷贝阶段后,对剩余脏页、CPU状态、磁盘文件进行拷贝;
步骤45,停机拷贝后,激发vTPM迁移;
步骤46,vTPM迁移被激活后,调用脚本完成vTPM迁移的沟通迁移密钥;
步骤47,vTPM迁移调用沟通迁移密钥完成后,会继续调用脚本完成vTPM迁移的传送vTPM状态数据;
步骤48,在目的端恢复迁移过来的虚拟机,并对源端虚拟机及vTPM实例进行销毁。
图2是本发明的广域网可信虚拟机的安全迁移系统示意图。如图2所示,该系统包括:
建立连接模块100,在广域网上部署两个数据中心,该两个数据中心之间通过建立两层桥接模式的虚拟专用网络进行网络连接,其中每个数据中心的业务节点运行虚拟机;
拆分处理模块200,将所述虚拟机镜像文件拆分为模板和用户私有数据,并将其分别储存于所述两个数据中心中的存储节点中,然后将每个数据中心的硬件资源虚拟化,以虚拟机的形式向用户提供服务;
vTPM实例处理模块300,在所述两个数据中心之间通过部署虚拟可信平台创建并启动支持vTPM的可信虚拟机,并根据所述模板和用户私有数据生成与该可信虚拟机绑定的vTPM实例,然后加载TPM驱动;
迁移处理模块400,所述两个数据中心,一个作为源端,另一个作为目的端,根据所述vTPM实例对源端和目的端进行配置后,在源端对可信虚拟机的内存、CPU状态、磁盘、vTPM状态进行迁移,并在目的端进行恢复,实现vTPM和虚拟机的同步迁移。
进一步的,所述建立连接模块100包括:
VPNserver处理模块,在数据中心之外的广域网中随机选择一个节点作为VPNserver,每个数据中心选择一个节点作为VPNclient,所述VPNserver生成其建立服务和每个VPNclient请求连接时的认证文件,其中所述VPNserver为VPN服务器,VPNclient为VPN客户端;
参数设置模块,在所述VPNserver的配置文件中设置参数,包括:TCP协议,tap设备,IP地址,以及认证文件路径,之后启动VPNserver服务;
VPNclient处理模块,所述每个数据中心选择一个节点作为VPNclient后将所述认证文件复制到该节点,并在VPNclient的配置文件中设置参数,包括:VPNserver的IP地址,TCP协议,tap设备,以及认证文件路径,之后启动VPNclient服务,所述VPNclient服务与VPNserver服务连接;
虚拟处理模块,在所述每个VPNclient上启动虚拟网桥,并将其与相应的tap设备对接;
IP地址处理模块,所述每个数据中心除VPNclient之外的节点上设置默认路由作为该数据中心的VPNclient的IP地址。
进一步的,所述拆分处理模块200包括:
接口处理模块,每个数据中心的所有存储节点形成统一的挂载接口,在该挂载接口上创建分布式文件系统的卷Volume,两个数据中心的Volume标记为Volume1、Volume2;
拆分模块,将所述虚拟机镜像文件拆分为模板和用户私有数据,所述模板数据在用户请求服务时动态生成;
存储模块,将所述模板和用户私有数据分别存储于Volume1、Volume2。
进一步的,所述vTPM实例处理模块300包括:
加载前端模块,在Dom0中加载TPM前端驱动,生成设备文件/dev/tpm0;
加载后端模块,在所述Dom0中加载TPM后端驱动,生成设备文件/dev/vtpm;
配置处理模块,配置并编译xen使其支持vTPM Manager、vTPM、及支持vTPM迁移;
初始化模块,启动所述vTPM Manager,初始化监听线程;
vTPM实例生成模块,启动支持vTPM的可信虚拟机,在所述Dom0生成与虚拟机绑定的vTPM实例;
加载处理模块,在启动的可信虚拟机中加载所述TPM前端驱动。
进一步的,所述迁移处理模块400包括:
进程开启模块,在目的端开启vTPM实例迁移守护进程;
检查处理模块,在源端检查Hotplug脚本是否支持vTPM实例迁移,如果不支持,修改Hotplug脚本使其支持vTPM实例迁移,执行迭代处理模块,若支持,直接执行迭代处理模块;
迭代处理模块,循环迭代拷贝虚拟机内存脏页到目的端;
拷贝处理模块,虚拟机进入停机拷贝阶段后,对剩余脏页、CPU状态、磁盘文件进行拷贝;
激发迁移模块,停机拷贝后,激发vTPM迁移;
调用处理模块,vTPM迁移被激活后,调用脚本完成vTPM迁移的沟通迁移密钥;
vTPM数据传送模块,vTPM迁移调用沟通迁移密钥完成后,会继续调用脚本完成vTPM迁移的传送vTPM状态数据;
销毁处理模块,在目的端恢复迁移过来的虚拟机,并对源端虚拟机及vTPM实例进行销毁。
下面结合图3和4介绍本发明的一实施例,以OpenVPN-2.1.3作为建立数据中心之间连接的工具,Gluster-3.2.0作为每个数据中心存储虚拟机镜像的文件系统,Xen-4.1.0虚拟化平台为例,业务节点上的Dom0和存储节点上使用升级到linux-2.6.39.1内核的suse11操作系统,展开实现一种跨广域网可信虚拟机在线迁移方法的进一步说明。
可信虚拟机跨广域网在线迁移架构图,如图3所示,其中实线部分代表迁移前源端和目的端可信虚拟平台部署情况及跨广域网迁移的整体网络架构,虚线部分代表迁移到目的端的可信虚拟机部署情况。可信虚拟机跨广域网迁移方法流程图,如图4所示,描述了步骤C和步骤D关键步骤,重点描述了vTPM实例迁移step1和step2中相关对象的交互过程。其中vtpm_migrator和vtpm_migratord分别负责源端和目的端的vTPM状态数据的迁移工作,xc_domain_save和xc_domain_restore分别负责源端和目的端VM的迁移工作(包括内存、cpu状态、磁盘),vtpmd为vTPM实例守护进程,vtpm-impl代表用来解析、执行用户和系统命令的脚本,vtpm_manager则负责传达和执行vtpmd和虚拟机交互的指令,箭头及注射代表对象之间的具体交互行为。实施包括以下步骤:
A.两个Datacenter之间通过VPN建立虚拟专用的网络连接通道,使得连接后Vlan1和Vlan2中的所有节点可以通过原有IP地址通信。具体的一个实施步骤为:
A1.在Datacenter1和Datacenter2之外的广域网中选择一个节点作为VPNserver,IP地址为202.201.46.156。在其上生成自己建立服务和每个VPNclient请求连接时需要的认证文件,包括:.ca.Key,.crt,.crs,和.pem等文件。
本步骤中所述的认证文件,均由VPNserver生成,其.ca文件只有一个,VPNserver和VPNclient使用同一文件,.pem文件只为VPNserver使用,其余认证文件,每个节点之上都使用同一套,且互不相同。
A2.在VPNserver中的配置文件中设置协议为TCP,tap模式,tap设备使用的虚拟IP地址为10.10.0.0,以及认证文件路径。启动服务。
A3.Datacenter1中选择一个节点作为VPNclient,该节点拥有两个网络适配器,其中eth0上IP为11.11.11.88地址属于VLan1,eth1上为广域网上的IP地址,将VPNserver生成的认证文件复制到该节点,同样在配置文件中设置VPNserver的IP地址为202.201.46.156,TCP协议,tap设备,以及认证文件路径,启动服务。
A4.在Vlan1中的VPNclient上启动虚拟网桥vpnbr0,将其与tap0设备对接。并在eth0上设置到Datacenter2的net。
A5.数据中心中除VPNclient之外的业务节点上的设置默认路由为11.11.11.88。
本步骤中B3-B5以Datacenter1为例,Datacenter2同理实施。连接后两个数据中心的节点可以相互通信。
B.每个数据中心包括多个业务节点和存储节点,并属于同一逻辑局域网,虚拟机镜像文件template和Qcow存储于独立节点上的文件系统中。具体的一个实施步骤为:
B1.两个数据中心Datacenter1和Datacenter2。Datacenter1中的所有节点属于Vlan1,每个节点的IP地址为11.11.11.X。Datacenter2中的所有节点属于Vlan2,每个节点的IP地址为12.12.12.X。
步骤A1中所述“Vlan”为逻辑局域网。
B2.所有存储节点运行glusterfs server,并将所有存储节点通过glusterfs的peer功能绑定形成统一的挂载接口,在其中创建两个Volume分别为Vol-template和Vol-vm。
B3.所有业务节点运行xen-4.1.0虚拟化计算环境和Glusterfs client,并且挂载存储节点上的Vol-template到本地路径/vm/template,挂载Vol-vm到本地路径/home/vm下。
B4.Vol-template中存储模板镜像template,Vol-vm中存储用户私有数据Qcow。
C.通过配置并启动vTPM、vTPM Manager、TPM前后端驱动、TPM原生驱动及支持vTPM的DomU,搭建一个能为多个DomU提供独立的基于TPM的可信计算功能的平台。其中C1-C4在xen和Dom0上搭建可信虚拟平台,C5-C6在C1-C4的基础上创建可信虚拟机。针对本实例需要在迁移的源端和目的端同时执行步骤C1-C4搭建可信虚拟平台,同时在源端执行步骤C5-C6创建一台可信虚拟机。Dom0是Xen虚拟框架中起管理的域,用于管理其他Dom,同时为其他Dom与Xen的交互提供一些接口等功能。此外Dom0作为一个完整的操作系统在Xen的实现中也起到了关键作用,将一些原本应该在Xen中实现的功能转移到了Dom0中实现。vTPM Manager是vTPM架构下对vTPM进行管理控制的实体。
C1.在Dom0中加载TPM前端驱动。在主机BIOS中开启对TPM芯片的支持,在打过Xen补丁的linux内核中通过make menuconfig开启Dom0对TPM原生驱动的支持,重新编译内核,配置好后,进入Dom0,使用命令modrpbetpm_tis force=1tpm_tis=1加载TPM原生驱动模块,完成后会自动生成TPM原生驱动设备文件/dev/tpm0。Xen是一种虚拟机监视器,通过类虚拟化、基于硬件的全虚拟化等方式可以在一台物理主机上虚拟出多套物理设备并在其上运行操作系统。
C2.在Dom0中加载TPM后端驱动。在打过Xen补丁的linux内核中通过make menuconfig开启dom0对TPM后端驱动的支持,然后重新编译内核,并配置好开机启动项。重启后,使用modrpobe tpmbk命令加载TPM后端驱动,此时会自动生成TPM驱动设备文件:/dev/vtpm。
C3.配置并编译xen使其支持vTPM Manager、vTPM、与vTPM迁移。开启xen-4.1.0/Config.mk的vtpm tools工具,使其支持vTPM Manager。在tools/vtpm/Rules.mk中开启BUILD_EMULATOR=y,自动下载tpm emulator,并通过相应的emulator补丁,生成vTPM。同时将tools/vtpm_manager/manager/dmictl.c中代码修改为dmi_type=VTPM_TYPE_MIGRATABLE,使vTPM实例能支持迁移功能。配置完成后,使用命令make tools;make xen;makeinstall-tools;make install-xen重新安装xen。
C4.在shell中输入Vtpm_manager命令,启动vTPM Manager工具。vTPMManager在启动的时候会先获取物理TPM的Ownership,然后生成HotplugListener、Vtpm Listener、Backend Linstener三个监听线程。
C5.启动支持vTPM的虚拟机,在Dom0生成与虚拟机绑定的vTPM实例。启动支持vTPM的虚拟机,在Dom0生成与虚拟机绑定的vTPM实例。在虚拟机的配置文件中添加vtpm=['instance=1,backend=0'],当Dom0执行xm create指令创建一个新的DomU时通过执行相关脚本与xenstore进行读写操作,让Hotplug Listener得知有新的DomU启动。并令经过改进后的TPM Emulator作为vTPM,受vTPM Manager的控制。当Hotplug Listener得知有新的DomU启动时就创建一个vTPM实例,并与DomU绑定。
C6.在DomU内加载TPM前端驱动。在DomU内核中通过make menuconfig开启内核图形化配置界面。在路径Device driver>Character device>TPMDevices下设置Xen TPM Interface为可加载模块,重新编译内核,并配置启动选项,重启系统后通过命令modprobe tpm_xenu加载TPM前端驱动。通过命令cat/sys/devices/xen/vtpm-0/pcrs可以查看TPM对应的PCR寄存器的值。
D.可信虚拟机迁移。在源端进行D2配置和目的端进行D1配置后,开始在源端对可信虚拟机的内存、CPU状态、磁盘、vTPM状态进行迁移,并在目的端进行恢复。其中,D3-D4完成内存、CPU状态、磁盘的迁移,D5-D7完成vTPM状态的迁移,D8在目的端恢复迁移的虚拟机。
D1.在目的端的shell终端中执行vtpm_migratord命令,开启vTPM实例迁移守护进程vtpm_migratord,该进程负责在目的端监听并相应vTPM实例数据的迁移。
D2.在源端检查hotplug脚本是否支持vTPM实例迁移。为了支持vTPM实例迁移,需要通过修改/etc/xen/xend-config.sxp中的外部迁移工具选项,(external-migration-tool/etc/xen/scripts/external-device-migrate),获取外部迁移工具external-device-migrate,使虚拟机迁移在停机拷贝期间能自动调用vtpm_migrator命令完成vTPM实例的迁移。若Hotplug脚本不支持vTPM实例迁移,将无法继续之后的步骤。因此需要修改Hotplug脚本以使其能够支持vTPM的实例迁移。
D3.循环迭代拷贝虚拟机内存脏页到目的主机。在shell终端中输入xmmigrate-l server12.12.12.X后相关的python脚本会调用xc_domain_save进程,将虚拟机内存脏页的循环迭代传送到目的虚拟机中,目的端由xc_domain_restore进程对传送的内存数据进行处理。当达到循环迭代拷贝停机条件时,虚拟机结束循环迭代拷贝,并进入停机拷贝阶段。
D4.虚拟机进入停机拷贝极端后,xc_domain_save对剩余脏页、CPU状态、磁盘文件进行拷贝。xc_domain_save会先完成对剩余脏页的拷贝,然后对CPU状态进行拷贝。对磁盘文件的拷贝需要在xc_domain_save添加对Qcow磁盘文件传送的功能,同时目的端在xc_domain_restore添加对Qcow文件接收的功能。
D5.停机拷贝后,激发vTPM迁移。在D4进行的同时,xc_domain_save会将虚拟机的停机状态存储到xenstore中,Dom0中会有一个守护进程一直监听虚拟机的状态,一旦状态变为停机状态时,会开始对vTPM实例进行迁移。
D6.vTPM迁移被激活后,调用脚本vtpm-impl.sh执行vtpm_migrator12.12.12.X server81命令,完成vTPM迁移的step1:沟通迁移密钥。Vtpm-impl.sh脚本将相应的参数传递给vtpm_migrator,vtpm_migrator向目的端的vtpm_migratord守护进程申请vTPM迁移密钥。目的端的vtpm_migratord通过给本地的vtpm_manager发送VTPM_ORD_GET_MIG_KEY命令获取迁移密钥,并返还给源端的vtpm_migrator。Vtpm_migrator通过向本地vtpm_manager发送VTPM_ORD_LOAD_MIG_KEY加载目的端迁移密钥(其中vTPM实例号8通过xenstore-ls|grep instance查询获取)。
D7.vTPM迁移step1完成后,会继续调用vtpm-impl.sh脚本执行vtpm_migrator12.12.12.X server82完成vTPM迁移的step2:传送vTPM状态数据。Vtpm-impl.sh脚本会将相应的参数传递给vtpm_migrator,vtpm_migrator会向本地的vtpm_manager发送VTPM_ORD_MIGRATE_OUT命令要求vtpm_manager对实例8停止运行,并对实例的状态数据打包返回给vtpm_migrator。Vtpm_migrator发送vTPM实例状态数据给目的端的vtpm_migratord。vtpm_migratord通过向本地vtpm_manager发送VTPM_ORD_MIGRATE_IN解包并加载vTPM状态数据,并启动vTPM实例。
D8.在目的端恢复迁移过来的虚拟机,发送消息对源端虚拟机及vTPM实例进行销毁。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。