一种虚拟磁盘数据同步服务器、客户端及系统的制作方法

文档序号:20203432发布日期:2020-03-27 20:52阅读:160来源:国知局
一种虚拟磁盘数据同步服务器、客户端及系统的制作方法

本发明涉及数据同步系统,具体涉及一种虚拟磁盘数据同步服务器、客户端及系统。



背景技术:

现有常用虚拟磁盘并且支持差分链接的有vhd,vhdx,qcow,qcow2,vmdk,vdi等格式,虚拟磁盘技术在虚拟化应用上,为了便于部署和管理,都会利用虚拟磁盘的可以创建多级差分虚拟磁盘的技术。所谓差分虚拟磁盘是指以某个虚拟磁盘数据为母盘,创建出差分虚拟磁盘,通过为每个虚拟机分配一个新创建差分虚拟磁盘,就可以实现每个虚拟机共享同一个母盘数据,比如母盘安装最基本操作系统,而差分虚拟磁盘用于安装特定软件、保存操作系统运行中产生差异数据,这样便于虚拟机的批量创建、差异化应用。同时,在某些应用场景下,也差分虚拟磁盘数据和母盘数据合并,生成新的母盘,这样便于母盘的更新,这个叫差分虚拟磁盘数据提交。由于虚拟磁盘为了数据分布均衡等原因,每次提交新数据时,对于新增数据保存位置引入随机数来选择保存位置,这样导致同一个差分虚拟磁盘,每次提交合并后的母盘并不完全一样。

基于差分虚拟磁盘运行的虚拟机,在某些应用场景下,需要进行虚拟机的迁移,也就是迁移差分虚拟磁盘数据,以便在故障时快速恢复,或者异地运行。而差分虚拟磁盘运行过程中,通常都会逐步变成比较大,少则几十gb,多则100gb以上,基于一般的数据同步方式,比如rsync工具,会对数据进行分片校验后再同步差异化数据,但是由于数据量较大,分片校验也需要读取全部数据,导致同步的源端和目的端都需要进行大量的读操作,对系统的io负担太大,影响同步效果。



技术实现要素:

本发明的目的在于提供一种虚拟磁盘数据同步服务器、客户端及系统,用以解决现有技术中虚拟磁盘数据同步系统存在的io消耗大,导致同步数据过多,影响同步效果的问题。

为了实现上述任务,本发明采用以下技术方案:

一种虚拟磁盘数据同步服务器,所述的服务器中存储有第一计算机程序,所述的第一计算机程序被处理器执行时实现以下步骤:

步骤1、创建第一虚拟磁盘,所述的第一虚拟磁盘包括母盘以及一级差分磁盘;

步骤2、获得第一虚拟磁盘副本,所述的第一虚拟磁盘副本与所述的第一虚拟磁盘相同;

步骤3、将所述的第一虚拟磁盘副本发送给客户端;

步骤4、获得客户端发送的数据提交特征文件以及多个待同步数据;所述的数据提交特征文件用于提供每个待同步数据同步至所述第一虚拟磁盘的一级差分磁盘中的位置;

步骤5、根据所述的数据提交特征文件将所述的多个待同步数据同步至所述的第一虚拟磁盘中,获得同步后的第一虚拟磁盘。

一种虚拟磁盘数据同步客户端,在所述的客户端中存储有第二计算机程序,所述的第二计算机程序被处理器执行时实现以下步骤:

步骤a、获得第一虚拟磁盘副本后,对所述的第一虚拟磁盘副本创建次级差分磁盘,获得第二虚拟磁盘,所述的第二虚拟磁盘包括所述的第一虚拟磁盘副本以及二级差分磁盘;

步骤b、在所述的第二虚拟磁盘中运行虚拟机,将运行产生的数据保存在所述的二级差分磁盘中,获得第三虚拟磁盘,所述的第三虚拟磁盘包括所述的第一虚拟磁盘副本以及存有数据的二级差分磁盘;

步骤c、等待所述的虚拟机关机后,将所述的存有数据的二级差分磁盘提交至所述的第一虚拟磁盘副本的一级差分磁盘中,获得多个待同步数据以及数据提交特征文件;

所述的多个待同步数据为存有数据的二级差分磁盘内的所有数据;

所述的数据提交特征文件包括每个待同步数据在所述的第一虚拟磁盘副本的一级差分磁盘中的位置;

步骤d、将所述的多个待同步数据以及数据提交特征文件发送给服务器。

进一步地,在所述的数据提交特征文件中以字典索引的方式记录每个待同步数据在所述的第一虚拟磁盘副本的一级差分磁盘中的位置;

所述的字典索引中key为每一个待同步数据在存有数据的二级差分磁盘中位置;

所述的字典索引中value为待同步数据提交至所述的第一虚拟磁盘副本的一级差分磁盘中的位置。

一种虚拟磁盘数据同步系统,用于将客户端的磁盘数据同步至服务器中,所述的系统包括服务器和客户端,所述的服务器中存储有第一计算机程序,在所述的客户端中存储有第二计算机程序,所述的第一计算机程序被处理器执行时实现以下步骤:

步骤1、创建第一虚拟磁盘,所述的第一虚拟磁盘包括母盘以及一级差分磁盘;

步骤2、获得第一虚拟磁盘副本,所述的第一虚拟磁盘副本与所述的第一虚拟磁盘相同;

步骤3、将所述的第一虚拟磁盘副本发送给客户端;

步骤4、获得客户端发送的数据提交特征文件以及多个待同步数据;所述的数据提交特征文件用于提供每个待同步数据同步至所述第一虚拟磁盘的一级差分磁盘中的位置;

步骤5、根据所述的数据提交特征文件将所述的多个待同步数据同步至所述的第一虚拟磁盘中,获得同步后的第一虚拟磁盘;

所述的第二计算机程序被处理器执行时实现以下步骤:

步骤a、获得第一虚拟磁盘副本后,对所述的第一虚拟磁盘副本创建次级差分磁盘,获得第二虚拟磁盘,所述的第二虚拟磁盘包括所述的第一虚拟磁盘副本以及二级差分磁盘;

步骤b、在所述的第二虚拟磁盘中运行虚拟机,将运行产生的数据保存在所述的二级差分磁盘中,获得第三虚拟磁盘,所述的第三虚拟磁盘包括所述的第一虚拟磁盘副本以及存有数据的二级差分磁盘;

步骤c、等待所述的虚拟机关机后,将所述的存有数据的二级差分磁盘提交至所述的第一虚拟磁盘副本的一级差分磁盘中,获得多个待同步数据以及数据提交特征文件;

所述的多个待同步数据为存有数据的二级差分磁盘内的所有数据;

所述的数据提交特征文件包括每个待同步数据在所述的第一虚拟磁盘副本的一级差分磁盘中的位置;

步骤d、将所述的多个待同步数据以及数据提交特征文件发送给服务器。

进一步地,在所述的数据提交特征文件中以字典索引的方式记录每个待同步数据在所述的第一虚拟磁盘副本的一级差分磁盘中的位置;

所述的字典索引中key为每一个待同步数据在存有数据的二级差分磁盘中位置;

所述的字典索引中value为待同步数据提交至所述的第一虚拟磁盘副本的一级差分磁盘中的位置。

本发明与现有技术相比具有以下技术效果:

本发明提供的一种虚拟磁盘数据同步服务器、客户端及系统利用创建次级差分的方式,减少了同步需要传输和校验的数据,提高了同步的效果,通过特征文件保证数据的同步的一致性,从而保证了同步的准确性。

附图说明

图1为虚拟磁盘及差分虚拟磁盘关系示意图。

图2为本发明的虚拟磁盘数据同步方案示意图。

具体实施方式

下面结合附图和实施例对本发明进行详细说明。以便本领域的技术人员更好的理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。

以下对本发明涉及的定义或概念内涵做以说明:

虚拟磁盘:一种虚拟化技术,在特定驱动程序支持下,一个文件模拟一个虚拟磁盘,在虚拟机操作系统当做物理磁盘进行系统安装,数据存储的技术。

差分虚拟磁盘:基于公共的原始虚拟磁盘创建的虚拟机专用存储的虚拟磁盘。

提交:是将差分虚拟磁盘数据合并到其上一级差分虚拟磁盘的过程。

字典索引:用于记录数据保存两个关联数据的记录方式,以便于提升搜索速度。

实施例一

在本实施例中公开了一种虚拟磁盘数据同步服务器,服务器中存储有第一计算机程序,第一计算机程序被处理器执行时实现以下步骤:

步骤1、创建第一虚拟磁盘,第一虚拟磁盘包括母盘以及一级差分磁盘;

步骤2、获得第一虚拟磁盘副本,第一虚拟磁盘副本与第一虚拟磁盘相同;

步骤3、将第一虚拟磁盘副本发送给客户端;

步骤4、获得客户端发送的数据提交特征文件以及多个待同步数据;数据提交特征文件用于提供每个待同步数据同步至所述第一虚拟磁盘的一级差分磁盘中的位置;

步骤5、根据数据提交特征文件将多个待同步数据同步至第一虚拟磁盘中,获得同步后的第一虚拟磁盘。

本实施例中提供的方法的使用场景为本地办公和远程办公统一,作为个人云桌面的虚拟机运行在本地pc机上,虚拟机使用的虚拟磁盘及差分虚拟磁盘都保存在本地pc机硬盘上,但是为了实现个人桌面可远程接入,比如在家办公,需要将个人云桌面的虚拟机使用的差分虚拟磁盘在每次关机后同步到云桌面服务器上,便于在家连接服务器办公。

在本实施例中,使用虚拟磁盘管理工具(例如linux系统的qemu-img程序)进行虚拟磁盘的创建,创建虚拟磁盘输入主要参数是大小、保存位置、磁盘文件名称。

第一虚拟磁盘副本下发时通过文件传输工具,服务器端为文件传输的服务器,需要下载虚拟磁盘文件的终端启动文件传输工具客户端,下载需要运行的文件。

在本实施例中,步骤1-5的方法采用以下的代码进行实现:

创建虚拟磁盘的方法:

qemu-imgcreate-fqcow2win7.qcow2200g

以上述创建的win7.qcow2作为母盘,创建一级差分磁盘:

qemu-imgcreate-fqcow2-bwin7.qcow2win7_diff1.qcow2

在服务器端根据数据提交特征文件将多个待同步数据同步至第一虚拟磁盘中的命令,需要增加--input-mapfile=win7.mapfile参数:

qemu-imgcommitwin7_diff2.qcow2--input-mapfile=win7.mapfile

实施例二

一种虚拟磁盘数据同步客户端,在所述的客户端中存储有第二计算机程序。

本实施例中提供的方法的使用场景为本地办公和远程办公统一,作为个人云桌面的虚拟机运行在本地pc机上,虚拟机使用的虚拟磁盘及差分虚拟磁盘都保存在本地pc机硬盘上,但是为了实现个人桌面可远程接入,比如在家办公,需要将个人云桌面的虚拟机使用的差分虚拟磁盘在每次关机后同步到云桌面服务器上,便于在家连接服务器办公。

所述的第二计算机程序被处理器执行时实现以下步骤:

步骤a、获得第一虚拟磁盘副本后,对所述的第一虚拟磁盘副本创建次级差分磁盘,获得第二虚拟磁盘,所述的第二虚拟磁盘包括所述的第一虚拟磁盘副本以及二级差分磁盘;

在本实施例中,使用虚拟磁盘管理工具(例如linux系统的qemu-img程序)进行虚拟磁盘的创建,创建二级虚拟磁盘输入主要参数是大小、保存位置、磁盘文件名称、上一级磁盘文件(在本步骤中为第一级虚拟机磁盘差分文件)。

在本实施例中,采用以下方式实现基于一级差分虚拟磁盘创建二级差分虚拟磁盘:

qemu-imgcreate-fqcow2-bwin7_diff1.qcow2win7_diff2.qcow2

在本步骤中,为了提供虚拟机运行时的系统盘创建次级差分。

步骤b、在所述的第二虚拟磁盘中运行虚拟机,将运行产生的数据保存在所述的二级差分磁盘中,获得第三虚拟磁盘,所述的第三虚拟磁盘包括所述的第一虚拟磁盘副本以及存有数据的二级差分磁盘;

步骤c、等待所述的虚拟机关机后,将所述的存有数据的二级差分磁盘提交至所述的第一虚拟磁盘副本的一级差分磁盘中,获得多个待同步数据以及数据提交特征文件;

所述的多个待同步数据为存有数据的二级差分磁盘内的所有数据;

所述的数据提交特征文件包括每个待同步数据在所述的第一虚拟磁盘副本的一级差分磁盘中的位置;

在本实施例中,将所述的存有数据的二级差分磁盘提交至所述的第一虚拟磁盘副本的一级差分磁盘中,获得第四虚拟磁盘,获得的第四虚拟磁盘相当于就是用户操作完成获得的虚拟磁盘,例如在公司中的计算机与家里的计算机进行办公室,用户从家中登录虚拟机,并进行了一系列操作关机后,此时获得的就是第四虚拟磁盘,而现在的目的在于将第四虚拟磁盘中经过用户一系列操作产生的数据同步至服务器上,使得服务器上存储的一直都是最新的虚拟磁盘,用户再去公司中的计算机中登录虚拟机时,可以直接看到在家中办公时进行的各项操作产生的数据。

在本实施例中,通过以下方式实现客户端的数据提交:

在客户端提交(合并)二级差分虚拟磁盘到一级差分虚拟磁盘的命令,增加--output-mapfile=win7.mapfile参数,输出特征文件win7.mapfile:

qemu-imgcommitwin7_diff2.qcow2--output-mapfile=win7.mapfile

在本实施例中,获得的第四虚拟磁盘相当于与第一虚拟磁盘的格式完全相同,因为第四虚拟磁盘中的数据可以直接同步至第一虚拟磁盘中。

在本实施例中,当服务器中的一级差分磁盘为空的时,可以直接将存有数据的一级差分磁盘同步至空的一级差分磁盘中,获得同步后的第一虚拟磁盘;

但是当服务器中的一级差分磁盘不为空时,如果直接将存有数据的一级差分磁盘与服务器中的一级差分磁盘同步,可能会出现数据存入位置出现错误的情况。

为了同步后的第一虚拟磁盘中的数据与第四虚拟磁盘中的数据完全一致,本发明提供了数据校验的同步方法,主要是通过数据提交特征文件指导数据进行合并。

为了同步后的第一虚拟磁盘中的数据与第四虚拟磁盘中的数据完全一致,本发明提供了数据校验的同步方法,在本实施例中,数据提交特征文件中数据索引的方式可以是字典查询,也可以是映射表查询。

为了提高查询搜索的速度,作为一种优选的实施方式,在数据提交特征文件中以字典索引的方式记录每个待同步数据在第一虚拟磁盘副本的一级差分磁盘中的位置;

字典索引中key为每一个待同步数据在存有数据的二级差分磁盘中位置;

字典索引中value为待同步数据提交至第一虚拟磁盘副本的一级差分磁盘中的位置。

在本发明中,采用了字典索引的方式实现了数据的查询,提高了数据合并操作时的查询效率,从而提高了同步的效果。

在本实施例中,为了解决次级差分虚拟磁盘数据在客户端和服务器分别提交后可能导致的数据不一致,服务器提交次级差分虚拟磁盘数据到本地差分虚拟磁盘时,同时输出数据提交特征文件,数据提交特征文件记录的内容是,次级差分虚拟磁盘数据合并到差分虚拟磁盘时,在差分虚拟磁盘中每个新增数据的保存位置,这个记录方式是以字典方式记录,其中以需要同步的次级差分虚拟磁盘中源数据的地址为key,以合并在在差分虚拟磁盘中记录的地址为value。将记录同步数据的次级差分虚拟磁盘及数据提交特征文件一起发送到需要同步的服务器,待服务器获取次级差分虚拟磁盘后,连同数据提交特征文件一起进行数据提交,提交数据时,如果有数据提交特征文件,则每个根据需要合并的源数据地址在数据提交特征文件中查找key对应的地址,然后将在差分虚拟磁盘对应的地址进行数据的保存,确保服务器数据合并后差分虚拟磁盘数据与客户端差分虚拟磁盘数据完全一致。

步骤d、将所述的多个待同步数据以及数据提交特征文件发送给服务器。

实施例三

一种虚拟磁盘数据同步系统,用于将客户端的磁盘数据同步至服务器中,系统包括服务器和客户端,服务器中存储有第一计算机程序,在客户端中存储有第二计算机程序,第一计算机程序被处理器执行时实现以下步骤:

步骤1、创建第一虚拟磁盘,第一虚拟磁盘包括母盘以及一级差分磁盘;

步骤2、获得第一虚拟磁盘副本,第一虚拟磁盘副本与第一虚拟磁盘相同;

步骤3、将第一虚拟磁盘副本发送给客户端;

步骤4、获得客户端发送的数据提交特征文件以及多个待同步数据;数据提交特征文件用于提供每个待同步数据同步至所述第一虚拟磁盘的一级差分磁盘中的位置;

步骤5、根据数据提交特征文件将多个待同步数据同步至第一虚拟磁盘中,获得同步后的第一虚拟磁盘;

第二计算机程序被处理器执行时实现以下步骤:

步骤a、获得第一虚拟磁盘副本后,对第一虚拟磁盘副本创建次级差分磁盘,获得第二虚拟磁盘,第二虚拟磁盘包括第一虚拟磁盘副本以及二级差分磁盘;

步骤b、在第二虚拟磁盘中运行虚拟机,将运行产生的数据保存在二级差分磁盘中,获得第三虚拟磁盘,第三虚拟磁盘包括第一虚拟磁盘副本以及存有数据的二级差分磁盘;

步骤c、等待虚拟机关机后,将存有数据的二级差分磁盘提交至第一虚拟磁盘副本的一级差分磁盘中,获得多个待同步数据以及数据提交特征文件;

多个待同步数据为存有数据的二级差分磁盘内的所有数据;

数据提交特征文件包括每个待同步数据在第一虚拟磁盘副本的一级差分磁盘中的位置;

步骤d、将所述的多个待同步数据以及数据提交特征文件发送给服务器。

可选地,在数据提交特征文件中以字典索引的方式记录每个待同步数据在第一虚拟磁盘副本的一级差分磁盘中的位置;

字典索引中key为每一个待同步数据在存有数据的二级差分磁盘中位置;

字典索引中value为待同步数据提交至第一虚拟磁盘副本的一级差分磁盘中的位置。

本实施例中提供的方法的使用场景为本地办公和远程办公统一,作为个人云桌面的虚拟机运行在本地pc机上,虚拟机使用的虚拟磁盘及差分虚拟磁盘都保存在本地pc机硬盘上,但是为了实现个人桌面可远程接入,比如在家办公,需要将个人云桌面的虚拟机使用的差分虚拟磁盘在每次关机后同步到云桌面服务器上,便于在家连接服务器办公。

如图1、2所示,本方案包括以下步骤:

使用虚拟磁盘管理工具(例如linux系统的qemu-img程序)进行虚拟磁盘的创建,创建二级虚拟磁盘输入主要参数是大小、保存位置、磁盘文件名称、上一级磁盘文件(在本步骤中为第一级虚拟机磁盘差分文件)。

在本实施例中,采用以下方式实现基于一级差分虚拟磁盘创建二级差分虚拟磁盘:

qemu-imgcreate-fqcow2-bwin7_diff1.qcow2win7_diff2.qcow2

在本步骤中,为了提供虚拟机运行时的系统盘创建次级差分。

在本实施例中,以二级差分磁盘作为虚拟机系统运行的系统盘,这个虚拟机运行中产生数据就会写入二级差分磁盘中。

在本实施例中,将所述的存有数据的二级差分磁盘提交至所述的第一虚拟磁盘副本的一级差分磁盘中,获得第四虚拟磁盘,获得的第四虚拟磁盘相当于就是用户操作完成获得的虚拟磁盘,例如在公司中的计算机与家里的计算机进行办公室,用户从家中登录虚拟机,并进行了一系列操作关机后,此时获得的就是第四虚拟磁盘,而现在的目的在于将第四虚拟磁盘中经过用户一系列操作产生的数据同步至服务器上,使得服务器上存储的一直都是最新的虚拟磁盘,用户再去公司中的计算机中登录虚拟机时,可以直接看到在家中办公时进行的各项操作产生的数据。

在本实施例中,获得的第四虚拟磁盘相当于与第一虚拟磁盘的格式完全相同,因为第四虚拟磁盘中的数据可以直接同步至第一虚拟磁盘中。

在本实施例中,当服务器中的一级差分磁盘为空的时,可以直接将存有数据的一级差分磁盘同步至空的一级差分磁盘中,获得同步后的第一虚拟磁盘;

但是当服务器中的一级差分磁盘不为空时,如果直接将存有数据的一级差分磁盘与服务器中的一级差分磁盘同步,可能会出现数据存入位置出现错误的情况。

为了同步后的第一虚拟磁盘中的数据与第四虚拟磁盘中的数据完全一致,本发明提供了数据校验的同步方法,在本实施例中,数据提交特征文件中数据索引的方式可以是字典查询,也可以是映射表查询。

为了提高查询搜索的速度,作为一种优选的实施方式,在数据提交特征文件中以字典索引的方式记录每个待同步数据在第一虚拟磁盘副本的一级差分磁盘中的位置;

字典索引中key为每一个待同步数据在存有数据的二级差分磁盘中位置;

字典索引中value为待同步数据提交至第一虚拟磁盘副本的一级差分磁盘中的位置。

在本实施例中,为了解决次级差分虚拟磁盘数据在客户端和服务器分别提交后可能导致的数据不一致,服务器提交次级差分虚拟磁盘数据到本地差分虚拟磁盘时,同时输出数据提交特征文件,数据提交特征文件记录的内容是,次级差分虚拟磁盘数据合并到差分虚拟磁盘时,在差分虚拟磁盘中每个新增数据的保存位置,这个记录方式是以字典方式记录,其中以需要同步的次级差分虚拟磁盘中源数据的地址为key,以合并在在差分虚拟磁盘中记录的地址为value。将记录同步数据的次级差分虚拟磁盘及数据提交特征文件一起发送到需要同步的服务器,待服务器获取次级差分虚拟磁盘后,连同数据提交特征文件一起进行数据提交,提交数据时,如果有数据提交特征文件,则每个根据需要合并的源数据地址在数据提交特征文件中查找key对应的地址,然后将在差分虚拟磁盘对应的地址进行数据的保存,确保服务器数据合并后差分虚拟磁盘数据与客户端差分虚拟磁盘数据完全一致。

在本实施例中,采用以下的方式实现数据同步:

创建虚拟磁盘的方法:

qemu-imgcreate-fqcow2win7.qcow2200g

以上述创建的win7.qcow2作为母盘,创建一级差分磁盘:

qemu-imgcreate-fqcow2-bwin7.qcow2win7_diff1.qcow2

基于一级差分虚拟磁盘创建二级差分虚拟磁盘:

qemu-imgcreate-fqcow2-bwin7_diff1.qcow2win7_diff2.qcow2

在客户端提交(合并)二级差分虚拟磁盘到第一虚拟磁盘副本中一级差分虚拟磁盘的命令,增加--output-mapfile=win7.mapfile参数,输出特征文件win7.mapfile:

qemu-imgcommitwin7_diff2.qcow2--output-mapfile=win7.mapfile

在服务器端提交(合并)二级差分到服务器端第一虚拟磁盘中一级差分虚拟磁盘时的命令,需要增加--input-mapfile=win7.mapfile参数:

qemu-imgcommitwin7_diff2.qcow2--input-mapfile=win7.mapfile

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

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