本发明涉及计算机技术领域,特别涉及一种虚拟机磁盘数据迁移方法及装置。
背景技术:
近年来随着云计算技术的快速发展,使得虚拟机技术得到了更加广泛的应用。实际应用中,由于用户对虚拟机硬盘、内存资源的需求发生变化、虚拟机对应的物理机故障等因素的影响,可能会需要将虚拟机的磁盘数据从当前物理机迁移至其他物理机的情况。
现有技术中,迁移虚拟机的磁盘数据时,虚拟机通常是直接通过其对应的物理机的I/O资源将其磁盘数据发送至目标物理机,直至发送完成虚拟机的全部磁盘数据。然而,通常情况下,虚拟机的磁盘数据量较大,在向目标物理机发送整个虚拟机的磁盘数据的过程中,该虚拟机所对应物理机的I/O资源会被长时间占用,这样不仅会长时间影响用户对当前虚拟机的操作,甚至会长时间影响用户对与上述物理机相对应的其他虚拟机的操作,用户体验较差。
技术实现要素:
本发明实施例公开了一种虚拟机磁盘数据迁移方法及装置,以缩短虚拟机磁盘数据迁移对用户操作虚拟机的影响时长,提高用户体验。
为达到上述目的,本发明实施例公开了一种虚拟机磁盘数据迁移方法,应用于虚拟机,所述方法包括:
接收磁盘数据迁移指令,其中,所述磁盘数据迁移指令中包含已迁移至目标物理机的所述虚拟机的磁盘备份数据的信息,所述虚拟机的磁盘备份数据存储于与所述虚拟机对应的物理机不相同的备份物理机中;
确定生成已迁移至所述目标物理机的所述虚拟机的磁盘备份数据后产生的针对该磁盘备份数据的磁盘增量数据;
将所确定的磁盘增量数据迁移至所述目标物理机,以使得所述目标物理机 根据所确定的磁盘增量数据和已迁移的磁盘备份数据获得所述虚拟机的全部磁盘数据。
在本发明的一种具体实现方式中,所述已迁移至所述目标物理机的所述虚拟机的磁盘备份数据为:到开始迁移所述虚拟机的磁盘备份数据时刻为止,用于存储所述虚拟机的磁盘备份数据的备份物理机中存储的所述虚拟机的最新版本磁盘备份数据。
在本发明的一种具体实现方式中,所述虚拟机磁盘数据迁移方法还包括:
接收针对所述虚拟机的磁盘数据的数据修改操作指令;
修改所述虚拟机的磁盘数据;
根据所述数据修改操作指令,更新所述虚拟机的数据修改记录。
在本发明的一种具体实现方式中,所述数据修改记录中包括:根据所述数据修改操作指令,已被修改的所述虚拟机的磁盘数据的数据块标识;
所述确定生成已迁移至所述目标物理机的所述虚拟机的磁盘备份数据后产生的针对该磁盘备份数据的磁盘增量数据,包括:
根据所述数据修改记录,确定生成已迁移至所述目标物理机的所述虚拟机的磁盘备份数据后被修改的所述虚拟机的磁盘数据的数据块标识;
根据查找到的数据块标识,获得与上述标识对应的数据块的块内容,并将其确定为生成上述磁盘备份数据后产生的针对该磁盘备份数据的磁盘增量数据。
在本发明的一种具体实现方式中,所述根据所述数据修改记录,确定生成已迁移至所述目标物理机的所述虚拟机的磁盘备份数据后被修改的所述虚拟机的磁盘数据的数据块标识,包括:
根据所述数据修改记录,获得针对生成已迁移至所述目标物理机的所述虚拟机的磁盘备份数据后磁盘数据的数据位图,其中,所述数据位图中一个标识位,用于表示生成已迁移至所述目标物理机的所述虚拟机的磁盘备份数据后所述虚拟机的磁盘数据的一个数据块是否被修改;
查找所述数据位图中表示数据块已被修改的标识位;
确定查找到的标识位对应的数据块标识。
在本发明的一种具体实现方式中,所述数据修改操作指令中包括:要修改的所述虚拟机的磁盘数据的数据块标识;
所述根据所述数据修改操作指令,更新所述虚拟机的数据修改记录,包括:
检测所述虚拟机的数据修改记录中是否已存在所述数据修改操作指令中包括的要修改的所述虚拟机的磁盘数据的数据块标识;
若包括,根据所述数据修改操作指令中包括的上述数据块标识,更新所述数据修改记录。
在本发明的一种具体实现方式中,所述数据修改记录中包括:根据所述数据修改操作指令,已被修改的所述虚拟机的磁盘数据的数据块标识和该数据块的修改内容;
所述确定生成已迁移至所述目标物理机的所述虚拟机的磁盘备份数据后产生的针对该磁盘备份数据的磁盘增量数据,包括:
从所述数据修改记录中查找生成已迁移至所述目标物理机的所述虚拟机的磁盘备份数据后被修改的所述虚拟机的磁盘数据的数据块标识;
根据查找到的数据块标识,从所述数据修改记录中获得与上述标识对应的数据块的修改内容,并将其确定为生成已迁移至所述目标物理机的所述虚拟机的磁盘备份数据后产生的针对该磁盘备份数据的磁盘增量数据。
在本发明的一种具体实现方式中,所述虚拟机磁盘数据迁移方法还包括:
在将所确定的磁盘增量数据迁移至所述目标物理机的过程中,检测所述虚拟机的磁盘数据是否被修改;
若为是,更新所确定的磁盘增量数据。
为达到上述目的,本发明实施例公开了一种虚拟机磁盘数据迁移装置,应用于虚拟机,所述装置包括:
指令接收模块,用于接收磁盘数据迁移指令,其中,所述磁盘数据迁移指令中包含已迁移至目标物理机的所述虚拟机的磁盘备份数据的信息,所述虚拟机的磁盘备份数据存储于与所述虚拟机对应的物理机不相同的备份物理机中;
磁盘增量数据确定模块,用于确定生成已迁移至所述目标物理机的所述虚 拟机的磁盘备份数据后产生的针对该磁盘备份数据的磁盘增量数据;
磁盘增量数据迁移模块,用于将所确定的磁盘增量数据迁移至所述目标物理机,以使得所述目标物理机根据所确定的磁盘增量数据和已迁移的磁盘备份数据获得所述虚拟机的全部磁盘数据。
在本发明的一种具体实现方式中,所述已迁移至所述目标物理机的所述虚拟机的磁盘备份数据为:到开始迁移所述虚拟机的磁盘备份数据时刻为止,用于存储所述虚拟机的磁盘备份数据的备份物理机中存储的所述虚拟机的最新版本磁盘备份数据。
在本发明的一种具体实现方式中,所述指令接收模块,还用于接收针对所述虚拟机的磁盘数据的数据修改操作指令;
所述装置还包括:
磁盘数据修改模块,用于修改所述虚拟机的磁盘数据;
修改记录更新模块,用于根据所述数据修改操作指令,更新所述虚拟机的数据修改记录。
在本发明的一种具体实现方式中,所述数据修改记录中包括:根据所述数据修改操作指令,已被修改的所述虚拟机的磁盘数据的数据块标识;
所述磁盘增量数据确定模块,包括:
数据块标识确定子模块,用于根据所述数据修改记录,确定生成已迁移至所述目标物理机的所述虚拟机的磁盘备份数据后被修改的所述虚拟机的磁盘数据的数据块标识;
第一磁盘增量数据确定子模块,用于根据查找到的数据块标识,获得与上述标识对应的数据块的块内容,并将其确定为生成上述磁盘备份数据后产生的针对该磁盘备份数据的磁盘增量数据。
在本发明的一种具体实现方式中,所述数据块标识确定子模块,包括:
数据位图获得单元,用于根据所述数据修改记录,获得针对生成已迁移至所述目标物理机的所述虚拟机的磁盘备份数据后磁盘数据的数据位图,其中,所述数据位图中一个标识位,用于表示生成已迁移至所述目标物理机的所述虚 拟机的磁盘备份数据后所述虚拟机的磁盘数据的一个数据块是否被修改;
标识位查找单元,用于查找所述数据位图中表示数据块已被修改的标识位;
数据块标识确定单元,用于确定查找到的标识位对应的数据块标识。
在本发明的一种具体实现方式中,所述数据修改操作指令中包括:要修改的所述虚拟机的磁盘数据的数据块标识;
所述修改记录更新模块,包括:
数据块标识检测子模块,用于检测所述虚拟机的数据修改记录中是否已存在所述数据修改操作指令中包括的要修改的所述虚拟机的磁盘数据的数据块标识;
修改记录更新子模块,用于在所述数据块标识检测子模块的检测结果为是的情况下,根据所述数据修改操作指令中包括的上述数据块标识,更新所述数据修改记录。
在本发明的一种具体实现方式中,所述数据修改记录中包括:根据所述数据修改操作指令,已被修改的所述虚拟机的磁盘数据的数据块标识和该数据块的修改内容;
所述磁盘增量数据确定模块,包括:
数据块标识查找子模块,用于从所述数据修改记录中查找生成已迁移至所述目标物理机的所述虚拟机的磁盘备份数据后被修改的所述虚拟机的磁盘数据的数据块标识;
第二磁盘增量数据确定子模块,用于根据查找到的数据块标识,从所述数据修改记录中获得与上述标识对应的数据块的修改内容,并将其确定为生成已迁移至所述目标物理机的所述虚拟机的磁盘备份数据后产生的针对该磁盘备份数据的磁盘增量数据。
在本发明的一种具体实现方式中,所述虚拟机磁盘数据迁移装置还包括:
数据修改检测模块,用于在将所确定的磁盘增量数据迁移至所述目标物理机的过程中,检测所述虚拟机的磁盘数据是否被修改;
磁盘增量数据更新模块,用于在所述数据修改检测模块的检测结果为是的 情况下,更新所确定的磁盘增量数据。
由以上可见,本发明实施例提供的方案中,先迁移虚拟机的磁盘备份数据至目标物理机,然后再迁移虚拟机生成该磁盘备份数据后产生的针对该磁盘备份数据的磁盘增量数据至目标物理机,使得目标物理机能够根据上述的磁盘备份数据和磁盘增量数据获得该虚拟机的全部磁盘数据。由于本发明实施例提供的方案中,上述的磁盘备份数据存储在与虚拟机对应的物理机不同的备份物理机中,所以,在向目标物理机迁移该磁盘备份数据时不会占用虚拟机对应的物理机的I/O资源,也就不会影响用户操作虚拟机。另外,虽然在向目标物理机迁移上述的磁盘增量数据的过程中会占用虚拟机对应的物理机的I/O资源,影响用户操作虚拟机,但是由于上述的磁盘增量数据相较于虚拟机的全部磁盘数据而言小很多,所以,向目标物理机迁移上述磁盘增量数据时,对用户操作虚拟机的影响时间较短。综合以上可见,应用本发明实施例提供的方案,能够缩短虚拟机磁盘数据迁移对用户操作虚拟机的影响时长,提高了用户体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的虚拟机磁盘数据迁移方法的第一种流程示意图;
图2为本发明实施例提供的一种虚拟机磁盘迁移系统的结构示意图;
图3为本发明实施例提供的虚拟机磁盘数据迁移方法的第二种流程示意图;
图4为本发明实施例提供的虚拟机磁盘数据迁移方法的第三种流程示意图;
图5为本发明实施例提供的虚拟机磁盘数据迁移装置的第一种结构示意图;
图6为本发明实施例提供的虚拟机磁盘数据迁移装置的第二种结构示意图;
图7为本发明实施例提供的虚拟机磁盘数据迁移装置的第三种结构示意图。
具体实施方式
由于现有技术中向目标物理机迁移虚拟机的磁盘数据时,会长时间占用该 虚拟机对应的物理机的I/O资源,进而会长时间影响用户对该虚拟机的操作,为此,本发明实施例提供了一种虚拟机磁盘数据迁移方法及装置,以缩短虚拟机磁盘数据迁移对用户操作虚拟机的影响时长。
下面首先从总体上介绍本发明实施例提供的一种虚拟机磁盘数据迁移方法,该方法应用于虚拟机,包括:
接收磁盘数据迁移指令,其中,所述磁盘数据迁移指令中包含已迁移至目标物理机的所述虚拟机的磁盘备份数据的信息,所述虚拟机的磁盘备份数据存储于与所述虚拟机对应的物理机不相同的备份物理机中;
确定生成已迁移至所述目标物理机的所述虚拟机的磁盘备份数据后产生的针对该磁盘备份数据的磁盘增量数据;
将所确定的磁盘增量数据迁移至所述目标物理机,以使得所述目标物理机根据所确定的磁盘增量数据和已迁移的磁盘备份数据获得所述虚拟机的全部磁盘数据。
上述虚拟机的磁盘备份数据是针对某一时刻而言的,可以理解为在某一时刻下虚拟机的全部磁盘数据的副本。
虚拟机的磁盘增量数据是针对某一磁盘备份数据而言的,用于记录虚拟机生成该磁盘备份数据后,用户在虚拟机上的修改情况,例如,在磁盘数据中增加的内容、删除的内容、改变的内容等等。
虚拟机的全部磁盘数据可以根据虚拟机的磁盘备份数据和该磁盘备份数据对应的磁盘增量数据得到。
鉴于上述描述,迁移虚拟机的磁盘数据时,可以分两部分进行,即:先将存储在备份物理机的磁盘备份数据迁移至目标物理机,再向目标物理机迁移该磁盘备份数据对应的磁盘增量数据,借此完成虚拟机全部磁盘数据的迁移。
由于上述虚拟机的磁盘备份数据存储于与该虚拟机对应的物理机不同的备份物理机中,所以,向目标物理机迁移该虚拟机的磁盘备份数据时,所占用的I/O资源为备份物理机的I/O资源,而非该虚拟机对应的物理机的I/O资源,进而向目标物理机迁移该虚拟机的磁盘备份数据的过程,不会影响用户操作该虚拟机。
上述磁盘备份数据对应的磁盘增量数据是存储于上述虚拟机中,更进一步的是存储于上述虚拟机对应的物理机中,所以,向目标物理机迁移上述磁盘增量数据时,所占用的I/O资源为上述虚拟机对应的物理机的I/O资源,进而向目标物理机迁移上述磁盘增量数据的过程,会影响用户操作该虚拟机。
然而相对于虚拟机的全部磁盘数据的数据量而言,针对磁盘备份数据的磁盘增量数据的数据量要小的多,因此,应用上述的虚拟机磁盘数据迁移方法进行迁移磁盘数据时,能够缩短对用户操作虚拟机的影响时长。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的虚拟机磁盘数据迁移方法的第一种流程示意图,该方法应用于虚拟机中,包括:
S101:接收磁盘数据迁移指令。
其中,上述磁盘数据迁移指令中包含已迁移至目标物理机的上述虚拟机的磁盘备份数据的信息,具体的,上述虚拟机的磁盘备份数据的信息中,可以包括用于表示该磁盘备份数据已迁移完成的标识,可以包含该磁盘备份数据的版本信息,可以包含目标物理机的标识等等,本申请并不对此进行限定。
值得说明的是,上述虚拟机的磁盘备份数据需存储于与该虚拟机对应的物理机不相同的备份物理机中,这样在向目标物理机迁移上述虚拟机的磁盘备份数据时,所占用的I/O资源为备份物理机的I/O资源,而不是上述虚拟机对应的物理机的I/O资源,因此,在迁移上述虚拟机的磁盘备份数据的过程中,不会由于物理机的I/O资源被占用而影响用户对该虚拟机的操作,也不会影响用户对该虚拟机对应的物理机所对应的其他虚拟机的操作。
由上述描述可以得知,上述虚拟机是在备份物理机完成向目标物理机迁移虚拟机的磁盘备份数据之后才接收到的磁盘数据迁移指令,比较容易想到的,该数据迁移指令可以是上述的备份物理机发送,也可以是一个具有管理功能的物理机在确定备份物理机已经完成上述虚拟机磁盘备份数据的迁移后向上述虚拟机发送的。
本领域内的技术人员能够理解的是,生成虚拟机的磁盘备份数据是为了在虚拟机对应的物理机等出现故障时,能够以尽量小的误差恢复该虚拟机的磁盘数据至当前状态,所以,通常情况下虚拟机会间隔固定时间间隔,例如,6小时、12小时等等,或者在满足预设条件的情况下,例如,检测到虚拟机对应的物理机出现运行不稳定的情况等,触发磁盘数据备份功能,生成针对当前时刻的磁盘备份数据,为保证磁盘备份数据安全,实际应用中虚拟机可将所生成的磁盘备份数据发送至上述的备份物理机。随着时间的推移,上述备份物理机中可能会存在上述虚拟机的多个版本的磁盘备份数据。
较佳的,上述已迁移至目标物理机的上述虚拟机的磁盘备份数据可以为:到开始迁移上述虚拟机的磁盘备份数据时刻为止,用于存储上述虚拟机的磁盘备份数据的备份物理机中存储的上述虚拟机的最新版本磁盘备份数据。这样,存储于上述虚拟机中的针对该磁盘备份数据的磁盘增量数据的数据量会相对较小,迁移磁盘增量数据时需要的时间更短,进而对上述虚拟机进行磁盘迁移时影响用户操作虚拟机的时长也就更短。
S102:确定生成已迁移至目标物理机的上述虚拟机的磁盘备份数据后产生的针对该磁盘备份数据的磁盘增量数据。
由于上述虚拟机的全部磁盘数据位于该虚拟机对应的物理机中,而生成虚拟机的磁盘备份数据需要该虚拟机的全部磁盘数据,所以,通常情况下由上述虚拟机生成其磁盘备份数据具有更高的工作效率。
具体的,上述虚拟机生成其磁盘备份数据时,可以是按照预设的时间间隔生成的,还可以在检测到满足预设的条件的情况下生成的,例如,检测到具有管理功能的物理机发送的磁盘备份数据生成指令、检测到用户所选择的磁盘备份数据生成指令、检测到该虚拟机对应的物理机运行异常等等。
本领域内的技术人员可以理解的是,虚拟机在生成其磁盘备份数据时会占用系统资源,因此,为防止影响用户操作虚拟机,可以在用户未操作虚拟机的时段内生成磁盘备份数据。
本实施例中,为防止向目标物理机迁移虚拟机的磁盘备份数据时因占用该虚拟机对应的物理机的I/O资源而影响用户操作虚拟机,在该虚拟机生成其磁盘备份数据后,可将所生成的磁盘备份数据发送至备份物理机进行存储。另外, 将所生成的磁盘备份数据存储至备份物理机还能够有效防止用户对虚拟机的误操作而带来的磁盘备份数据的损坏等等。
可以理解的,虚拟机向备份物理机发送其所生成的磁盘备份数据时会占用该虚拟机对应的物理机的I/O资源,因此,在此期间会用户对该虚拟机的操作,甚至会影响用户对与该虚拟机对应的物理机相对应的其他虚拟机的操作,鉴于此,为保证用户体验,可以选择在用户未操作该虚拟机的情况下向备份物理机发送所生成的磁盘备份数据。
众所周知的,虚拟机的磁盘数据可以划分为多个数据块,用户对虚拟机磁盘数据的操作,可以理解为对虚拟机磁盘数据的各个数据块的操作。
具体的,一种情况下,上述的磁盘增量数据所记录的内容中可以包括:发生变化的数据块的数据块标识和块内容等信息;
另一种情况下,上述的磁盘增量数据所记录的内容中可以包括:发生变化的数据块的数据块标识和修改内容等等信息。
上述只是列举的磁盘增量数据的两种情况,并不是对本申请进行限定。
另外,虚拟机的磁盘增量数据可以存储在一个文件中,也可以针对磁盘备份数据分别存储,即:每个文件中只记录虚拟机生成一个磁盘备份数据与生成下一个磁盘备份数据之间生成的磁盘增量数据的信息。当然,本申请只是以上述为例进行说明,实际应用中还存在其他磁盘增量数据的存储方式,可以根据具体情况确定。
S103:将所确定的磁盘增量数据迁移至所述目标物理机,以使得目标物理机根据所确定的磁盘增量数据和已迁移的磁盘备份数据获得上述虚拟机的全部磁盘数据。
由以上描述可以得知,不同情况下磁盘增量数据所包含的信息可能不同,所以,目标物理机在获得上述虚拟机的磁盘备份数据和磁盘增量数据后,获得该虚拟机的全部磁盘数据的方式稍有差别,具体可以参见后面的图3和图4所示的实施例,这里不再详述。
本领域内的技术人员能够理解的是,上述虚拟机在向目标物理机迁移其磁盘增量数据的过程中用户可能会对该虚拟机进行操作,那么这种情况下需记录 下用户对该虚拟机的操作,以使得目标物理机能够获得该虚拟机的全部磁盘数据。
鉴于上述描述,在本发明的一个较佳实施例中,上述的虚拟机磁盘数据迁移方法还可以包括:
在将所确定的磁盘增量数据迁移至目标物理机的过程中,检测上述虚拟机的磁盘数据是否被修改,若被修改,则更新所确定的磁盘增量数据。
实际应用中,若上述虚拟机在将所确定的磁盘增量数据迁移至目标物理机的过程中,执行过数据修改操作指令,则可以判定该虚拟机的磁盘数据被修改过,反之,可以判断该虚拟机的磁盘数据未被修改过。
由以上可见,本实施例提供的方案中,先迁移虚拟机的磁盘备份数据至目标物理机,然后再迁移虚拟机生成该磁盘备份数据后产生的针对该磁盘备份数据的磁盘增量数据至目标物理机,使得目标物理机能够根据上述的磁盘备份数据和磁盘增量数据获得该虚拟机的全部磁盘数据。由于本实施例提供的方案中,上述的磁盘备份数据存储在与虚拟机对应的物理机不同的备份物理机中,所以,在向目标物理机迁移该磁盘备份数据时不会占用虚拟机对应的物理机的I/O资源,也就不会影响用户操作虚拟机。另外,虽然在向目标物理机迁移上述的磁盘增量数据的过程中会占用虚拟机对应的物理机的I/O资源,影响用户操作虚拟机,但是由于上述的磁盘增量数据相较于虚拟机的全部磁盘数据而言小很多,所以,向目标物理机迁移上述磁盘增量数据时,对用户操作虚拟机的影响时间较短。综合以上可见,应用本实施例提供的方案,能够缩短虚拟机磁盘数据迁移对用户操作虚拟机的影响时长,提高了用户体验。
下面通过一个应用图1所示实施例提供的虚拟机磁盘数据迁移方法的虚拟机磁盘数据迁移系统,对上述的虚拟机磁盘数据迁移方法进行说明。
具体的,参见图2,提供了一种虚拟机磁盘数据迁移系统的结构示意图。
其中,该系统中包括:管理物理机、备份物理机、目标物理机和上述虚拟机对应的物理机。
管理物理机,具有管理功能,管理该系统中的其他物理机,例如,备份物 理机、上述虚拟机对应的物理机、目标物理机等等;
备份物理机,用于存储各个虚拟机的磁盘备份数据。
上述的管理物理机、备份物理机是从机器的功能上进行划分的,实际应用中,管理物理机、备份物理机和目标物理机可以对应于同一台物理机,也可以对应于多台物理机,本申请并不对此进行限定,但是,备份物理机与上述虚拟机对应的物理机肯定是两台不同的物理机。
在迁移上述虚拟机的磁盘数据时,管理物理机可以先向备份物理机发送数据迁移指令,该指令中需包括上述虚拟机的标识、目标物理机的标识等信息,备份物理机接收到上述迁移指令后,从其中存储的上述虚拟机的磁盘备份数据中选择一个版本的磁盘备份数据,并向目标物理机迁移所选择的磁盘备份数据,在备份物理机确定已将所选择的磁盘备份数据全部迁移至目标物理机后,应用图1所示实施例提供的方法向目标物理机迁移上述虚拟机的磁盘增量数据。
一种情况下,备份物理机确定已将所选择磁盘备份数据迁移至目标物理机后,可以向管理物理机发送迁移完成反馈指令,管理物理机根据该指令向上述虚拟机发送磁盘数据迁移指令。
另一种情况下,备份物理机确定已将所选择磁盘备份数据迁移至目标物理机后,还可以不向管理物理机发送迁移完成反馈指令,而是直接向上述虚拟机发送磁盘数据迁移指令。
上述虚拟机对应的物理机接收到该磁盘数据迁移指令后,根据其所记录的磁盘增量数据,确定生成已迁移至目标物理机的上述虚拟机的磁盘备份数据后针对该磁盘备份数据的磁盘增量数据,并将所确定的磁盘增量数据迁移至目标物理机。
目标物理机在接收到上述磁盘备份数据后,结合后续接收的磁盘增量数据进行数据合成等操作,进而得到上述虚拟机磁盘的全部磁盘数据。
进一步的,在迁移虚拟机的过程中除了需迁移虚拟机的全部磁盘数据外,还需要迁移虚拟机的全部内存数据,在管理物理机确定已迁移完成虚拟机的全部磁盘数据和全部内存数据后,还可以向目标物理机发送启动虚拟机的指令,使得上述的虚拟机开始在目标物理机上运行,并向迁移之前的虚拟机发送关机 指令,使得迁移之前的虚拟机停止在其对应的物理机上运行。
当然,由于虚拟机的磁盘增量数据和内存数据实际上都是存储于该虚拟机对应的物理机上的,上述的启动虚拟机的指令也可以是该虚拟机在确定已将其磁盘增量数据和全部内存数据迁移至目标物理机后向目标物理机发送的,使得该虚拟机开始在目标物理机上开始运行,并停止其在当前物理机上的运行。
由于虚拟机的磁盘增量数据是依据用户对虚拟机磁盘数据的操作得到的,例如,删除磁盘数据的一个数据块中的数据、改变磁盘数据的一个数据块中的数据等等,所以,在用户操作虚拟机时需针对其操作进行记录。
具体的,上述的虚拟机磁盘数据迁移方法还可以包括:
接收针对上述虚拟机的磁盘数据的数据修改操作指令;
修改上述虚拟机的磁盘数据;
根据数据修改操作指令,更新上述虚拟机的数据修改记录。
需要说明的是,上述各个步骤可以贯穿于虚拟机磁盘数据迁移的整个过程,所以,本申请并不限定上述各个步骤与S101、S102和S103之间的执行顺序。
基于上述描述,在本发明的一种具体实现方式中,参见图3,提供了虚拟机磁盘数据迁移方法的第二种流程示意图,与前述实施例相比,本实施例中,
上述数据修改记录中包括:根据上述数据修改操作指令,已被修改的上述虚拟机的磁盘数据的数据块标识。
具体的,确定生成已迁移至目标物理机的上述虚拟机的磁盘备份数据后产生的针对该磁盘备份数据的磁盘增量数据的步骤S102,包括:
S102A:根据上述数据修改记录,确定生成已迁移至目标物理机的上述虚拟机的磁盘备份数据后被修改的上述虚拟机的磁盘数据的数据块标识。
本步骤中,确定生成已迁移至目标物理机的上述虚拟机的磁盘备份数据后被修改的上述虚拟机的磁盘数据的数据块标识时,可以先根据上述数据修改记录,获得针对生成已迁移至目标物理机的上述虚拟机的磁盘备份数据后磁盘数据的数据位图,其中,该数据位图中一个标识位,用于表示生成已迁移至目标 物理机的上述虚拟机的磁盘备份数据后上述虚拟机的磁盘数据的一个数据块是否被修改,然后再查找数据位图中表示数据块已被修改的标识位,并确定查找到的标识位对应的数据块标识,这些数据块标识即为生成已迁移至目标物理机的上述虚拟机的磁盘备份数据后被修改的上述虚拟机的磁盘数据的数据块标识。
另外,实际应用中还可以直接从上述数据修改记录中包括的已被修改的上述虚拟机的磁盘数据的数据块标识。
需要说明的是,本申请只是以上述为例说明如何确定数据块标识,实际应用中并不仅限于此。
S102B:根据查找到的数据块标识,获得与上述标识对应的数据块的块内容,并将其确定为生成上述磁盘备份数据后产生的针对该磁盘备份数据的磁盘增量数据。
在上述的数据修改记录中不包括已被修改的上述虚拟机的磁盘数据的修改内容的情况下,生成上述磁盘备份数据后产生的针对该磁盘备份数据的磁盘增量数据,可以包含已被修改的数据块标识,以及这些数据块标识对应数据块的修改后的块内容。
基于上述情况,向目标物理机迁移所确定的磁盘增量数据时,所迁移的内容包括已被修改的数据块标识,以及这些数据块标识对应数据块的修改后的块内容。相应的,目标物理机根据所确定的磁盘增量数据和已迁移的磁盘备份数据获得上述虚拟机的全部磁盘数据时,可以先根据已被修改的数据块的标识,在已迁移的磁盘备份数据中找到已被修改的数据块标识对应的数据块,然后将该数据块的内容替换为磁盘增量数据中包含的上述标识对应数据块的修改后的块内容,进而得到该虚拟机的全部磁盘数据。
在本发明的一种较佳实现方式中,上述的数据修改操作指令中可以包括:要修改的上述虚拟机的磁盘数据的数据块标识。
这种情况下,在根据数据修改操作指令,更新上述虚拟机的数据修改记录时,可以在检测到上述虚拟机的数据修改记录中已存在数据修改操作指令中包括的要修改的上述虚拟机的磁盘数据的数据块标识的情况下,根据数据修改操作指令中包括的上述数据块标识,更新数据修改记录。
进一步可以理解的,向目标物理机迁移上述虚拟机的磁盘备份数据时,由于磁盘备份数据的数据量大、网络带宽低等原因,迁移磁盘备份数据所需要的时间可能较长,而在此期间上述虚拟机可能会生成新版本的磁盘备份数据,并可将其发送至备份物理机,这种情况下,虽然生成了新版本的磁盘备份数据,由于在迁移磁盘增量数据的过程中,一旦检测到上述虚拟机接收到了针对磁盘数据的数据修改操作指令,即会更新上述虚拟机的数据修改记录,所以即使新版本的磁盘备份数据与已迁移的磁盘备份数据存在不同,也不会影响该虚拟机磁盘数据的迁移,后续步骤中可以依然根据已迁移的磁盘备份数据的版本以及更新后的数据修改记录,确定出已迁移至目标物理机的磁盘备份数据对应的磁盘增量数据。
由以上可见,本实施例提供的方案中,在向目标物理机迁移虚拟机的磁盘数据的整个过程中,只有迁移磁盘增量数据会影响用户对虚拟机的操作,而磁盘增量数据是由已被修改的数据块标识以及这些数据块标识对应数据块的修改后的块内容构成的,可见其数据量要远远小于虚拟机的全部磁盘数据的数据量,因此,能够缩短虚拟机磁盘数据迁移对用户操作虚拟机的影响时长。
基于上述描述,在本发明的另一种具体实现方式中,参见图4,提供了虚拟机磁盘数据迁移方法的第三种流程示意图,与前述实施例相比,本实施例中,
上述数据修改记录中包括:根据上述数据修改操作指令,已被修改的上述虚拟机的磁盘数据的数据块标识和该数据块的修改内容。
具体的,确定生成已迁移至目标物理机的上述虚拟机的磁盘备份数据后产生的针对该磁盘备份数据的磁盘增量数据的步骤S102,包括:
S102C:从数据修改记录中查找生成已迁移至目标物理机的上述虚拟机的磁盘备份数据后被修改的上述虚拟机的磁盘数据的数据块标识。
S102D:根据查找到的数据块标识,从数据修改记录中获得与上述标识对应的数据块的修改内容,并将其确定为生成已迁移至目标物理机的上述虚拟机的磁盘备份数据后产生的针对该磁盘备份数据的磁盘增量数据。
参照上述数据修改记录中包括的信息,生成上述磁盘备份数据后产生的针 对该磁盘备份数据的磁盘增量数据,可以包含已被修改的数据块标识,以及这些数据块标识对应数据块的修改内容。
基于上述情况,向目标物理机迁移所确定的磁盘增量数据时,所迁移的内容包括已被修改的数据块标识,以及这些数据块标识对应数据块的修改内容。相应的,目标物理机根据所确定的磁盘增量数据和已迁移的磁盘备份数据获得上述虚拟机的全部磁盘数据时,可以先在已迁移的磁盘备份数据中找到已被修改的数据块标识对应的数据块,然后根据上述标识对应数据块的修改内容修改磁盘备份数据中上述标识对应数据块的块内容,进而得到该虚拟机的全部磁盘数据。
由以上可见,本实施例提供的方案中,在向目标物理机迁移虚拟机的磁盘数据的整个过程中,所迁移的数据仅仅为已被修改的数据块标识,以及这些数据块标识对应数据块的修改内容,与已被修改的数据块标识对应数据块的修改后的块内容相比,数据量进一步减少,因此,应用本实施例提供的方案进行数据迁移,能够进一步缩短虚拟机磁盘数据迁移对用户操作虚拟机的影响时长,进而能够进一步提高用户体验。
与上述的虚拟机磁盘数据迁移方法相对应,本发明实施例还提供了一种虚拟机磁盘数据迁移装置。
图5为本发明实施例提供的虚拟机磁盘数据迁移装置的第一种结构示意图,该装置应用于虚拟机,包括:
指令接收模块501,用于接收磁盘数据迁移指令,其中,所述磁盘数据迁移指令中包含已迁移至目标物理机的所述虚拟机的磁盘备份数据的信息,所述虚拟机的磁盘备份数据存储于与所述虚拟机对应的物理机不相同的备份物理机中;
磁盘增量数据确定模块502,用于确定生成已迁移至所述目标物理机的所述虚拟机的磁盘备份数据后产生的针对该磁盘备份数据的磁盘增量数据;
磁盘增量数据迁移模块503,用于将所确定的磁盘增量数据迁移至所述目标物理机,以使得所述目标物理机根据所确定的磁盘增量数据和已迁移的磁盘备份数据获得所述虚拟机的全部磁盘数据。
具体的,所述已迁移至所述目标物理机的所述虚拟机的磁盘备份数据可以为:到开始迁移所述虚拟机的磁盘备份数据时刻为止,用于存储所述虚拟机的磁盘备份数据的备份物理机中存储的所述虚拟机的最新版本磁盘备份数据。
在本发明的一种可选实现方式中,所述指令接收模块,还用于接收针对所述虚拟机的磁盘数据的数据修改操作指令;
所述虚拟机磁盘数据迁移装置还可以包括:
磁盘数据修改模块,用于修改所述虚拟机的磁盘数据;
修改记录更新模块,用于根据所述数据修改操作指令,更新所述虚拟机的数据修改记录。
在本发明的另一种可选实现方式中,所述虚拟机磁盘数据迁移装置还可以包括:
数据修改检测模块,用于在将所确定的磁盘增量数据迁移至所述目标物理机的过程中,检测所述虚拟机的磁盘数据的数据是否被修改;
磁盘增量数据更新模块,用于在所述数据修改指令检测模块的检测结果为是的情况下,更新所确定的磁盘增量数据。
由以上可见,本实施例提供的方案中,先迁移虚拟机的磁盘备份数据至目标物理机,然后再迁移虚拟机生成该磁盘备份数据后产生的针对该磁盘备份数据的磁盘增量数据至目标物理机,使得目标物理机能够根据上述的磁盘备份数据和磁盘增量数据获得该虚拟机的全部磁盘数据。由于本实施例提供的方案中,上述的磁盘备份数据存储在与虚拟机对应的物理机不同的备份物理机中,所以,在向目标物理机迁移该磁盘备份数据时不会占用虚拟机对应的物理机的I/O资源,也就不会影响用户操作虚拟机。另外,虽然在向目标物理机迁移上述的磁盘增量数据的过程中会占用虚拟机对应的物理机的I/O资源,影响用户操作虚拟机,但是由于上述的磁盘增量数据相较于虚拟机的全部磁盘数据而言小很多,所以,向目标物理机迁移上述磁盘增量数据时,对用户操作虚拟机的影响时间较短。综合以上可见,应用本实施例提供的方案,能够缩短虚拟机磁盘数据迁移对用户操作虚拟机的影响时长,提高了用户体验。
在本发明的一种具体实现方式中,参见图6,提供了虚拟机磁盘数据迁移装置的第二种结构示意图,与前述实施例相比,本实施例中,
所述数据修改记录中包括:根据所述数据修改操作指令,已被修改的所述虚拟机的磁盘数据的数据块标识;
所述磁盘增量数据确定模块502,包括:
数据块标识确定子模块5021,用于根据所述数据修改记录,确定生成已迁移至所述目标物理机的所述虚拟机的磁盘备份数据后被修改的所述虚拟机的磁盘数据的数据块标识;
第一磁盘增量数据确定子模块5022,用于根据查找到的数据块标识,获得与上述标识对应的数据块的块内容,并将其确定为生成上述磁盘备份数据后产生的针对该磁盘备份数据的磁盘增量数据。
具体的,所述数据块标识确定子模块5021可以包括:
数据位图获得单元,用于根据所述数据修改记录,获得针对生成已迁移至所述目标物理机的所述虚拟机的磁盘备份数据后磁盘数据的数据位图,其中,所述数据位图中一个标识位,用于表示生成已迁移至所述目标物理机的所述虚拟机的磁盘备份数据后所述虚拟机的磁盘数据的一个数据块是否被修改;
标识位查找单元,用于查找所述数据位图中表示数据块已被修改的标识位;
数据块标识确定单元,用于确定查找到的标识位对应的数据块标识。
具体的,所述数据修改操作指令中可以包括:要修改的所述虚拟机的磁盘数据的数据块标识;
所述修改记录更新模块可以包括:
数据块标识检测子模块,用于检测所述虚拟机的数据修改记录中是否已存在所述数据修改操作指令中包括的要修改的所述虚拟机的磁盘数据的数据块标识;
修改记录更新子模块,用于在所述数据块标识检测子模块的检测结果为是的情况下,根据所述数据修改操作指令中包括的上述数据块标识,更新所述数据修改记录。
由以上可见,本实施例提供的方案中,在向目标物理机迁移虚拟机的磁盘数据的整个过程中,只有迁移磁盘增量数据会影响用户对虚拟机的操作,而磁盘增量数据是由已被修改的数据块标识以及这些数据块标识对应数据块的修改后的块内容构成的,可见其数据量要远远小于虚拟机的全部磁盘数据的数据量,因此,能够缩短虚拟机磁盘数据迁移对用户操作虚拟机的影响时长。
在本发明的另一种具体实现方式中,参见图7,提供了虚拟机磁盘数据迁移装置的第三种结构示意图,与前述实施例相比,本实施例中,
所述数据修改记录中包括:根据所述数据修改操作指令,已被修改的所述虚拟机的磁盘数据的数据块标识和该数据块的修改内容;
所述磁盘增量数据确定模块502,包括:
数据块标识查找子模块5023,用于从所述数据修改记录中查找生成已迁移至所述目标物理机的所述虚拟机的磁盘备份数据后被修改的所述虚拟机的磁盘数据的数据块标识;
第二磁盘增量数据确定子模块5024,用于根据查找到的数据块标识,从所述数据修改记录中获得与上述标识对应的数据块的修改内容,并将其确定为生成已迁移至所述目标物理机的所述虚拟机的磁盘备份数据后产生的针对该磁盘备份数据的磁盘增量数据。
由以上可见,本实施例提供的方案中,在向目标物理机迁移虚拟机的磁盘数据的整个过程中,所迁移的数据仅仅为已被修改的数据块标识,以及这些数据块标识对应数据块的修改内容,与已被修改的数据块标识对应数据块的修改后的块内容相比,数据量进一步减少,因此,应用本实施例提供的方案进行数据迁移,能够进一步缩短虚拟机磁盘数据迁移对用户操作虚拟机的影响时长,进而能够进一步提高用户体验。
对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些 实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。