一种虚拟磁盘复制方法和计算机可读存储介质与流程

文档序号:25542516发布日期:2021-06-18 20:39阅读:130来源:国知局
一种虚拟磁盘复制方法和计算机可读存储介质与流程

本发明涉及虚拟化技术领域,尤其涉及一种虚拟磁盘复制方法和计算机可读存储介质。



背景技术:

winserver虚拟化操作系统中有很多操作会调用到虚拟磁盘的复制,例如从模板部署虚拟机、虚拟机存储迁移、克隆虚拟机等等。不同存储池,对应的虚拟磁盘格式可能会不相同,例如:由本地磁盘组成的存储池,其对应的虚拟磁盘格式为vhd;由分布式存储系统ceph提供存储服务的存储池,其对应的虚拟磁盘格式为aio。在磁盘复制过程中,对有些格式的虚拟磁盘,能够通过相应的工具来识别虚拟磁盘中的无数据区域,例如,对vhd格式的虚拟磁盘,可以通过vhd的bitmap识别虚拟磁盘中存在数据的区域,从而能够在磁盘读取或写入过程中跳过无数据区域,加速磁盘复制过程。但对于其他格式的虚拟磁盘,通常无法识别虚拟磁盘中存在数据的区域,例如aio,因此,vhd格式的虚拟磁盘和aio的虚拟磁盘之间进行复制时,磁盘读取过程和磁盘写入过程当中只有其中系vhd格式的虚拟磁盘能够跳过无数据区域,aio格式的虚拟磁盘不能跳过无数据区域,导致复制过程消耗大量不必要的时间,主机系统io负载沉重。



技术实现要素:

本发明所要解决的技术问题是提供一种虚拟磁盘复制方法以及用于存储实现上述方法的计算机程序的计算机可读存储介质,该方法能减轻主机系统在复制过程中的io负载。

为了解决上述技术问题,本发明的一种虚拟磁盘复制方法,包括:

接收步骤:接收虚拟磁盘复制请求;

复制步骤:根据上述复制请求,从源磁盘中读取数据并把读取到的数据写入到目标磁盘中;

在上述接收步骤和复制步骤之间判断源磁盘和目标磁盘当中是否一者的无数据区域能够被识别而另一者的无数据区域不能被识别,若是则:

——对不能被识别无数据区域的虚拟磁盘,把磁盘格式转换成无数据区域能够被识别的磁盘格式;

——所述复制步骤在读取过程中和写入过程中都识别出无数据区域并跳过无数据区域。

可行地,包括在上述接收步骤和复制步骤之间执行的调用步骤:

若判断出:

a1.源磁盘和目标磁盘,无数据区域都不能被识别,

a2.源磁盘和目标磁盘都对应于同一个存储系统,该存储系统具备复制命令,

则调用上述存储系统的复制命令来从源磁盘所关联的存储设备中读取数据并把读取到的数据写入到目标磁盘所关联的存储设备中,从而实现源磁盘和目标磁盘之间的复制。

可行地,所述调用步骤具体地:若判断出源磁盘和目标磁盘都是对应于ceph,则调用ceph的复制命令来执行所述复制步骤。

可行地,具体系根据源磁盘的和目标磁盘的磁盘格式都是aio格式,判断出两者都是对应于ceph。

可行地,具体系通过qemu-img工具把磁盘格式转换成能够被识别无数据区域的磁盘格式。

可行地,具体系根据源磁盘的和目标磁盘的磁盘格式,判断源磁盘的和目标磁盘的无数据区域是否能够被识别。

可行地,若源磁盘的或目标磁盘的磁盘格式为vhd格式则表明该源磁盘或该目标磁盘的无数据区域能够被识别。

可行地,具体系winserver虚拟磁盘复制方法。

一种计算机可读存储介质,其上存储有可执行的计算机程序,所述计算机程序被执行时实现如上所述的虚拟磁盘复制方法。

该虚拟磁盘复制方法对不能被识别无数据区域的虚拟磁盘,把磁盘格式转换成无数据区域能够被识别的磁盘格式,复制时,在读取过程中和写入过程中都识别出无数据区域并跳过无数据区域,从而加快复制过程,显著减少了复制过程中消耗的时间,降低了主机系统io负载。

附图说明

图1是一种虚拟化操作系统的架构图。

图2是一种虚拟磁盘复制方法的流程示意图。

具体实施方式

以下结合具体实施方式对本发明创造作进一步详细说明。

虚拟化操作系统(winserver)中的存储管理模块包括控制单元和计算机可读存储介质,计算机可读存储介质存储有可执行的计算机程序,控制单元执行所述计算机程序时能够实现如图2所示的虚拟磁盘复制方法。下面以具体实例来说明该虚拟磁盘复制方法的过程:

上述虚拟化操作系统的架构如图1所示,设有三个虚拟磁盘vdi1、vdi2和vdi3。假设需要把虚拟磁盘vdi1复制到虚拟磁盘vdi2上,虚拟化操作系统的主机则向存储管理模块发出相应的复制请求。存储管理模块接收到上述复制请求之后,根据复制请求获取源磁盘vdi1的和目标磁盘vdi2的磁盘格式和设备路径,然后根据源磁盘vdi1的和目标磁盘vdi2的磁盘格式,判断源磁盘vdi1的和目标磁盘vdi2的无数据区域是否能够被识别。如图1所示,虚拟磁盘vdi1对应于由本地磁盘组成的存储池(即本地存储池,localsr),磁盘格式为vhd。虚拟磁盘vdi2对应于由ceph提供存储服务的存储池(cephsr),磁盘格式为aio。众所周知,磁盘格式为vhd格式的虚拟磁盘的无数据区域能够被识别,而磁盘格式为aio格式的虚拟磁盘的无数据区域不能被识别,因此,存储管理模块根据虚拟磁盘vdi1的和虚拟磁盘vdi2的磁盘格式即可判断出vdi1的无数据区域能够被识别而vdi2的无数据区域不能被识别,遂通过qemu-img工具把虚拟磁盘vdi2的磁盘格式转换成vhd格式,然后开始进行复制,复制时,对源磁盘vdi1,存储管理模块先利用vhd的bitmap识别出虚拟磁盘vdi1中的无数据区域,并根据识别结果来对虚拟磁盘vdi1进行数据读取,在读取过程中跳过无数据区域,从而加快读取过程,对目标磁盘vdi2,利用vhd的bitmap,识别出虚拟磁盘vdi2中的与虚拟磁盘vdi1的无数据区域相对应的无数据区域,并根据识别结果把从虚拟磁盘vdi1中读取到的数据写入虚拟磁盘vdi2中,在写入过程中跳过相对应的无数据区域,从而加快写入过程。如此一来,在读取和写入时都能够跳过无数据区域,加快复制过程,显著减少了复制过程中消耗的时间,降低了主机系统io负载。同理,若要把虚拟磁盘vdi2复制到虚拟磁盘vdi1上,也是对源磁盘vdi2进行格式转换,使其转换为vhd格式,然后开始进行复制,复制时,与把虚拟磁盘vdi1复制到虚拟磁盘vdi2的复制过程不同的是:对源磁盘vdi2进行数据读取,在读取过程中跳过无数据区域,对目标磁盘vdi1,把读取到的数据写入目标磁盘vdi1中,在写入过程中跳过相对应的无数据区域。

假设需要把虚拟磁盘vdi2复制到虚拟磁盘vdi3上,虚拟化操作系统的主机则向存储管理模块发出相应的复制请求。存储管理模块接收到上述复制请求之后,根据复制请求获取源磁盘vdi2的和目标磁盘vdi3的磁盘格式和设备路径,然后根据源磁盘vdi2的和目标磁盘vdi3的磁盘格式,判断源磁盘vdi2的和目标磁盘vdi3的无数据区域是否能够被识别。如图1所示,虚拟磁盘vdi2和vdi3都是对应于由ceph提供存储服务的存储池(cephsr),虚拟磁盘vdi2和vdi3的磁盘格式都是aio格式,其中,虚拟磁盘vdi2关联块设备rbd2,虚拟磁盘vdi3关联块设备rbd3,块设备rbd2和rbd3作为提供存储服务的存储设备,虚拟磁盘vdi2上的和虚拟磁盘vdi3上的数据分别存储在块设备rbd2和rbd3中。存储管理模块根据虚拟磁盘vdi2的和虚拟磁盘vdi3的磁盘格式都是aio格式,即可判断出虚拟磁盘vdi2和虚拟磁盘vdi3都对应于同一个存储系统——ceph,ceph对应的虚拟磁盘的无数据区域是不能被识别的,并且ceph具备复制命令,如此则调用ceph的复制命令,从块设备rbd2中读取数据并把读取到的数据写入到块设备rbd3中,从而实现把虚拟磁盘vdi2的数据复制到虚拟磁盘vdi3中。对于aio格式的两个虚拟磁盘之间的复制,直接调用ceph的复制命令,在复制过程挪到ceph存储系统中执行,复制过程不消耗主机系统io,减轻了主机系统io负载。

如上所述仅为本发明创造的实施方式,不以此限定专利保护范围。本领域技术人员在本发明创造的基础上作出非实质性的变化或替换,仍落入专利保护范围。

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