一种数据处理方法、虚拟机装置及虚拟机架构与流程

文档序号:18831141发布日期:2019-10-09 03:27阅读:219来源:国知局
一种数据处理方法、虚拟机装置及虚拟机架构与流程

本申请涉及虚拟机技术领域,尤其涉及一种数据处理方法、虚拟机装置及虚拟机架构。



背景技术:

为了保障系统可靠性,通常为主虚拟机配置备用的辅虚拟机,在主虚拟机崩溃之后,可以切换到辅虚拟机上继续运行相关程序,保证服务不会中断。为了能够在切换虚拟机时,辅虚拟机能够保障服务不中断,通常主虚拟机在进行数据处理时,辅虚拟机也同步进行相应的数据处理,即数据同步及内存状态的同步处理。

目前,主虚拟机中为了实现数据同步,通常是另外设置一个隐藏磁盘如hidden磁盘来备份主虚拟机对共享磁盘上进行数据读写时的增量数据,进而在数据同步时,可以将hidden磁盘的数据清空。

但是在数据同步间隔时间较长时,hidden磁盘中的数据量较大,导致数据清空所耗时间较长,引起主虚拟机暂停的时间较长。



技术实现要素:

有鉴于此,本申请提供一种数据处理方法、虚拟机装置及虚拟机架构,用以减少主虚拟机和辅虚拟机之间进行数据同步时的耗时。

本申请提供了一种一种数据处理方法,包括:

获得数据访问指令,所述数据访问指令为主虚拟机向辅虚拟机发送的指令;

响应于所述数据访问指令,在对所述辅虚拟机设置的内存区域中进行数据访问;

其中,所述内存区域中的数据在所述主虚拟机与所述辅虚拟机进行数据同步时被所述辅虚拟机处理。

上述方法,优选的,所述数据访问指令为数据写入指令,其中,在对所述辅虚拟机设置的内存区域中进行数据访问,包括:

在对所述辅虚拟机设置的内存区域中写入与所述数据写入指令对应的第一数据。

上述方法,优选的,所述数据访问指令为数据写入指令,其中,在对所述辅虚拟机设置的内存区域中进行数据访问,包括:

基于所述数据写入指令对应的第一数据,更新所述内存区域与存储磁盘之间的地址映射关系,其中,所述存储磁盘为所述主虚拟机进行数据存储的磁盘。

上述方法,优选的,所述数据访问指令为数据读取指令,其中,在对所述辅虚拟机设置的内存区域中进行数据访问,包括:

在对所述辅虚拟机设置的内存区域中,读取与所述数据读取指令相对应的第二数据。

上述方法,优选的,所述数据访问指令为数据读取指令,其中,在对所述辅虚拟机设置的内存区域中进行数据访问,包括:

基于所述辅虚拟机的内存区域与存储磁盘之间的地址映射关系,在所述存储磁盘中读取所述第二数据。

上述方法,优选的,所述内存区域中的数据在所述主虚拟机与所述辅虚拟机进行数据同步时被所述辅虚拟机处理,包括:

所述内存区域中的数据被所述辅虚拟机清空;

或者,

所述内存区域与存储磁盘之间的地址映射关系被所述辅虚拟机复位。

上述方法,优选的,还包括:

响应于虚拟机切换指令,在所述内存区域中读取第三数据,并将所述第三数据写入到存储磁盘中,以使得所述辅虚拟机作为主虚拟机对所述存储磁盘进行数据访问。

本申请还提供了一种虚拟机装置,包括:

内存区域,用于存储数据;

控制器,用于获得数据访问指令,所述数据访问指令为主虚拟机向辅虚拟机发送的指令,响应于所述数据访问指令,在所述内存区域中进行数据访问;

其中,所述内存区域中的数据在所述主虚拟机与所述辅虚拟机进行数据同步时被所述控制器处理。

本申请还提供了一种虚拟机架构,包括:

主虚拟机和辅虚拟机;

其中,所述主虚拟机用于响应于数据访问指令,对存储磁盘上的数据进行访问;

所述辅虚拟机,用于接收所述主虚拟机发送的所述数据访问指令;响应于所述数据访问指令,在对所述辅虚拟机设置的内存区域中进行数据访问;

其中,所述内存区域中的数据在所述主虚拟机与所述辅虚拟机进行数据同步时被所述辅虚拟机处理。

从上述技术方案可以看出,本申请公开的一种数据处理方法、虚拟机装置及虚拟机架构,通过在辅虚拟机中设置内存区域,在主虚拟机进行数据访问时,在辅虚拟机上同步在内存区域中进行数据访问,由此,在后续主虚拟机与辅虚拟机进行数据同步时,辅虚拟机可以对内存区域中的数据进行处理。可见,本申请中通过在辅虚拟机中设置内存区域,由此在主虚拟机和辅虚拟机之间进行数据同步时,以内存区域的处理取代对磁盘的处理,由于内存的读写速率明显高于磁盘的读写速率,因此本申请能够减少在数据同步是进行内存数据处理的耗时,从而减少数据同步的耗时,进而能够降低主虚拟机的暂停时长。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例一提供的一种数据处理方法的实现流程图;

图2-图4分别为本申请实施例的应用示例图;

图5为本申请实施例二提供的一种虚拟机装置的结构示意图;

图6为本申请实施例三提供的一种虚拟机架构的结构示意图;

图7-图9分别为本申请实施例的其他示例图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

如图1所示,为本申请实施例一提供的一种数据处理方法的实现流程图,在本实施例中,该方法适用于辅虚拟机(sparevirtualmachine)上,也可以成为备用虚拟机,具体可以由辅虚拟机上的控制模块dfc(dataflowcontrol),该辅虚拟机是针对主虚拟机pvm(principalvirtualmachine)进行搭建的,主虚拟机与辅虚拟机之间实时进行数据同步,即每次主虚拟机对存储磁盘(共享磁盘,sharedisk)进行数据访问时,辅虚拟机对数据访问所产生的增量数据进行记录,而每到同步检查点checkpoint时,辅虚拟机清空针对主虚拟机对存储磁盘上进行数据访问所同步的增量数据。

在本实施例中,该方法可以包括以下步骤:

步骤101:获得数据访问指令。

其中,数据访问指令为主虚拟机向辅虚拟机发送的指令,如主虚拟机在对磁盘执行数据写入或读取指令之后,将该指令同步发送给辅虚拟机。在辅虚拟机一侧,对主虚拟机同步发送的数据访问指令进行接收。

需要说明的是,数据访问指令可以是数据写入指令,主虚拟机在数据写入指令下,在存储磁盘中写入第一数据;数据访问指令也可以为数据读取指令,主虚拟机在数据读取指令在,从存储磁盘中读取第二数据。在具体实现中,主虚拟机上可以设置有控制模块dfc,由主虚拟机的dfc在数据写入指令下在存储磁盘中写入第一数据,由主虚拟机的dfc在数据读取指令下,从存储磁盘中读取第二数据。

步骤102:响应于数据访问指令,在对辅虚拟机设置的内存区域中进行数据访问。

具体的,辅虚拟机中的dfc在数据访问指令下在内存区域中进行相应的数据访问,如写入数据或读取数据等,由此,辅虚拟机将主虚拟机在存储磁盘进行数据访问的增量数据实时同步到内存区域中。

其中,内存区域是在虚拟机架构中为辅虚拟机设置的存储区域,如图2中所示,该内存区域可以以随机存取存储器磁盘ram(randomaccessmemory)disk实现,由辅虚拟机进行访问控制,具体的,内存区域由辅虚拟机上的dfc进行访问控制。

由此,内存区域中的数据在主虚拟机与辅虚拟机进行数据同步时被辅虚拟机处理,例如,在同步检查点的时刻到达时,辅虚拟机对内存区域中的数据进行清空,以完成主虚拟机和辅虚拟机之间的同步;或者,在主虚拟机与辅虚拟机之间进行切换时,利用内存区域中的数据进行数据还原,从而实现虚拟机之间的切换,等等。

由以上方案可见,本申请实施例一提供的一种数据处理方法,通过在辅虚拟机中设置内存区域,在主虚拟机进行数据访问时,在辅虚拟机上同步在内存区域中进行数据访问,由此,在后续主虚拟机与辅虚拟机进行数据同步时,辅虚拟机可以对内存区域中的数据进行处理。可见,本申请中通过在辅虚拟机中设置内存区域,由此在主虚拟机和辅虚拟机之间进行数据同步时,以内存区域的处理取代对磁盘的处理,由于内存的读写速率明显高于磁盘的读写速率,因此本申请能够减少在数据同步是进行内存数据处理的耗时,从而减少数据同步的耗时,进而能够降低主虚拟机的暂停时长。

需要说明的是,在具体实现中,辅虚拟机和主虚拟机进行数据访问可以通过各自内部的dfc模块实现,具体的,辅虚拟机和主虚拟机的dfc模块工作在hypervisior层,两者的dfc在主虚拟机和辅虚拟机所在主机的qemu中进行通信。如图3中所示,处于qemu中的主虚拟机的dfc在数据访问指令下对存储磁盘进行数据访问的同时,主虚拟机的dfc通过套接字socket方式将数据访问指令传输给处于qemu中的辅虚拟机的dfc,以通知到辅虚拟机在内存区域进行同步的数据访问。

在一种实现方式中,为了节省内存区域的占用空间,本实施例中可以对内存区域与存储磁盘之间建立地址映射关系,由此,辅虚拟机中无需将所有存储磁盘中的增量数据均同步到内存区域,而是通过在内存区域中建立与存储磁盘之间的地址映射关系,具体可以在辅虚拟机的dfc中维护存储磁盘的逻辑地址与内存区域的虚拟地址之间的地址映射关系,该地址映射关系可以以地址映射表的形式存在,如图4中所示。也就是说内存区域中可以存储有地址指针,由此,辅虚拟机对于增量数据的写入可以通过更新内存区域和存储区域之间的地址映射关系来重复利用之前的内存空间,例如,辅虚拟机可以通过读取内存区域中的地址指针,进而在地址指针在存储磁盘指向的地址上同步增量数据,从而在后续进行数据访问时,可以通过内存区域与存储磁盘之间的地址映射关系来对存储磁盘上的数据进行数据访问。

也就是说,本实施例中可以在辅虚拟机中设置内存区域,用于存储增量数据或者存储增量数据在存储磁盘中的地址指针,在具体实现中,内存区域用于存储增量数据时所需要设置的空间需要与存储磁盘的空间一致或近似一致,而在内存区域用于存储地址指针,即建立内存区域与存储磁盘之间的地址映射关系来进行增量数据的访问时,内存区域所需要设置的空间可以设置为存储磁盘的空间的10%或其他比例,就可以实现增量数据的数据访问,由此可以尽量减少对主机内存空间的占用。

在一种实现方式中,数据访问指令为数据写入指令,相应的,在辅虚拟机中,步骤102具体可以通过以下方式实现:

在对辅虚拟机设置的内存区域中,写入与数据写入指令相对应的第一数据。

由此,在主虚拟机在存储磁盘中基于数据写入指令写入相应的第一数据的同时,辅虚拟机在内存区域中写入第一数据,实现增量数据的同步。

在另一种实现方式中,辅虚拟机在获得到主虚拟机同步发送的数据写入指令后,也可以基于数据写入指令对应的第一数据,更新内存区域与存储磁盘之间的地址映射关系,而不需要直接将第一数据写入到内存区域中,由此,可以节省内存区域的占用空间的前提下,实现实时的增量数据写入。

需要说明的是,存储磁盘为主虚拟机进行数据存储的磁盘。

在一种实现方式中,数据访问指令可以为数据读取指令,相应的,在辅虚拟机中,步骤102具体可以通过以下方式实现:

在对辅虚拟机设置的内存区域中,读取与数据读取指令相对应的第二数据。

由此,在主虚拟机在存储磁盘中读取第二数据的同时,辅虚拟机在内存区域中读取第二数据,实现增量数据的同步。

或者,在另一种实现方式中,辅虚拟机在获得主虚拟机同步发送的数据读取指令后,也可以基于辅虚拟机的内存区域和存储磁盘之间的地址映射关系,在存储磁盘中读取与数据读取指令相对应的第二数据,而不是直接在内存区域中读取第二数据,由此,内存区域在辅虚拟机中可以占用较少的空间,达到节省空间的目的。

在一种实现方式中,主虚拟机和辅虚拟机在同步检查点的时刻到达时进行数据同步,这里的数据同步是指辅虚拟机对从前一个同步检查点到当前的同步检查点之间的增量数据进行清空,由此,内存区域中的增量数据在主虚拟机与辅虚拟机进行数据同步时被辅虚拟机处理,可以通过以下实现方式实现:

一种方式中,内存区域中的数据被辅虚拟机进行清空,也就是说,内存区域中存储的是辅虚拟机所写入的两个同步检车点之间的存储磁盘的增量数据,此时,在当前的同步检查点上,辅虚拟机将内存区域中的数据清空,完成数据同步;

另一种方式中,内存区域与存储磁盘之间的地址映射关系被辅虚拟机复位,也就是说,内存区域中存储的并非增量数据,而是指向存储磁盘中增量数据的地址指针,由此,当前的同步检查点上,辅虚拟机对内存区域与存储磁盘之间的地址映射关系进行复位,以恢复到写入增量数据之前的地址指向状态,完成数据同步。

在一种实现方式中,主虚拟机存在崩溃的风险,此时,主虚拟机需要向辅虚拟机进行迁移切换,此时,主虚拟机在崩溃前生成虚拟机切换指令,由虚拟机对该虚拟机切换指令进行获取,并响应,此时,辅虚拟机在内存区域中读取第三数据,并将第三数据覆盖写入到存储磁盘中,从而使得辅虚拟机作为新的主虚拟机对存储磁盘进行数据访问;或者辅虚拟机根据内存区域与存储磁盘之间的地址映射关系,对存储磁盘中的数据进行修正或覆盖写入,使得辅虚拟机作为新的主虚拟机对存储磁盘进行数据访问。

参考图5,为本申请实施例二提供的一种虚拟机装置的结构示意图,该虚拟机装置可以为对主虚拟机搭建的辅虚拟机,在辅虚拟机中可以包括以下结构:

内存区域501,用于存储数据。

其中,内存区域501中的数据可以增量数据,也可以为指向存储磁盘的地址指针数据。

控制器502,用于获得数据访问指令,响应于所述数据访问指令,在所述内存区域中进行数据访问;

需要说明的是,控制器502可以为在虚拟机所在主机的qemu上设置的dfc模块实现,用于对主虚拟机的dfc发送来的数据访问指令进行响应,并在内存区域中进行数据访问。

其中,数据访问指令为主虚拟机向辅虚拟机发送的指令,如主虚拟机在对磁盘执行数据写入或读取指令之后,将该指令同步发送给辅虚拟机。在辅虚拟机一侧,对主虚拟机同步发送的数据访问指令进行接收。

需要说明的是,数据访问指令可以是数据写入指令,主虚拟机在数据写入指令下,在存储磁盘中写入第一数据;数据访问指令也可以为数据读取指令,主虚拟机在数据读取指令在,从存储磁盘中读取第二数据。在具体实现中,主虚拟机上可以设置有控制模块dfc,由主虚拟机的dfc在数据写入指令下在存储磁盘中写入第一数据,由主虚拟机的dfc在数据读取指令下,从存储磁盘中读取第二数据。

具体的,辅虚拟机中的dfc在数据访问指令下在内存区域中进行相应的数据访问,如写入数据或读取数据等,由此,辅虚拟机将主虚拟机在存储磁盘进行数据访问的增量数据实时同步到内存区域中。

其中,内存区域是在虚拟机架构中为辅虚拟机设置的存储区域,如图2中所示,该内存区域可以以ramdisk实现,由辅虚拟机进行访问控制,具体的,内存区域由辅虚拟机上的dfc进行访问控制。

而所述内存区域中的数据在所述主虚拟机与所述辅虚拟机进行数据同步时被所述控制器502处理。例如,在同步检查点的时刻到达时,辅虚拟机的控制器502对内存区域中的数据进行清空,以完成主虚拟机和辅虚拟机之间的同步;或者,在主虚拟机与辅虚拟机之间进行切换时,辅虚拟机的控制器502利用内存区域中的数据进行数据还原,从而实现虚拟机之间的切换,等等。

由以上方案可见,本申请实施例二提供的一种虚拟机装置,通过在虚拟机装置即辅虚拟机中设置内存区域,在主虚拟机进行数据访问时,在辅虚拟机上同步在内存区域中进行数据访问,由此,在后续主虚拟机与辅虚拟机进行数据同步时,辅虚拟机可以对内存区域中的数据进行处理。可见,本申请中通过在辅虚拟机中设置内存区域,由此在主虚拟机和辅虚拟机之间进行数据同步时,以内存区域的处理取代对磁盘的处理,由于内存的读写速率明显高于磁盘的读写速率,因此本申请能够减少在数据同步是进行内存数据处理的耗时,从而减少数据同步的耗时,进而能够降低主虚拟机的暂停时长。

在一种实现方式中,所述数据访问指令为数据写入指令,其中,控制器502在对所述辅虚拟机设置的内存区域中进行数据访问,包括:

在对所述辅虚拟机设置的内存区域中写入与所述数据写入指令对应的第一数据;

或者,

基于所述数据写入指令对应的第一数据,更新所述内存区域与存储磁盘之间的地址映射关系,其中,所述存储磁盘为所述主虚拟机进行数据存储的磁盘。

在一种实现方式中,所述数据访问指令为数据读取指令,其中,控制器502在对所述辅虚拟机设置的内存区域中进行数据访问,包括:

在对所述辅虚拟机设置的内存区域中,读取与所述数据读取指令相对应的第二数据;

或者,

基于所述辅虚拟机的内存区域与存储磁盘之间的地址映射关系,在所述存储磁盘中读取所述第二数据。

具体的,所述内存区域中的数据在所述主虚拟机与所述辅虚拟机进行数据同步时被所述辅虚拟机处理,具体可以包括:

所述内存区域中的数据被所述辅虚拟机清空;

或者,所述内存区域与存储磁盘之间的地址映射关系被所述辅虚拟机复位。

另外,本实施例中在辅虚拟机上,控制器502还可以响应于虚拟机切换指令,在所述内存区域中读取第三数据,并将所述第三数据写入到存储磁盘中,以使得所述辅虚拟机作为主虚拟机对所述存储磁盘进行数据访问。

参考图6,为本申请实施例三提供的一种虚拟机架构的结构示意图,该虚拟机架构可以在搭建有虚拟机的主机上,具体的,该虚拟机架构中包括:

主虚拟机601和辅虚拟机602;

其中,所述主虚拟机601用于响应于数据访问指令,对存储磁盘上的数据进行访问;

所述辅虚拟机602,用于接收所述主虚拟机601发送的所述数据访问指令;响应于所述数据访问指令,在对所述辅虚拟机设置的内存区域中进行数据访问;

其中,所述内存区域中的数据在所述主虚拟机与所述辅虚拟机进行数据同步时被所述辅虚拟机处理。

需要说明的是,辅虚拟机602中可以包括有ramdisk实现的内存区域和控制器,其具体的实现结构及实现方式可以参考前文中图5及相关实施例内容,此处不再详述。

在具体实现中,辅虚拟机602中可以在虚拟机所在主机的qemu上设置的dfc模块,用于对主虚拟机的dfc发送来的数据访问指令进行响应,并在辅虚拟机602的内存区域中进行数据访问。

其中,数据访问指令为主虚拟机向辅虚拟机发送的指令,如主虚拟机在对磁盘执行数据写入或读取指令之后,将该指令同步发送给辅虚拟机。在辅虚拟机一侧,对主虚拟机同步发送的数据访问指令进行接收。

需要说明的是,数据访问指令可以是数据写入指令,主虚拟机在数据写入指令下,在存储磁盘中写入第一数据;数据访问指令也可以为数据读取指令,主虚拟机在数据读取指令在,从存储磁盘中读取第二数据。在具体实现中,主虚拟机上可以设置有控制模块dfc,由主虚拟机的dfc在数据写入指令下在存储磁盘中写入第一数据,由主虚拟机的dfc在数据读取指令下,从存储磁盘中读取第二数据。

具体的,辅虚拟机中的dfc在数据访问指令下在内存区域中进行相应的数据访问,如写入数据或读取数据等,由此,辅虚拟机将主虚拟机在存储磁盘进行数据访问的增量数据实时同步到内存区域中。

其中,内存区域是在虚拟机架构中为辅虚拟机设置的存储区域,如图2中所示,该内存区域可以以ramdisk实现,由辅虚拟机进行访问控制,具体的,内存区域由辅虚拟机上的dfc进行访问控制。

而所述内存区域中的数据在所述主虚拟机与所述辅虚拟机进行数据同步时被辅虚拟机处理。例如,在同步检查点的时刻到达时,辅虚拟机对内存区域中的数据进行清空,以完成主虚拟机和辅虚拟机之间的同步;或者,在主虚拟机与辅虚拟机之间进行切换时,辅虚拟机利用内存区域中的数据进行数据还原,从而实现虚拟机之间的切换,等等。

由以上方案可见,本申请实施例三提供的一种虚拟机架构,通过在辅虚拟机中设置内存区域,在主虚拟机进行数据访问时,在辅虚拟机上同步在内存区域中进行数据访问,由此,在后续主虚拟机与辅虚拟机进行数据同步时,辅虚拟机可以对内存区域中的数据进行处理。可见,本申请中通过在辅虚拟机中设置内存区域,由此在主虚拟机和辅虚拟机之间进行数据同步时,以内存区域的处理取代对磁盘的处理,由于内存的读写速率明显高于磁盘的读写速率,因此本申请能够减少在数据同步是进行内存数据处理的耗时,从而减少数据同步的耗时,进而能够降低主虚拟机的暂停时长。

在一种实现方式中,所述数据访问指令为数据写入指令,其中,辅虚拟机在对所述辅虚拟机设置的内存区域中进行数据访问,包括:

在对所述辅虚拟机设置的内存区域中写入与所述数据写入指令对应的第一数据;

或者,

基于所述数据写入指令对应的第一数据,更新所述内存区域与存储磁盘之间的地址映射关系,其中,所述存储磁盘为所述主虚拟机进行数据存储的磁盘。

在一种实现方式中,所述数据访问指令为数据读取指令,其中,辅虚拟机在对所述辅虚拟机设置的内存区域中进行数据访问,包括:

在对所述辅虚拟机设置的内存区域中,读取与所述数据读取指令相对应的第二数据;

或者,

基于所述辅虚拟机的内存区域与存储磁盘之间的地址映射关系,在所述存储磁盘中读取所述第二数据。

具体的,所述内存区域中的数据在所述主虚拟机与所述辅虚拟机进行数据同步时被所述辅虚拟机处理,具体可以包括:

所述内存区域中的数据被所述辅虚拟机清空;

或者,所述内存区域与存储磁盘之间的地址映射关系被所述辅虚拟机复位。

另外,本实施例中在辅虚拟机上还可以响应于虚拟机切换指令,在所述内存区域中读取第三数据,并将所述第三数据写入到存储磁盘中,以使得所述辅虚拟机作为主虚拟机对所述存储磁盘进行数据访问。

以主机上的主虚拟机pvm和辅虚拟机svm为例,对以上本实施例中的技术方案进行具体说明,如下:

本实施例的核心方案在于:在主机的qemu中设计了一个模块:dfc模块和使用这个模块实现输入输出同步的流程。其中,dfc模块会在辅虚拟机的主机上建立内存磁盘,如ramdisk,以供辅虚拟机使用。两个虚拟机所在的主机之间的dfc可以建立套接字通信,将写覆盖前的旧数据预取到内存中,供辅虚拟机使用,辅虚拟机的dfc可以根据主虚拟机的dfc采集到的读写请求,对数据做缓存。

基于本方案,首先,主虚拟机在同步检查点时,只需同步内存状态,大大缩短同步时间,辅虚拟机对内存磁盘中的数据清空或地址映射关系进行复位,不占用主虚拟机的运行时间,避免在同步检查点上主虚拟机的暂停时间过长;而且,由辅虚拟机对内存磁盘进行数据处理,而避免了主虚拟机由于写数据备份带来的性能损失,进一步也减少了同步流程中要占用的额外存储空间。

另外,辅虚拟机读写都在操作内存,并且dfc提供数据缓存功能,由此,能够对辅虚拟机的性能有提升。

如图7中的虚拟机架构图所示,主虚拟机和辅虚拟机各自的dfc模块工作在hypervisior层,在主虚拟机pvm和辅虚拟机svm所在主机的qemu中进行通信,例如基于传输控制协议tcp(transmissioncontrolprotocol)的socket方式。在svm启动后,dfc会给其分配一段主机内存,svm将这段存储空间做为磁盘使用(ramdisk)。dfc会时刻监控和记录svm对这块内存的操作,为其维护到共享磁盘(sharediskimage)的映射。

其中,在pvm收到读写请求时,pvm会将请求拷贝(commandreplication)并发送给svm,svm根据请求读写磁盘时,实际上读写的磁盘对象是dfc分配给svm的一块主机内存空间。

而pvm和svm各自的dfc之间通过socket进行通信,pvm可以将读请求用到的数据地址提前发送给svm所在的dfc,后者可以主动将数据从共享磁盘拷贝到ramdisk中供svm读取。

另外,pvm直接操作共享磁盘。svm对应的dfc需要维护一份svm磁盘的逻辑地址和主机内存虚拟地址的映射表,这样ramdisk就不需要与共享磁盘大小一致,对ramdisk的写入通过更新映射表而重复利用之前的内存空间,因此可以将ramdisk的容量设置为共享磁盘的10%。

而在pvm向svm的切换时,ramdisk中的数据依旧可以使用,必要时可以刷进共享磁盘,随后关闭ramdisk。

基于以上实现可知,本实施例中读写ramdisk本身就可以提高输入输出性能,进而提高svm性能。另外,在同步检查点时,svm可以直接复位映射表或者读写内存,使得数据同步能够快速实现,因此pvm暂停时间就主要取决于内存同步时间,能够降低到较少的时长。

具体的,如图8中写命令writecommand的处理流程所示:pvm通过步骤1和2将数据写入共享磁盘。svm通过步骤3将数据写入ramdisk。在发生主虚拟机宕机,向辅助虚拟机切换时,或者ramdisk容量接近满额时,使用步骤4将数据写入共享磁盘或者更新映射表。其中,svm对应的dfc需要维护ramdisk中逻辑地址和主机内存逻辑地址的映射关系。

如图9中的读命令readcommand的处理流程所示:pvm通过步骤1和2将数据从共享磁盘中取出。对于没有修改过的数据,通过步骤3,svm对应的dfc根据映射表从共享磁盘中取出数据直接给到svm,或者通过步骤4将数据从ramdisk中取出给到svm。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1