用于虚拟容器系统容灾的内核态与用户态数据交换方法

文档序号:6634159阅读:275来源:国知局
用于虚拟容器系统容灾的内核态与用户态数据交换方法
【专利摘要】本发明涉及用于虚拟容器系统容灾的内核态与用户态数据交换方法,在一次虚拟容器的容灾备份中,需要在内核态和用户态之间交换数据,需要将内核态的文件系统操作传递给用户态程序处理,再将处理结果传回内核态,再传递给原始应用程序。数据块恢复的速度慢主要是因为需要多次内核态和用户态的切换,内核和用户态通信的效率不够高。本发明借助FUSE将所有的恢复工作都移到用户态来完成,首先实现一个FUSE文件系统,将其中的一个文件映射到为/DEV/LOOP设备,然后将这个LOOP设备当做要恢复的磁盘的影子设备,虚拟机管理器利用这个LOOP设备启动虚拟容器。于是对原先硬盘的访问会在FUSE文件系统里被截获,FUSE文件系统再与服务器通信,从而实现高效的数据按需恢复。
【专利说明】用于虚拟容器系统容灾的内核态与用户态数据交换方法

【技术领域】
[0001]本发明涉及计算机操作系统和网络存储领域,尤其涉及用于虚拟容器系统容灾的内核态与用户态数据交换方法。

【背景技术】
[0002]随着科技的发展,在互联网领域,数据在灾难面前的脆弱性愈加突出,而数据的丢失往往会带来重大的经济损失,因此人们的对数据安全性的需求越来越高。为抵御灾难而采取的技术称为容灾备份技术,它的出现可以有效防止出现因类似“911”事件的灾难而导致的不可逆转的数据丢失所造成的巨大损失。
[0003]容灾备份系统包括被容灾系统和容灾计算机两部分,被容灾系统在正常运转中将容灾数据通过网络传输到容灾计算机,并在灾难发生后从容灾计算机端获取恢复所需的全部数据。
[0004]传统的容灾备份技术一般只考虑将计算机所存储的数据通过远程备份方式复制到通过网络连接的远程容灾中心,并在出现灾难时从远程容灾中心重新获取所丢失的数据,从而达到降低灾难损失的目的。随着虚拟化技术的发展,出现了能够备份包括数据在内的整个运行环境的新型灾备技术,基于虚拟化技术的容灾备份技术拥有以下特点:可以完全恢复被容灾系统的运行状态,包括正在进行的计算,以及未写入磁盘的缓冲区内容等;灾备过程对被容灾系统上的应用透明,无需对现有程序的运行方式进行任何改动。
[0005]虚拟容器容灾是虚拟化容灾的一种形式,根据现在已有的实验和分析,数据块恢复的效率高低主要是受到需要多次内核态和用户态的切换的影响,并且内核和用户态通信的效率不够高。


【发明内容】

[0006]本发明所要解决的技术问题是提供一种用于虚拟容器系统容灾的内核态与用户态数据交换方法,提高虚拟容器容灾的数据恢复性能的关键问题。
[0007]为此目的,本发明提出了用于虚拟容器系统容灾的内核态与用户态数据交换方法,包括以下具体步骤:
[0008]S1:虚拟设备映射模块建立一个FUSE用户态文件系统;其中,所述虚拟设备映射模块包括在待恢复客户端中;
[0009]S2:将所述FUSE用户态文件系统中的一个文件映射到DEV LOOP伪设备,并将所述DEV LOOP设备作为按照预设恢复模式要恢复的磁盘的影子设备;
[0010]S3:缺页检测模块维护一个恢复数据位图,记录完成恢复和/或因新写入而不需要进行恢复的数据块编号,其中,所述缺页检测模块包括在所述待恢复客户端中;
[0011]S4:可用页面维护模块基于上述操作维护一个可用数据位图,并记录空闲页面区间的信息,其中,所述可用页面维护模块包括在所述待恢复客户端中;
[0012]S5:数据传输模块将最终的信息数据进行传输交换,其中,所述数据传输模块包括在所述待恢复客户端中。
[0013]进一步地,所述缺页检测模块,还用于监听是否存在恢复的数据页。
[0014]具体地,所述预设恢复模式包括两种:按需恢复模式以及激进恢复模式;
[0015]其中,所述按需恢复模式为指待恢复系统在数据尚未就位情况下,通过虚拟容器运行,在虚拟容器运行中需用到的数据,按照需要发起数据恢复请求;所述激进恢复模式为指待恢复系统在运行过程中,尚未用到的数据块也进行提前的数据预取。
[0016]进一步地,所述步骤S2具体包括:
[0017]S21:将FUSE文件系统的文件映射为/DEV/L00P0 ;
[0018]S22:虚拟容器系统将这上述设备作为/DEV/SDA使用,FUSE截获所有对/DEV/L00P0的读和写和write操作。
[0019]进一步地,所述待恢复客户端通过所述按需恢复模式恢复数据为:读操作中,如果数据在恢复数据位图所指示的位置中,判定数据已恢复,从SDA直接读取数据块内容;如果数据在可用数据位图中,判定为没有用过的数据块,返回随机任意内容进行数据恢复;如果不为上述两种情况,将向服务器请求该数据块,等待数据响应,并将接收到的数据块内容写入到所述SDA对应位置,更新恢复数据位图,并返回数据块内容。
[0020]进一步地,通过所述激进恢复模式激进恢复的数据写流程在备份服务器端包括:写操作中,开启一个后台线程,扫描全部数据块,判定是非空闲的数据块且不在恢复数据位图中,向客户端推送此数据;对于空闲块的区间,向客户端发送空闲通知消息,其中,已推送过的数据块编号与已处理的空闲通知消息,也记在恢复数据位图里。
[0021]进一步地,通过所述激进恢复模式激进恢复的数据写流程在所述待恢复客户端包括:开启一个后台线程,接收服务器推送过来的数据块,检查是否在客户端的恢复数据位图中;如果在恢复数据位图中,判定数据已经被按需恢复了或者是发生了数据写修改,忽略;判定不在恢复数据位图中,将数据块写入到SDA对应位置,并更新位图;如果收到是空闲通知消息,将其记录到空闲数据位图中。
[0022]进一步地,还包括一个查漏进程,当激进恢复完成后,客户端检查数据恢复位图和空闲数据位图,如果发现尚未恢复的数据块,再向服务器请求恢复该数据,并修改相应位图。
[0023]本发明公开用于虚拟容器系统容灾的内核态与用户态数据交换方法,在一次虚拟容器的容灾备份中,需要在内核态和用户态之间交换数据,首先需要将内核态的文件系统操作传递给用户态程序处理,再将处理结果传回内核态,然后再传递给原始应用程序。此过程中,数据块恢复的速度慢主要是因为需要多次内核态和用户态的切换,内核和用户态通信的效率不够高。本发明借助FUSE将所有的恢复工作都移到用户态来完成,首先实现一个FUSE文件系统,将其中的一个文件映射到为/DEV/L00P设备,然后将这个LOOP设备当做要恢复的磁盘(比如SDA)的影子设备,虚拟机管理器利用这个LOOP设备启动虚拟容器。于是对原先硬盘的访问会在FUSE文件系统里被截获,FUSE文件系统再与服务器通信,从而实现高效的数据按需恢复。

【专利附图】

【附图说明】
[0024]通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
[0025]图1示出了本发明实施例中的用于虚拟容器系统容灾的内核态与用户态数据交换方法的步骤流程图;
[0026]图2示出了本发明实施例中的用于虚拟容器系统容灾的内核态与用户态数据交换方法中的系统运行的示意图。

【具体实施方式】
[0027]本发明涉及计算机操作系统和网络存储领域,尤其涉及用于虚拟容器系统容灾的内核态与用户态数据交换方法,其中,恢复技术对于容灾存储系统具有重要意义,能够保证海量数据的正确快速恢复,减少损失,本发明涉及的虚拟容器容灾为容灾技术的重要分支,在实际应用中具有重要意义。
[0028]以下结合具体的实施例对本发明进行详细说明,但同时说明本发明的保护范围并不局限于本实施例的具体范围,基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0029]下面将结合附图1对本发明的实施例进行详细描述。
[0030]用于虚拟容器系统容灾的内核态与用户态数据交换方法,包括以下具体步骤:
[0031]步骤S1:虚拟设备映射模块建立一个FUSE用户态文件系统;其中,虚拟设备映射模块包括在待恢复客户端中。
[0032]步骤S2:将FUSE用户态文件系统中的一个文件映射到DEV LOOP伪设备,并将DEVLOOP设备作为按照预设恢复模式要恢复的磁盘的影子设备。
[0033]具体地,步骤S2具体包括:步骤S21:将FUSE文件系统的文件映射为/DEV/L00P0 ;步骤S22:虚拟容器系统将这上述设备作为/DEV/SDA使用,FUSE截获所有对/DEV/L00P0的读和写和write操作。
[0034]步骤S3:缺页检测模块维护一个恢复数据位图,记录完成恢复和/或因新写入而不需要进行恢复的数据块编号,其中,缺页检测模块包括在待恢复客户端中。
[0035]步骤S4:可用页面维护模块基于上述操作维护一个可用数据位图,并记录空闲页面区间的信息,其中,可用页面维护模块包括在待恢复客户端中。
[0036]步骤S5:数据传输模块将最终的信息数据进行传输交换,其中,数据传输模块包括在待恢复客户端中。
[0037]进一步地,缺页检测模块,还用于监听是否存在恢复的数据页。
[0038]进一步地,预设恢复模式包括两种:按需恢复模式以及激进恢复模式;其中,按需恢复模式为指待恢复系统在数据尚未就位情况下,通过虚拟容器运行,在虚拟容器运行中需用到的数据,按照需要发起数据恢复请求;激进恢复模式为指待恢复系统在运行过程中,尚未用到的数据块也进行提前的数据预取,从而提高整个系统的恢复速度。
[0039]具体地,待恢复客户端通过所述按需恢复模式恢复数据为:读操作中,如果数据在恢复数据位图所指示的位置中,判定数据已恢复,从SDA直接读取数据块内容;如果数据在可用数据位图中,判定为没有用过的数据块,返回随机任意内容进行数据恢复;如果不为上述两种情况,将向服务器请求该数据块,等待数据响应,并将接收到的数据块内容写入到所述SDA对应位置,更新恢复数据位图,并返回数据块内容。
[0040]进一步地,通过激进恢复模式激进恢复的数据写流程在备份服务器端包括:写操作中,开启一个后台线程,扫描全部数据块,判定是非空闲的数据块且不在恢复数据位图中,向客户端推送此数据;对于空闲块的区间,向客户端发送空闲通知消息,其中,已推送过的数据块编号与已处理的空闲通知消息,也记在恢复数据位图里。
[0041]更进一步地,通过激进恢复模式激进恢复的数据写流程在所述待恢复客户端包括:开启一个后台线程,接收服务器推送过来的数据块,检查是否在客户端的恢复数据位图中;如果在恢复数据位图中,判定数据已经被按需恢复了或者是发生了数据写修改,忽略;判定不在恢复数据位图中,将数据块写入到SDA对应位置,并更新位图;如果收到是空闲通知消息,将其记录到空闲数据位图中。
[0042]更进一步地,还包括一个查漏进程,当激进恢复完成后,客户端检查数据恢复位图和空闲数据位图,如果发现尚未恢复的数据块,再向服务器请求恢复该数据,并修改相应位图。
[0043]本发明提出的用于虚拟容器系统容灾的内核态与用户态数据交换方法,其应用结构如图2所示,根据现在已有的实验和分析,在一个虚拟容器的恢复中,数据块恢复的速度慢主要是因为需要多次内核态和用户态的切换,并且内核和用户态通信的效率不够高。由于瓶颈在内核态和用户态的切换及通信上,即时进行并发恢复的效果可能也是有限的。
[0044]本发明为借助FUSE将所有的恢复工作都移到用户态来完成。具体地,首先实现一个FUSE文件系统,将其中的一个文件映射到为/DEV/L00P设备,然后将这个LOOP设备作为要恢复的磁盘,例如:SDA)的影子设备,虚拟容器加载这个LOOP设备启动虚拟容器,最终使得对原先硬盘的访问会在FUSE文件系统里被截获,FUSE文件系统再与备份端服务器通信,从而实现数据的按需恢复。
[0045]进一步地,在按需恢复数据的情况下,上述恢复的过程本质上和直接在内核态进行实现是一样的:都要经过多次内核态和用户态的切换,都要等待网络传输。因为FUSE本质上也是先将内核态的文件系统操作传递给用户态程序处理,再将处理结果传回内核态,然后再传递给原始应用程序。但是有一个好处是在进行非按需恢复的时候,也就是不完全按照用户现在要求数据进行后台激进恢复的时候,不再需要做内核态和用户态的切换,可以完全在用户态实现。只需要启动一个后台线程,不断接收服务器传来的数据块,写回到SDA设备即可,由于最终恢复系统的性能很大程度上取决于激进恢复方式,这样会大大提高恢复性能。
[0046]为了更好的理解与应用本发明提出的用于虚拟容器系统容灾的内核态与用户态数据交换方法,结合图2进行以下具体说明示例,本发明不局限以下示例。
[0047]具体地,为使本发明的目的、技术方案及优点更为清楚明白,以下通过具体实施对本发明进一步详细说明。此实施方案以基于OPENVZ操作系统虚拟化技术和FEDORA CORE 8LINUX操作系统的实现为例。
[0048]首先,整个系统的架构是这样,每个受保护的客户端上装有虚拟容器管理器openvz,它可以将物理磁盘加载为本地设备使用,虚拟容器管理器上安装一个FUSE文件系统,里面建立一个指定的虚拟文件a,虚拟容器将虚拟文件a映射到为/dev/loop设备,然后将这个loop设备当做要恢复的磁盘(比如sda)的shadow设备,openvz利用这个loop设备启动虚拟容器。于是对原先硬盘的访问会在FUSE文件系统里被截获,FUSE文件系统再与远程的备份服务端进行数据交换,完成数据的恢复过程。
[0049]在进行数据恢复的时候,虚拟容器a采用两种恢复模式,一种是on demand模式,一种是aggressive模式。前者适用于本地虚拟容器运行时候,对loop设备加载过程中,发现所需要的数据还没有恢复回来的情况;后者适用于本地系统大批量拷贝远程备份中心中的数据,快速恢复本地数据的情况。两种模式下FUSE处理步骤流程如下:
[0050]步骤S1:on-demand恢复。具体地,将FUSE文件系统的文件映射为/dev/loopO,然后openvz将这一设备当做/dev/sda使用,FUSE截获所有对/dev/loopO的read和write操作。
[0051]进一步地,维护一个bitmap,记录已经恢复或者因发生新写入而不需要恢复的数据块编号;再维护一个bitmap_e,记录空闲区间信息,其中,read():如果在bitmap里,说明已恢复,从sda读取数据块内容;如果在bitmap_e里,说明是free块,返回任意内容都行,即unal located block ;否则,向服务器请求该数据块,等待reply ;将接收到的数据块内容写入到sda对应位置,更新bitmap ;返回数据块内容。
[0052]进一步地,write O:将数据块内容写入到sda对应位置,更新bitmap ;如有必要,通知服务器该数据块不需要做恢复。
[0053]步骤S2:服务器push形式的aggressive恢复。具体地,服务器端:处理on-demand请求时,记录已经恢复的数据块的bitmap ;如果客户端write()时发了通知,也记录到bitmap ;开启一个后台线程,扫描全部数据块,如果是非free的块,并且不在bitmap里,就向客户端push ;对于free块的区间,向客户端发送not ify_empty ;已经push的数据块编号,和已经处理的notify_empty,也记在bitmap里。
[0054]进一步地,客户端:开启一个后台线程,接收服务器push过来的数据块,检查是否在客户端的bitmap里;如果在bitmap里,说明已经被on-demand恢复了或者是发生了 write O修改,忽略即可;如果不在bitmap里,将数据块写入到sda对应位置,并更新bitmap ;如果收到是 notify_empty,记录到 bitmap_e 里。
[0055]步骤S3:查漏补缺。具体地,当aggressive恢复完成之后,客户端检查bitmap和bitmap_e,如果发现尚未恢复的数据块,再向服务器请求。
[0056]本发明公开用于虚拟容器系统容灾的内核态与用户态数据交换方法,在一次虚拟容器的容灾备份中,需要在内核态和用户态之间交换数据,首先需要将内核态的文件系统操作传递给用户态程序处理,再将处理结果传回内核态,然后再传递给原始应用程序。此过程中,数据块恢复的速度慢主要是因为需要多次内核态和用户态的切换,内核和用户态通信的效率不够高。本发明借助FUSE将所有的恢复工作都移到用户态来完成,首先实现一个FUSE文件系统,将其中的一个文件映射到为/DEV/L00P设备,然后将这个LOOP设备当做要恢复的磁盘(比如SDA)的影子设备,虚拟机管理器利用这个LOOP设备启动虚拟容器。于是对原先硬盘的访问会在FUSE文件系统里被截获,FUSE文件系统再与服务器通信,从而实现高效的数据按需恢复。
[0057]上述实施例只为说明本发明的技术构思及特点,其目的是让熟悉该【技术领域】的技术人员能够了解本发明的内容并据以实施,并不能以此来限制本发明的保护范围。凡根据本发明精神实质所作出的等同变换或修饰,都应涵盖在本发明的保护范围之内。
[0058]虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
【权利要求】
1.用于虚拟容器系统容灾的内核态与用户态数据交换方法,其特征在于,包括以下具体步骤: 51:虚拟设备映射模块建立一个FUSE用户态文件系统;其中,所述虚拟设备映射模块包括在待恢复客户端中; 52:将所述FUSE用户态文件系统中的一个文件映射到DEV LOOP伪设备,并将所述DEVLOOP设备作为按照预设恢复模式要恢复的磁盘的影子设备; 53:缺页检测模块维护一个恢复数据位图,记录完成恢复和/或因新写入而不需要进行恢复的数据块编号,其中,所述缺页检测模块包括在所述待恢复客户端中; S4:可用页面维护模块基于上述操作维护一个可用数据位图,并记录空闲页面区间的信息,其中,所述可用页面维护模块包括在所述待恢复客户端中; S5:数据传输模块将最终的信息数据进行传输交换,其中,所述数据传输模块包括在所述待恢复客户端中。
2.如权利要求1所述的方法,其特征在于,所述缺页检测模块,还用于监听是否存在恢复的数据页。
3.如权利要求1所述的方法,其特征在于,所述预设恢复模式包括两种:按需恢复模式以及激进恢复模式; 其中,所述按需恢复模式为指待恢复系统在数据尚未就位情况下,通过虚拟容器运行,在虚拟容器运行中需用到的数据,按照需要发起数据恢复请求;所述激进恢复模式为指待恢复系统在运行过程中,尚未用到的数据块也进行提前的数据预取。
4.如权利要求1所述的方法,其特征在于,所述步骤S2具体包括: 521:将FUSE文件系统的文件映射为/DEV/L00P0 ; 522:虚拟容器系统将这上述设备作为/DEV/SDA使用,FUSE截获所有对/DEV/L00P0的读和写和write操作。
5.如权利要求3所述的方法,其特征在于,所述待恢复客户端通过所述按需恢复模式恢复数据为:读操作中,如果数据在恢复数据位图所指示的位置中,判定数据已恢复,从SDA直接读取数据块内容;如果数据在可用数据位图中,判定为没有用过的数据块,返回随机任意内容进行数据恢复;如果不为上述两种情况,将向服务器请求该数据块,等待数据响应,并将接收到的数据块内容写入到所述SDA对应位置,更新恢复数据位图,并返回数据块内容。
6.如权利要求3所述的方法,其特征在于,通过所述激进恢复模式激进恢复的数据写流程在备份服务器端包括:写操作中,开启一个后台线程,扫描全部数据块,判定是非空闲的数据块且不在恢复数据位图中,向客户端推送此数据;对于空闲块的区间,向客户端发送空闲通知消息,其中,已推送过的数据块编号与已处理的空闲通知消息,也记在恢复数据位图里。
7.如权利要求3所述的方法,其特征在于,通过所述激进恢复模式激进恢复的数据写流程在所述待恢复客户端包括:开启一个后台线程,接收服务器推送过来的数据块,检查是否在客户端的恢复数据位图中;如果在恢复数据位图中,判定数据已经被按需恢复了或者是发生了数据写修改,忽略;判定不在恢复数据位图中,将数据块写入到SDA对应位置,并更新位图;如果收到是空闲通知消息,将其记录到空闲数据位图中。
8.如权利要求7所述的方法,其特征在于,还包括一个查漏进程,当激进恢复完成后,客户端检查数据恢复位图和空闲数据位图,如果发现尚未恢复的数据块,再向服务器请求恢复该数据,并修改相应位图。
【文档编号】G06F11/14GK104503863SQ201410643995
【公开日】2015年4月8日 申请日期:2014年11月7日 优先权日:2014年11月7日
【发明者】余宏亮 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1