掌桥专利:专业的专利平台
掌桥专利
首页

一种QEMU虚拟机间共享QCOW2磁盘的方法及设备

文献发布时间:2023-06-19 18:49:33


一种QEMU虚拟机间共享QCOW2磁盘的方法及设备

技术领域

本申请涉及计算机技术领域,尤其涉及一种QEMU虚拟机间共享QCOW2磁盘的方法及设备。

背景技术

共享云硬盘支持多个云服务器并发读写访问一个存储设备块,具有多挂载点、高并发性、高性能、高可靠性的特点,适用于需要支持集群、高可用能力的关键企业应用场景。

使用共享云硬盘必须搭建共享文件系统或者类似的集群文件系统(比如CFS)。如果在没有共享文件系统或者集群文件系统的情况下,直接将一个云硬盘挂载到多台云服务器上,存在2个问题:一是无法实现数据共享和同步,二是在多个云服务器同时读和写云硬盘上的同一个数据块场景下,存在极大地数据覆盖风险。

集群文件系统按照文件访问方式分为串行访问和并行访问。NFS属于常用的串行访问式文件系统,通过支持原生的Unix文件锁,来控制云服务器对云硬盘上文件的并发访问。如图1所示,NFS是通过标准网络将存储与云服务器连接在一起,不需要特殊硬件。

HDFS共享文件系统架构如图2所示,并行访问的文件系统,比如GFS、HDFS等,需要比较多的资源来部署复杂的集群文件系统,并且在云服务器上需要安装专门的客户端。

云服务器通过NFS文件系统来共享云硬盘时,在用户进程和磁盘中间多一层文件系统,相比于直接操作磁盘文件,读写效率有所降低。无法支持并行访问的方式,只能通过文件锁将并行访问转换成低性能和低效率的串行访问。

云服务器通过类似HDFS的集群文件系统来共享云硬盘时,虽然解决了无法并行访问的问题,但是除了需要在云服务器上安装专门的客户端,还需要在存储服务器上部署集群,部署难度有所提升,占用资源也更多。

发明内容

本申请实施例提供一种QEMU虚拟机间共享QCOW2磁盘的方法及设备,用以对QEMU的修改和Qcow2磁盘的扩展,在不依赖与其他系统的情况下,实现多个云服务器对一个云硬盘的并发操作。

本申请实施例提供一种QEMU虚拟机间共享QCOW2磁盘的方法,包括:

对于QCOW2磁盘,预先在QCOW2(QEMU copy on write)文件头的基础上,扩展比特位图,以利用扩展的比特位图记录磁盘内所有数据块操作状态;

在任一QEMU虚拟机需要对所述QCOW2磁盘的任一数据块写入数据的情况下,通过扩展的比特位图查询所述任一数据块的操作状态;

在所述任一数据块的操作状态为空闲状态,或,转变为空闲状态的情况下,允许所述任一QEMU虚拟机写入数据。

可选的,利用扩展的比特位图记录磁盘内所有数据块操作状态是通过OP Bitmap字段来实现的,且所述OP Bitmap字段还描述了各数据块的大小,数据块的起始地址和结束地址。

可选的,还包括:在主机上对应的虚拟机进程有IO写操作的情况下,向QEMU发送预设request请求,以使得所述QEMU从QCOW2磁盘中读取OP Bitmap,以返回需要操作的数据块的操作状态。

本申请实施例还提出一种计算机设备,包括处理器,被配置为:

对于QCOW2磁盘,预先在QCOW2(QEMU copy on write)文件头的基础上,扩展比特位图,以利用扩展的比特位图记录磁盘内所有数据块操作状态;

在任一QEMU虚拟机需要对所述QCOW2磁盘的任一数据块写入数据的情况下,通过扩展的比特位图查询所述任一数据块的操作状态;

在所述任一数据块的操作状态为空闲状态,或,转变为空闲状态的情况下,允许所述任一QEMU虚拟机写入数据。

可选的,利用扩展的比特位图记录磁盘内所有数据块操作状态是通过OP Bitmap字段来实现的,且所述OP Bitmap字段还描述了各数据块的大小,数据块的起始地址和结束地址。

可选的,所述处理器,还被配置为:在主机上对应的虚拟机进程有IO写操作的情况下,向QEMU发送预设request请求,以使得所述QEMU从QCOW2磁盘中读取OP Bitmap,以返回需要操作的数据块的操作状态。

本申请实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前述的QEMU虚拟机间共享QCOW2磁盘的方法的步骤。

本申请实施例通过对QEMU的修改和QCOW2磁盘的扩展,在不依赖与其他系统的情况下,实现多个云服务器对一个云硬盘的并发操作。

上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为现有技术的NFS的共享文件系统架构;

图2为现有技术的HDFS共享文件系统架构;

图3为本申请实施例的扩展Op Bitmap示例;

图4为本申请实施例的QEMU虚拟机之的共享存储架构;

图5为本申请实施例QEMU虚拟机间共享QCOW2磁盘的数据写入流程示例。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

QEMU是一个通用的开源机器模拟器和虚拟器。QEMU可以以多种不同的方式使用,一种是全系统仿真,为运行的客户机提供整套虚拟设备(CPU、内存和仿真设备),能够在任意支持的架构上为任何机器运行一个完整的操作系统。另一种是用户模式仿真,QEMU能启动不同CPU编译的Linux/BSD程序,从而在任意支持的架构上为另一个Linux/BSD运行程序。QEMU还提供了许多独立的命令行实用程序,例如QEMU-IMG磁盘映像实用程序来创建、转换和修改磁盘映像。

QCOW2(QCOW是QEMU copy on write的缩写)是虚拟机磁盘镜像的一种存储格式,使用QCOW2格式可以把物理存储层和逻辑存储层隔离。QCOW2为逻辑块和物理块之间创建了一个映射信息,每个逻辑块都会被映射到相应的物理块上;另外,QCOW2可以只保存物理存储上的数据变化。因为这些特性,存储空间“过度分配(over-commitment)”功能和虚拟机快照功能才得以实现,所以qcow2镜像格式被广泛应用在虚拟机磁盘技术中。

本申请实施例提供一种QEMU虚拟机间共享QCOW2磁盘的方法,包括:

对于QCOW2磁盘,预先在QCOW2(QEMU copy on write)文件头的基础上,扩展比特位图,以利用扩展的比特位图记录磁盘内所有数据块操作状态。在一些实施例中,利用扩展的比特位图记录磁盘内所有数据块操作状态是通过OP Bitmap字段来实现的,且所述OPBitmap字段还描述了各数据块的大小,数据块的起始地址和结束地址。图3示出了扩展OPBitmap的一种示例,本申请的方法在已有的QCOW2文件头基础上,扩展一个记录磁盘内所有数据块操作状态的比特位图(Block1 Status、Block2 Status、...、Block n Status)。

图4示出了QEMU虚拟机之的共享存储架构,在任一QEMU虚拟机需要对所述QCOW2磁盘的任一数据块写入数据的情况下,通过扩展的比特位图查询所述任一数据块的操作状态。也即可以通过OP Bitmap中的Block n Status来确定对应的数据块的操作状态。在所述任一数据块的操作状态为空闲状态,或,转变为空闲状态的情况下,允许所述任一QEMU虚拟机写入数据。具体的,如图5所示,当QEMU虚拟机向QCOW2磁盘中的某个数据块写入数据时,首先通过Op Bitmap查询当前目的数据块的状态。

在一些实施例中,还包括:在主机上对应的虚拟机进程有IO写操作的情况下,向QEMU发送预设request请求,以使得所述QEMU从QCOW2磁盘中读取OP Bitmap,以返回需要操作的数据块的操作状态。具体的文件系统需要向qemu增加一个request请求,用来获取即将进行操作的数据块状态。如果是空闲状态则继续写入,如果是写状态则等待数据块状态变成空闲后再写入。如果qemu返回当前数据块状态不可用,则需要根据策略,继续等待或者超时重新申请,直至状态可用后,再写入数据。

本申请的方法,应用于多个云服务器共享云硬盘的场景下,使用原生的qcow2磁盘,没有对第三方文件系统的依赖,也不需要部署集群系统。通过对QEMU的修改和Qcow2磁盘的扩展,在不依赖与其他系统的情况下,实现多个云服务器对一个云硬盘的并发操作。

本申请实施例还提出一种计算机设备,包括处理器,被配置为:

对于QCOW2磁盘,预先在QCOW2(QEMU copy on write)文件头的基础上,扩展比特位图,以利用扩展的比特位图记录磁盘内所有数据块操作状态;

在任一QEMU虚拟机需要对所述QCOW2磁盘的任一数据块写入数据的情况下,通过扩展的比特位图查询所述任一数据块的操作状态;

在所述任一数据块的操作状态为空闲状态,或,转变为空闲状态的情况下,允许所述任一QEMU虚拟机写入数据。

在一些实施例中,利用扩展的比特位图记录磁盘内所有数据块操作状态是通过OPBitmap字段来实现的,且所述OP Bitmap字段还描述了各数据块的大小,数据块的起始地址和结束地址。

在一些实施例中,所述处理器,还被配置为:在主机上对应的虚拟机进程有IO写操作的情况下,向QEMU发送预设request请求,以使得所述QEMU从QCOW2磁盘中读取OPBitmap,以返回需要操作的数据块的操作状态。

本申请实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前述的QEMU虚拟机间共享QCOW2磁盘的方法的步骤。

本申请实施例通过对QEMU的修改和QCOW2磁盘的扩展,在不依赖与其他系统的情况下,实现多个云服务器对一个云硬盘的并发操作。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器或者网络设备等)执行本申请各个实施例所述的方法。

上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本申请的保护之内。

相关技术
  • 共享磁盘故障节点的处理方法、装置、计算机设备
  • 一种磁盘阵列卡的控制方法、装置及电子设备
  • 基于qemu的虚拟机磁盘热扩容的方法及装置
  • 一种用于多个QEMU虚拟机的共享存储方法及装置
技术分类

06120115707322