本发明涉及虚拟机数据灾备技术领域,更为具体来说,本发明涉及一种基于块驱动的虚拟机数据保护方法。
背景技术:
KVM虚拟机是Linux kernel的一个模块,自linux2.6.20之后它就集成在Linux的各个主要发行版本中。KVM虚拟机使用Linux自身的调度器进行管理,KVM虚拟机的虚拟化需要相应硬件的支持,比如,intel VT技术或者AMD V技术,KVM虚拟机是基于硬件完全虚拟化的。
但是,外界环境的变化往往是难以预估的,特别是对于云环境下的KVM虚拟机,如果其虚拟磁盘由于外界环境破坏而造成故障,传统的将保护数据放到本地数据中心或专用远程服务站等灾备方法往往无法难以将全部数据恢复,无法实现RPO=0。
因此,获得一种可将发生灾难的虚拟机数据全部恢复的方法成为了本领域技术人员研究的重点和始终追求的目标。
技术实现要素:
为解决现有技术无法将发生灾难的虚拟机的数据全部恢复的问题,本发明提供了一种基于块驱动的虚拟机数据保护方法,在QEMU块设备驱动层始终检测对虚拟机的虚拟磁盘的写操作,并将写入的数据同步至外部存储设备的备份存储卷中,当外界环境造成虚拟机数据损坏或丢失时,可将事先备份的数据全部恢复。
为实现上述技术目的,本发明公开了一种基于块驱动的虚拟机数据保护方法,该保护方法包括:
步骤1,在QEMU块设备驱动层检测对虚拟机的用户存储卷的写入操作;
步骤2,在向虚拟机的用户存储卷写入数据的同时,将相同数据写入外部存储设备的备份存储卷;
步骤3,当虚拟机的用户存储卷发生故障时,通过外部存储设备的备份存储卷完成数据读写请求;
步骤4,当虚拟机的用户存储卷故障排除后,将外部存储设备的备份存储卷内数据恢复至虚拟机的用户存储卷。
进一步地,步骤4中,数据恢复过程完成后,返回步骤1,再一次地对数据进行备份,保护虚拟机数据。
进一步地,步骤4中,数据恢复过程中,同时向虚拟机的用户存储卷和外部存储设备的备份存储卷内写入数据。
进一步地,步骤2中,读取数据时,仅从虚拟机的用户存储卷读取数据。
进一步地,步骤3中,读取数据时,仅从外部存储设备的备份存储卷读取数据。
进一步地,外部存储设备挂载于虚拟机所在的宿主机上,所述备份存储卷为外部存储设备映射出的磁盘。由于外部存储设备难以受网络影响,本发明通过宿主机上挂载的外部存储设备映射出来的磁盘作为备份存储卷的方式,达到提高保护存储设备安全性的技术效果,因此,本发明具有可靠性好、稳定性强、使用方便等优点。
进一步地,步骤3中,当虚拟机的用户存储卷发生故障时,将虚拟机的用户存储卷切换至外部存储设备的备份存储卷,以保证虚拟机正常工作。
进一步地,步骤2中,通过写入数据块的方式将相同数据写入外部存储设备的备份存储卷。
进一步地,步骤4中,数据恢复过程完成后,发出数据恢复结束信号。
进一步地,步骤2中,通过写拷贝的方式将相同数据写入外部存储设备的备份存储卷;步骤4中,通过写拷贝的方式将外部存储设备的备份存储卷内数据恢复至虚拟机的用户存储卷。本发明通过写拷贝的方式能够保证备份或恢复数据与原始数据完全相同,彻底备份和恢复虚拟机数据,从而达到对虚拟机数据保护的目的。
本发明的有益效果为:本发明基于QEMU-KVM虚拟机对虚拟机的用户存储卷的写操作感知,完成对虚拟机的写操作实时分流,一份数据写入用户存储卷中,另一份数据副本写入到备份存储卷中,当QEMU-KVM虚拟机的数据出现问题时,本发明可将全部数据恢复。
附图说明
图1为基于块驱动的虚拟机数据保护的工作状态图
图2为基于块驱动的虚拟机数据保护的工作模式图。
具体实施方式
下面结合说明书附图对本发明的基于块驱动的虚拟机数据保护方法进行详细的解释和说明。
如图1、2所示,本发明公开了一种基于块驱动的虚拟机数据保护方法,本发明基于成型的开源虚拟化软件QEMU,使其成可控制QEMU-KVM虚拟机的用户空间工具。在其代码中,QEMU定义了一个块设备数据结构或块设备驱动程序(Block Driver),其中包括各种属性以及各种块设备驱动需要实现的函数。QEMU虚拟系统可使用一套统一的插件式的块设备驱动架构,它定义了若干需要每种块设备驱动实现的接口。QEMU持续数据保护块驱动(QEMU CDP Block Driver)作为其中的一种。本发明为了解除云环境下的数据安全隐患,以及强化云环境下的数据安全保障,针对性的提出QEMU持续数据保护块驱动(QEMU CDP Block Driver),该驱动程序工作可在云环境架构的QEMU虚拟化层,可以与云环境完美契合,根据需求被灵活调用。本发明QEMU持续数据保护块驱动(QEMU CDP Block Driver)是在QEMU虚拟系统下开发的块设备驱动程序,该驱动程序彻底解决了QEMU-KVM虚拟机的数据分流问题,为实现QEMU-KVM虚拟机的高级别持续数据保护提供了重要保障。
如图1、2所示,本发明基于块驱动的虚拟机数据保护方法包括:
步骤1,基于QEMU持续数据保护块驱动(QEMU CDP Block Driver)对程序的写操作感知,在QEMU块设备驱动层检测对虚拟机的用户存储卷的写入操作。
步骤2,在向虚拟机的用户存储卷写入数据的同时,通过写拷贝的方式将相同数据写入外部存储设备的备份存储卷,具体来说,本实施例中,通过写入数据块的方式将相同数据写入外部存储设备的备份存储卷;本发明的外部存储设备挂载于虚拟机所在的宿主机上,备份存储卷为外部存储设备映射出的磁盘;在虚拟机的用户存储卷正常工作时,利用应用程序读取数据时,仅从虚拟机的用户存储卷读取数据。具体地,如图1所示,当应用程序向QEMU-KVM虚拟机的存储卷写入数据时,QEMU持续数据保护块驱动(QEMU CDP Block Driver)进行数据分流,数据在写入用户存储卷的同时,也向外部存储设备的备份存储卷中写入一份相同的数据,从而实现了对用户数据的备份,从而实现了持续数据保护功能,本发明提供了IO级别的数据保护机制,因而可以对虚拟机用户数据安全提供更加全面的保障。
步骤3,当虚拟机的用户存储卷发生故障时,通过外部存储设备的备份存储卷完成数据读写请求;本发明中,当虚拟机的用户存储卷发生故障时,将虚拟机的原磁盘切换至外部存储设备的备份存储卷,读取数据时,仅从外部存储设备的备份存储卷读取数据。
步骤4,当虚拟机的用户存储卷故障排除后,通过写拷贝的方式将外部存储设备的备份存储卷内数据恢复至虚拟机的用户存储卷,在数据的恢复过程中,虚拟机正常工作时,同时向虚拟机的用户存储卷和外部存储设备的备份存储卷内写入数据。本实施例中,数据恢复过程完成后,发出数据恢复结束信号;返回步骤1,再次进行数据备份工作。
如图2所示,本发明可以按照如下的方式工作:本发明提到的QEMU持续数据保护块驱动(QEMU CDP Block Driver)具有三种工作模式:(1)用户数据请求只传递给主设备驱动程序,用户从用户存储卷读取数据,向用户存储卷写入数据,设备的读写操作与备份存储卷完全无关;(2)用户数据请求只传递给镜像设备驱动程序,用户从备份存储卷读取数据,向备份存储卷写入数据,用户的读写操作与用户存储卷完全无关;(3)用户数据请求既可以传递给主设备驱动程序,也可以传递给镜像设备驱动程序;用户既可以从用户存储卷读取数据,也可以从备份存储卷读取数据,并且同时向用户存储卷和备份存储卷写入数据,在这种工作模式下,用户的读写操作需要用户存储卷和备份存储卷的支持,或者说,需要用户存储卷和镜像设备的支持。针对上述的三种工作模式,本发明可实现以下几种功能:1、数据传送:当QEMU持续数据保护块驱动(QEMU CDP Block Driver)未开启数据分流功能时,QEMU持续数据保护块驱动(QEMU CDP Block Driver)使用工作模式(1),用户读写数据请求传递给主设备驱动程序,用户对用户存储卷读写数据。QEMU持续数据保护块驱动(QEMU CDP Block Driver)只是简单地将用户的IO操作传递给用户存储卷,用户的IO操作与备份存储卷毫无关系,这与QEMU虚拟系统的标准环境完全相同,对QEMU虚拟系统性能没有任何影响。2、数据分流:这是本发明QEMU持续数据保护块驱动(QEMU CDP Block Driver)最基本的功能,QEMU持续数据保护块驱动(QEMU CDP Block Driver)使用工作模式(3),用户读数据请求传递给主设备驱动程序,用户写数据请求同时传递给用户存储卷和镜像设备程序。用户从用户存储卷读取数据,同时向用户存储卷和备份存储卷写入数据,从而达到对用户数据分流的目的。3、主备设备切换:QEMU持续数据保护块驱动(QEMU CDP Block Driver)通过接收用户命令,可以在工作模式(3)和工作模式(2)之间进行切换。当用户存储卷发生故障时,QEMU持续数据保护块驱动(QEMU CDP Block Driver)根据用户命令切换到工作模式(2),用户的读写数据请求传递给镜像设备驱动程序,用户从备份存储卷中读写数据。当主设备故障排除后,QEMU持续数据保护块驱动(QEMU CDP Block Driver)根据用户命令重新切换到工作模式(3),用户的读写数据请求传递给主设备驱动程序,用户写数据请求同时传递给主设备和镜像设备程序。用户从主设备读取数据,同时向主设备和镜像设备写入数据。用户对设备的IO操作并没有中断,从而保证了QEMU-KVM虚拟机设备工作的连续性。4、数据同步:持续数据保护是基于数据块级别的,在运行过程中,它需要首先通过数据同步将主设备原始数据复制到镜像设备,再通过数据分流将主设备的数据变化量写入镜像设备,从而实现数据保护的完整性。数据同步过程通常是在QEMU-KVM虚拟机运行状态下完成的,此时QEMU持续数据保护块驱动(QEMU CDP Block Driver)处于工作模式(3)的数据分流状态,用户从主设备读取数据,同时向主设备和镜像设备写入数据,由于数据同步过程也存在主设备向镜像设备的数据复制,可能出现设备IO并发冲突现象导致主设备与镜像设备的数据不一致;为了保证数据同步过程中主设备与镜像设备的数据一致性,QEMU CDP Drive在同步过程中引入了互斥锁。5、数据恢复,又称数据反向同步,当主设备故障排除准备重新使用时,首先需要将镜像设备数据复制到主设备,这一过程称为数据恢复,由于数据恢复通常是在QEMU-KVM虚拟机运行状态下完成的,因此同样需要保护数据的完整性。在数据恢复过程中,QEMU持续数据保护块驱动(QEMU CDP Block Driver)处于工作模式(3),与数据分流状态不同,用户从镜像设备读取数据,同时向主设备和镜像设备写入数据,由于数据恢复过程也存在镜像设备向主设备的数据复制,可能出现设备IO并发冲突现象导致镜像设备与主设备的数据不一致。为了保证数据恢复过程中镜像设备与主设备的数据一致性QEMU持续数据保护块驱动(QEMU CDP Block Driver)在恢复过程中引入了互斥锁。通过QEMU-KVM虚拟机的数据分流实现QEMU-KVM虚拟机的高级别持续数据保护。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明实质内容上所作的任何修改、等同替换和简单改进等,均应包含在本发明的保护范围之内。