一种基于虚拟机的按需增量恢复容灾系统及方法

文档序号:6471100阅读:161来源:国知局
专利名称:一种基于虚拟机的按需增量恢复容灾系统及方法
技术领域
本发明涉及操作系统和网络存储领域,具体涉及一种基于虛拟机 的按需增量恢复容灾系统及方法。
背景技术
容灾技术能够在各种自然灾害和人为破坏的情况下,保证数据的
安全和关键业务的不中断运行,构建高可靠的系统;当前的容灾系统, 按照数据复制运行的位置来分,包括如下几类基于存储设备 (Storage-Based)的容灾系统,该类系统实现于专用的物理存储设备之 上,如运行于EMC Clariion阵列上的MirrorView和Symmetrix存储阵列 上的SRDF、 IBM公司的PPRC、日立公司的TrueCopy;基于主机操作 系统软件(Host-Based)的容灾系统,例如Symantec公司的Veritas Volume Replicator (VVR),通过对存储卷组RVG的复制来达到容灾的 目的,类似的产品还有微软的卷影复制等;基于存储交换机 (SAN-Based)的容灾系统,代表有Cisco的SANTap,以及FalconStor的 IPStor等,都是在存储交换设备一级实现数据的备份;基于数据库/软 件应用的容灾系统,代表有Oracle的DataGuard, DB2的远程Q复制等, 这些系统都采用了对数据逻辑操作的复制技术,通过扫描和记录数据 库曰志实现,节省成本,但对数据库和应用有强依赖性;综上所述, 目前已有的系统还存在如下全部或部分缺点无法保留应用的运行状 态,只能做到数据级的复制;依赖专用设备,成本高且适用范围小; 依赖专门的应用;数据拷贝、恢复速度慢,服务停止时间过长。

发明内容
本发明的目的是提供一种基于虛拟机的按需增量恢复容灾系统 及方法,不依赖物理设备,能够保护任意应用的快速容灾恢复系统。为实现上述目的,本发明釆用如下技术方案
一种基于虛拟机的按需增量恢复容灾系统,该系统包括相互连接 的容灾中心端和客户端,所述容灾中心端由多台服务器构成存储共享
集群,所述容灾中心端包括
容灾服务守护单元,负责监听端口,接受来自客户端的备份或恢 复请求,相应地进行数据的备份或恢复;
备份数据管理单元,用于对客户端的备份请求生成相应的内存映
像卷和数据映像卷并存储;
集群卷管理单元,虛拟出共享存储池供所有节点使用,以逻辑卷
的方式在存储池中存放和管理内存映像巻和数据映像卷;
索引文件管理单元,用于对存储池中的内存映像卷和数据映像卷
进行检索和定位;
所述客户端包括
虛拟机环境构建单元,用于在客户端宿主系统上建立独立的进程 组与会话,封装用户需要保护的应用及相关资源,进而构建出客户端 进程所处的虛拟机环境;
内核拦截单元,用于监测虛拟机环境的每次读写请求,查询和维 护记录了数据恢复情况的恢复数据位虛拟机冻结单元,用于在内核拦截单元监测到虛拟机环境中的进 程有读写请求及查询恢复数据位图,若要读写的数据未恢复则在内核
态发起虛拟机环境冻结操作;
虛拟机解冻单元,用于在要读写的数据写入客户端本地存储介质 后,发起解冻虛拟机的操作,使虛拟机环境中的各个进程恢复运作;
请求转发守护单元,用于与容灾服中心端通信,发出备份或恢复 请求并传送、接收数据,集中完成数据请求管理、调度实现容灾恢复。
其中,该系统中客户端请求转发守护单元包括备份子单元和恢复 子单元,其中所述备份子单元,用于接收用户发来的备份请求,并生成备份任 务,根据备份任务的需求与容灾中心端建立连接,并转发该备份任务 的后续请求到服务器端,同时根据各个备份任务的优先级集中对备份 请求进行调度和流量控制;
所述恢复子单元,用于接收用户以及内核拦截单元发来的恢复请 求,并生成恢复任务,根据恢复任务的需求与容灾中心端建立连接, 记录容灾中心端传送回来的数据,写入本地存储介质,同时对来自内 核拦截单元的恢复请求,还负责回调函数的执行而完成数据恢复,并 根据各个恢复任务的优先级集中对恢复请求进行调度和流量控制。
其中,该系统中所述容灾中心端还包括集群卷守护单元,与所述 集群卷管理单元通信,用于维护存储共享集群的状态,保证共享集群 中的有效节点数,同步对存储池所存储内存映像卷和数据映像巻所作 的修改。
其中,该系统中所述容灾中心端还包括集群卷驱动单元和物理设 备驱动单元,所述集群卷驱动单元用于维护内存映像卷和数据映像卷 的逻辑数据块与物理数据块映射信息,各逻辑卷读写命令的调度和派 发,其下层是物理设备驱动单元,所述物理设备驱动单元通过存储区 域网络连接所述共享存储池。
本发明还提供了一种利用上述系统的基于虛拟机的按需增量恢 复容灾方法,该方法包括以下步骤
51.0, 在客户端上构建虛拟机环境,将要保护的应用包容在虛拟
机环境中;
51.1, 根据客户端的备份请求在容灾中心端生成虛拟机环境在指
定时间点的内存映像巻和数据映像巻,完成数据备份;
sl.2,客户端启动恢复流程,根据用户发起的恢复请求生成恢复
任务,并向容灾中心端发送恢复请求,同时通知内核拦截单元初始化
恢复数据位图;Sl.3,容灾中心端根据恢复请求检索和定位虛拟机环境在指定时 间点的内存映像卷,并将其发送到客户端;
sl.4,客户端根据接收内存映像卷获取虛拟机环境在指定时间点
的内存映像,进行内存映像重构而恢复虛拟机环境在指定时间点的正
常运行状态,并行执行步骤sl.5和sl.5';
sl.5,在客户端开启内核通用块设备的读写请求拦截功能,当虛 拟机环境中的进程访问文件系统时首先查询恢复数据位图,若要读写 的数据已恢复,则直接访问,否则执行步骤sl.6;
s1.6,客户端发起虛拟机环境的冻结操作,由内核拦截单元发出 读写数据的恢复请求;
s1.7,将步骤s1.6中的恢复请求挂载到步骤s1.2所建立恢复任务 的队列中,并赋予最高优先级,等待容灾中心端的响应;
s1.8,客户端收到来自容灾中心端的所述读写数据,更新恢复数 据位图,标志该读写数据为已恢复,并将其写入本地存储介质;
sl.9,解冻虛拟机,使虛拟机环境中的各个进程恢复运作;
sl.5',客户端根据由步骤sl.2所建立的恢复任务,在后台不断发 送数据块恢复请求到容灾中心端进行数据块恢复,在恢复过程中通过 查询恢复数据位图避免数据重复恢复。
其中,该方法中步骤s1.4中进行内存映像重构恢复虛拟机环境在 指定时间点的正常运行状态包括步骤
sl.4a,根据内存映像中的进程树派生一个内核进程,修改内核进 程内核栈,令内核进程在系统调用退出时切换为缺省的自恢复进程;
sl.4b,所述内核进程根据内存映像中的进程树派生出其子进程, 所述子进程为自恢复进程,再次修改内核栈,构造第二次系统调用退 出,进而切换为指定时间点时的用户态根进程;
sl.4c,根据内存映像中的进程树结构按从根到叶的顺序依次派生 出新的子进程,直到内存映像中的所有进程都被派生出来为止,设置各个所派生出的进程为深度睡眠状态;
sl.4d,在客户端另启动一个独立进程,该进程位于虛拟机环境外, 该独立进程根据用户的指令将虛拟机环境中所有进程的状态按照内 存映像中的记录进行重置,从而恢复虛拟机环境在指定时间点的正常 运行状态。
其中,该方法中步骤sl.O构建虛拟机环境包括步骤
sl.0a,扩充客户端操作系统内核中进程的结构,使之增加代表进 程所处的虛拟机进程上下文环境的域;
sl.Ob,开启一个用户态进程,完成输入输出设备的切换,进而通 过系统调用切入内核态;
sl.0c,将上述用户态进程切换到用户空间,在虛拟机上下文环境 中执行/sbin/init,使用户态进程成为该虛拟机环境的根进程,然后派 生出相关子进程,创建相关系统服务;
sl.Od,建立本地操作系统中的进程上下文与虛拟机进程上下文的 切换机制,构建出虛拟机环境。
其中,在步骤sl.6中,发出读写数据的恢复请求后,选择预取数 据进行预取,预取方法为提交与读写数据物理位置邻近的各个数据块 的恢复请求,邻近位置由设定的地址偏移阈值决定。
其中,所述地址偏移阈值为动态调优参数,调优的方法为预取 数据为虛拟机环境中的进程要访问文件所需数据时,增加所述地址偏 移阈值的绝对值,反之则减小。
其中,所述预取数据恢复请求的优先级低于步骤s1.6中读写数据 的恢复请求优先级,高于步骤sl.5,中后台所发的数据块恢复请求优 先级。
其中,在步骤sl.5'中,后台按照预定的恢复策略不断发送数据 块恢复请求到容灾中心端进行数据块恢复,所述恢复策略为按敏感 度高低顺发送数据块恢复请求,先发送敏感度高的数据块,所述敏感度设置在数据块中,通过统计每个数据块在一个固定大小时间窗口w 内的读写次数获得。
其中,在步骤S1.8中,对位图进行更新后还包括以游程码的压缩 方式进行位图压缩步骤。
其中,步骤S1.8中,对位图进行更新时釆用读写锁机制,在写搡 作更新数据的同时,并不删除老数据,直到对老数据正在进行的读访 问全部结東为止,该过程中新发生的读操作定位到新的数据。
其中,在步骤S1.2中,客户端对于每个恢复请求,将其通过指针
链接成为一个双向链表,并在内存中建立恢复请求hash表,根据所
赋予的请求号将各个恢复请求放置到各个哈希桶中。
其中,在步骤sl.8及步骤sl.5'中,当客户端接收到来自容灾中心 端所恢复的数据后,先写入位图,并告知后续程序数据已经传送到, 若数据没能成功写入,接收到的数据会一直保留并被重写,直到数据 顺利写入。
利用本发明提供的基于虛拟机的按需增量恢复容灾系统及方法, 具有以下有益效果
1) 恢复与程序运行的并行,能够针对应用优先获取关键数据集, 并在后台按照 一定策略执行完全数据恢复,减少了应用与服务终止的 时间;
2) 能够保留应用的全部内存映像,同时保证一致性,能够将应 用和服务恢复到备份时的运行状态;
3) 通过构建一个独立的虛拟机进程上下文环境,减少环境内进 程与外部进程间的依赖,能够保证恢复的正确性和独立性;
4) 作为代理的请求转发守护进程,能够集中管理客户端的备份
与恢复任务,控制网络流量,对数据块请求安装优先级进行调度;
5) 服务器端能够支持全量和增量备份等不同模式,通过建立索 引加强对备份数据的管理,其实现对恢复应用透明,仅提供符合Posix语义的统一读写接口。


图i为本发明基于虛拟机的按需增量恢复容灾系统结构示意图2为本实施例中容灾中心端的结构图3为本实施例中客户端的结构图4为本实施例基于虛拟机的按需增量恢复容灾方法示意图; 图5为本实施例基于虛拟机的按需增量恢复容灾方法流程图。 图中1、客户端;2、服务器集群;3、 SAN共享存储目标器;4、 广域网;5、光纤/以太网交换机;6、物理存储设备。
具体实施例方式
下面结合

基于虛拟机的按需增量恢复容灾系统及方法。 本发明提供的基于虛拟机的按需增量恢复容灾系统及方法,首 先,不依赖于具体的设备和应用;其次,集成了客户端虛拟机进程上 下文环境,能够构建应用相关的进程树,并支持对其进行冻结和截取 一致的内存映像;在此基础上实现的按需增量恢复分为两阶段,即先 恢复内存映像,再恢复文件系统或卷数据,能够恢复应用程序到备份 时的运行状态,同时支持恢复和应用的同时运行,缩短服务停止时间; 最后,支持对客户端的多个备份任务和恢复任务的调度,支持对恢复 数据的预取。本发明具有恢复时间短,能提高被保护应用的可靠性, 纯软件实现,对用户透明且成本低廉等优点,具有实用价值
本实施例中基于虛拟机的按需增量恢复容灾系统,其主要构成如 图i,其构成包括申请容灾服务的客户端i和提供容灾服务的容灾中心
端,容灾中心端由共享SAN (Storage Area Network)共享存储目标器 3的服务器集群2构成,其中客户端1通过广域网4与服务器集群2连接, 服务器集群2通过光纤/以太网交换机5与SAN共享存储目标器3连接, SAN共享存储目标器3连接物理存储设备6,每个服务器节点都能够访 问整个存储空间,提供相同的服务, 一个服务器节点故障可由其他节点或新加入节点替代,具有好的可用性。上述SAN网络共享存储目标 器3是构成共享存储池的基本单元,通过其上运行的目标器软件,将
物理存储设备6共享到网络上,物理存储设备6头部保存着虛拟存储池
元数据,每个存储设备都被指定全局唯一标识,数据在物理存储设备
6上的分布是由下述集群卷管理单元负责的。上述光纤/以太网交换机 5为网络连接设备,用来转发来自服务器集群2通过FC( Fiber Channel) 或TCP/IP协议包裹的小型计算机系统接口SCSI数据访问命令,上述服 务器集群2和SAN网络共享存储目标器3通过光纤总线适配器或以太 网网卡与光纤/以太网交换机5相连。
提供容灾服务的容灾中心端2的各节点提供容灾服务,如图2所 示,本实施例中容灾中心端包括
容灾服务守护进程Ol,负责监听端口,接受来自客户端的容灾请 求,对不同的请求作不同处理;在备份和恢复过程中,解析备份请求 或恢复请求,转换为备份数据管理单元02识别的写入或读出命令,生 成、维护和查询索引文件中内存映像和文件系统数据映像间关系;
备份数据管理单元02,对于用户的每一次备份请求,备份数据管 理单元会向下层机制发起生成相应的内存映像卷和数据映像卷的请 求,并负责在用户空间管理这些不同的逻辑卷,为不同客户端不同时 间点备份的查询在内存中建立高速索引,例如为代表各个巻的数据结 构建立hash索引,还要记录系统相关数据,如虛拟卷的组成信息、属 性和ID等,提供对各卷的定位查找、新建、删除、扩容等操作的接口;
索引文件管理单元03,备份过程中,其负责生成与维护内存映像 卷和数据映像卷的索引XML文件,并将其存放在容灾中心端的文件 系统中,恢复时通过服务器启动过程中读取和分析索引XML文件, 在内存中建立历史备份数据库,该数据库用来存放请求时间和卷ID 的映射关系,生成高速索引,便于快速响应应用的数据请求,因此该 单元只是建立请求时间o卷ID映射的关系。备份数据管理单元02与索引文件管理单元03的关系为在恢复过 程中,索引文件管理单元03先执行,备份数据管理单元02后执行,索 引文件管理单元03由时间来定位逻辑卷的ID,完成用户层面到系统层 面的映射,备份数据管理单元02再由ID来査询其代表的巻的数据结 构,做的是纯系统层面的事,找出卷的属性信息。
集群卷管理单元04,虛拟出共享存储池供所有节点使用,负责备 份数据管理单元02生成相应的内存映像卷和数据映像卷的存放和管 理,具体为完成对海量网络共享存储池元数据的加载,通过分析元数 据,建立完全备份虛拟卷、增量备份虛拟卷之间的依赖关系,完成对 各内存映像备份虛拟卷、完全备份虛拟巻、增量备份虛拟卷快速索引 结构的舒适化;同时,向上层提供符合Posix语义的统一读写接口, 向内核驱动传送卷的属性更改信息,同时,该模块还负责同集群卷守 护进程07通信,告知卷的更改;
集群卷驱动单元05,负责维护备份数据管理单元02生成相应的内 存映像卷和数据映像卷的逻辑数据块与物理数据块映射信息,各逻辑 卷读写命令的调度和派发,其下层是物理设备驱动单元06;
物理设备驱动单元06,通过存储区域网络SAN与存储池连接。
集群卷守护进程07,与集群管管理单元04通信,负责维护服务器 集群的状态,保证集群中的有效节点数,同步对存储池中共享巻所作 的修改。
本实施例中容灾服务守护进程01与备份数据管理02配合对备份
请求和恢复请求所作的处理分别为
对于备份请求,首先按照其请求类型,即全备份、增量备份、内 存映像备份做不同处理对于全备份,需要生成完全备份虛拟卷,即 以逻辑卷的形式存放某一时间点时客户端系统的完全数据映像,以及 对该虛拟卷的按序写入;对于增量备份,需要生成增量备份虛拟卷, 仅仅记录自最近一次备份以来的少量数据变化,同时写入增量数据并建立数据的位置映射关系,即其在增量巻中的位置与其在被备份巻中 的位置间的对应;对于内存映像备份,需要生成内存映像备份虛拟巻, 以逻辑卷的形式存放某 一 时间点时系统的内存映像。
对于恢复请求,要根据恢复请求中请求恢复数据的类型、时间点、
位置等信息定位存储池中的具体虛拟巻,然后通过集群卷管理单元04
提供符合Posix语义的统一读写接口对该卷进行访问,读取或写入指
定数据块。
客户端l是任意的待保护计算机,为了实现容灾,客户机必须主 动向容灾中心端2提出容灾申请,并告知相关参数,例如容量大小、 备份类型等;客户端l的原有系统无需做任何修改,在客户端l上创建 一个宿主系统和相应的软件环境,并将待保护的客户系统包容在 一个
虛拟环境中,客户端中各单元的结构如图3所示,客户端l主要包括 虛拟机环境构建单元21,通过在客户端宿主系统上建立独立的进 程组与会话,封装用户需要保护的应用及相关资源,构建出虛拟机环 境,提供虛拟的终端和界面,保证用户正常使用,同时,虛拟机环境 支持对其内部进程的内存映像进行冻结和迁移,这是实现应用无关容 灾的基础;
内核拦截单元22,用于监测虛拟机环境的每次读写请求,查询和 维护记录了数据恢复情况的恢复数据位图,该内核拦截单元22被加载 在内核的通用块设备驱动层,恢复数据位图存放在内核空间;
虛拟机冻结单元23,用于在内核拦截单元22监测到虛拟机环境中 的进程有读写请求时,查询恢复数据位图,若要读写的数据未恢复,
则在内核态发起虛拟机环境冻结操作;
虛拟机解冻单元24,用于在内核拦截单元22监测到虛拟机环境中 的进程有读写请求要读写的数据写入本地存储介质后,发起解冻虛拟
机的操作,使虛拟机环境中的各个进程恢复运作;
请求转发守护进程25,用于与容灾服中心端2通信,在虛拟机环境下发出客户端备份或恢复请求并传送、接收数据,集中完成数据请 求管理、调度实现容灾恢复,本实施例中请求转发守护进程通过开启 一个本地侦听端口,接受本地的备份或恢复请求,当请求到来,首先 建立连接;然后根据请求类型将其挂入备份任务或恢复任务的队列; 同时,监听端口还负责监听来自内核拦截单元22传过来的数据块恢复 请求。
本实施例中请求转发守护进程25包括备份子进程251和恢复子进 程252,其中
备份子进程251,用于接收用户发来的备份请求,并生成备份任 务,通过遍历备份任务队列,根据每个备份任务的需求与容灾中心端 2建立一个连接,并转发该任务的后续请求到服务器端,同时根据各 个任务的优先级集中对数据备份请求进行调度和流量控制;
恢复子进程252,用于接收用户发来的恢复请求,并生成备份任 务,通过遍历恢复任务队列,根据每个恢复任务的需求与容灾中心端 2建立连接,接受本地连接发起方以及内核拦截单元发来的数据块恢 复请求,将其维护在数据块恢复请求队列中,记录服务器端传送回来 的数据,写入本地存储介质,同时对来自内核拦截单元的数据请求, 恢复子进程还负责其回调函数的执行,完成数据恢复,并根据各个任 务的优先级集中对数据块恢复请求进行调度和流量控制
实现中,请求转发守护进程25釆用了大循环的程序架构,如图4 所示,当无事件发生时,整个进程处于阻塞侦听状态,所有的接口形 成一个资源池,包括等待连接的端口、备份任务的数据输入端口、恢 复任务的恢复数据接收端口等等, 一旦有数据写入或请求等事件发 生,则进程依序扫描各个端口,处理发生的事件;备份应用和恢复应 用由用户发起,可以有多个,每个应用对应一次备份或一次数据恢复, 对同一个虛拟机,同一时刻只能存在一个任务;备份任务顺序提交要 备份的数据块给请求转发守护进程;恢复任务按照一定的恢复策略提交数据块恢复请求,同时需要查询恢复数据位图,避免重复提交。
本实施例中基于虛拟机的按需增量恢复容灾方法流程图,该方法 主要包括步骤
slOO,客户端1和容灾中心端2初始化,该初始化过程具体为加载 客户端1和容灾中心端2中的上述各单元模块,在客户端l上构建虛拟
机环境;
s101,客户端1通过备份子进程251接收用户发起的备份请求, 生成备份任务,与容灾中心端2建立一个连接,并转发该备份任务的 后续请求到容灾中心端2,该步骤中备份子进程251生成备份任务的 方法为启动多个备份应用,这里的备份应用由用户发起,可以有多 个,每个备份应用对应一次备份请求,由设置参数指明备份的类型、 待备份的文件系统或卷对象、备份数据块的大小等,向请求转发守护 进程25的监听端口发出备份请求即可由备份子进程251创建一个备 份任务;
s102,容灾中心端2由容灾服务守护进程Ol通过监听端口接受
客户端1的转发过来的备份请求,并将备份请求解析后通知备份数据 管理02;
s103,备份数据管理单元02根据备份请求生成客户端1虛拟机 环境下相应的内存映像卷和数据映像巻,由集群巻管理单元04以逻 辑卷形式存储到共享存储池,完成备份过程;
s104,客户端l启动恢复流程,主要包括 (l)设置恢复参数,向请求转发守护进程25的监听端口发出恢 复请求;(2)通知内核拦截单元22初始化恢复数据位图,并将位图 通过内存映射开放出来,供请求转发守护进程25的恢复子进程252 读取和更改,客户端的恢复子进程252接收用户发起的恢复请求,生 成恢复任务,与容灾中心端2建立一个连接,并转发该恢复任务的后 续请求到容灾中心端2,该步骤中恢复子进程251生成恢复任务的方法为根据用户的需求,启动恢复应用,这里的恢复应用由用户发起, 可以有多个,每个恢复应用对应一次恢复请求,设置参数指明要恢复 的时间点、待恢复的内存映像和文件系统映像、数据块的大小等,向 请求转发守护进程的监听端口发出恢复请求即可由恢复子进程创建 一个恢复任务;
s105,容灾中心端2由容灾服务守护进程Ol通过监听端口接受 发送过来恢复请求;
s106,索引文件管理单元03根据恢复请求检索和定位客户端虛 拟机环境在指定时间点的内存映像卷,并由容灾服务守护进程01发 送到客户端1;
s107,客户端1的恢复子进程252接收内存映像卷,获取虛拟机 环境在指定时间点的内存映像,其中包含进程树结构、各进程虛存空 间的映像、文件系统挂载点等等;
s108,客户端l根据获取的内存映象进行内存映像重构,恢复客 户端指定时间点虛拟机环境的正常运行状态,并行执行步骤s109和 sl09,;
s109,在客户端开启内核通用块设备的读写请求拦截功能,即启 动内核拦截单元22的功能,当虛拟机环境中的进程访问文件系统或 数据库时首先查询恢复数据位图,这里的文件系统只是客户端的应 用,也可以是数据库,如果当前请求数据已经通过恢复子进程从容灾 中心端读取过来,则直接访问;否则执行步骤sllO;
s110,客户端直接在内核态发起虛拟机环境的冻结操作,使隶属 于虛拟机的各个进程陷入冻结,不再接受调度,然后向请求转发守护 进程的监听端口发出对该请求数据的恢复请求;
slll,请求转发守护进程在收到来自内核拦截单元的数据块恢复 请求后,将该请求挂载到步骤s104所建立恢复任务的数据块恢复请 求队列中,并赋予其最高优先级和用来解冻虛拟机的回调函数,同时,根据相应的预取策略,恢复子进程也会找出与缺失数据较相关的数据 块,生成相应请求并赋予高于其它恢复请求的较高优先级,然后按照 优先级发送这些请求,并等待服务器端的响应;
Sl12,当恢复子进程接收到来自服务器端的待恢复数据块后,首 先更新恢复数据位图,标志该数据为"已恢复",并将该数据写入本
地存储介质;
sl13,发起解冻虛拟机的搡作,使虛拟机环境中的各个进程恢复 运作;
在步骤sll3之后,通过查询位图判断是否所有数据已恢复完毕, 若是,则关闭内核拦截模块,释放位图,恢复正常读写,若没有,则 重新回返到步骤s109进行恢复工作。
s109,,由步骤sl04所建立的恢复任务会按照即定的策略,缺省为 顺序,在后台不断向恢复子进程发送数据块恢复请求,同时需要兼顾 的原则是:(l)如果通过査询恢复数据位图,该数据块已经被标志为"已 恢复",则直接跳过此块,尝试发送策略指定的下一待恢复数据块; (2)后台恢复请求尽可能不干扰内核拦截模块发出的数据块恢复请求, 即通过设置优先级手段实现。本实施例中该步骤具体包括以下步骤
sl09a,选择后台恢复策略;
sl09b,根据恢复策略确定下一要恢复的数据块x;
sl09c,通过查询位图判断该数据块x是否已恢复,若是,执行步 骤sl09f,若否,执行步骤sl09d;
sl09d,向恢复子进程发送请求获取数据块x的恢复请求,恢复子 进程将该请求挂入恢复队列,并与容灾终端建立连接,发送恢复请求 到容灾中心端,容灾中心端通过恢复请求查找并发送备份的数据块x 到客户端;
sl09e,客户端的恢复子进程收到数据块x,然后更新位图,并将 数据块x写入本地存储介质;Sl09f,通过查询位图判断是否所有数据已恢复完毕,若是,结
束,若否,返回执行步骤sl09b。
该方法中由步骤S109开始的恢复流程和后台恢复流程即步骤
s109,,都是在进行内存映象重构后进行数据块恢复的恢复任务,只 是优选级不同,由步骤sl09执行的恢复流程是在恢复过程中对要访问
的数据的恢复,为了满足用户的及时访问,因此优选恢复,而在没有 来自内核拦截模块的数据块恢复请求时,是按恢复策略进行后台数据 块恢复的。
本实施例中步骤sl08中进行内存映像重构,恢复客户端指定时间 点虛拟机环境的正常运行状态具体包括步骤
sl08a,派生一个内核进程root—task,该root—task表示内核进程为 始祖,修改内核进程root—task内核栈,令内核进程root一task在系统调 用退出时切换为一个缺省的自恢复进程,该进程派生出其子进程,然 后再次修改内核栈,从内存映像中拷贝客户端操作系统根进程的用户 态堆栈、虛存映像等,构造第二次系统调用退出,进而切换为指定时 间点时的用户态根进程;
sl08b,由上述自恢复进程派生出的子进程依然为自恢复进程, 这些进程根据内存映像中的进程树结构按从根到叶的顺序依次派生 出新的子进程,直到内存映像中的所有进程都被派生出来为止,设置
各个进程为深度睡眠状态;
sl08c,在客户端另启动一个独立进程,该进程位于虛拟机环境 外,该独立进程根据用户的指令将虛拟机环境中所有进程的状态按照 内存映像中的记录进行重置,从而恢复虛拟机环境的正常运行状态。 本实施例中在客户端l上构建虛拟机环境的方法具体包括步骤 sl00a,扩充客户端l操作系统内核中进程的结构,使之增加名称 为vm_context—info的域,域vm—context—info代表进程所处的虛拟机进 程上下文环境,其中包括虛拟机的ID,该环境中的进程列表,根文件系统对应得设备和挂载点,以及数据统计信息;
sl00b,虛拟机环境初始化,开启一个用户态进程root—thread,完 成终端输入输出设备的切换,进而通过系统调用切入内核态,主要完 成如下工作初始化虛拟机中进程组的调度机制;初始化虛拟机专用 伪文件系统,即将本地物理文件系统的一个子树进行二次挂载,并虛 拟出新的超级节点;初始化虛拟机相关系统调用等;
sl00c,将上述进程切换到用户空间,在虛拟机上下文环境中执 行客户端操作系统标准根进程的可执行代码/sbin/init,使上述用户态 进程root—thread成为该虛拟机环境的根进程,然后派生出相关子进程,
创建相关系统服务;
sl00d,建立本地操作系统中的进程上下文与虛拟机进程上下文 的切换机制,并在虛拟机环境下执行需要作容灾保护的应用程序,即 执行上述步骤sl01 s113。
本实施例中虛拟机进行冻结的方法包括以下步骤 sll3a,根据要保护的应用,切换到其所属的虛拟机进程上下文 环境,进而遍历该环境中的进程列表,置位冻结位,同时考虑几种特 殊情况,例如刚刚fork完成而没有执行exec的进程、被trace而处于停 止状态的进程,等待一定时间重新尝试冻结,对于停止的和僵尸,则
直接忽略;
sll3b,唤醒隶属于虛拟机的各个进程,给其发送一个伪信号,
让其陷入冻结处理,不再接受调度,等待各个进程都处于冻结状态; sl 13c,使用最新的现有同步机制Read Copy Update来设置内存屏
障,通过同步操作等待各底层IO驱动或网络驱动数据操作的结東。
当用户需要同时对多个系统和应用提供容灾保护时,在一台客户 端l节点上可能存在多个备份任务和恢复任务,本实施例中备份子进 程251和恢复子进程252对不同重要程度的任务赋予不同的优先级,并 按照优先级进行调度。调度的基本原则是优先级越高占用带宽越高,通过让传送的每一帧包含较多的高优先级数据块请求来达到按优先 级调度的目的,具体实现中,来自内核拦截单元的缺失数据块的请求 被赋予最高优先级,根据相关策略预取的与缺失数据块相关的数据块 请求被赋予较高优先级,而恢复任务发来的请求被赋予低优先级,其 获取和恢复流程在后台运行。
客户端1中内核拦截单元22在向请求转发守护进程25发出缺失数
据块的恢复请求后,还会进行预取,即提交与缺失数据块物理位置邻
近的各个块的恢复请求,邻近位置由设定的地址偏移阈值offset决定, 这是一个需要动态调优的参数,预取数据命中会增加其绝对值,反之 则减小。
恢复任务按照后台数据恢复策略执行恢复流程,其恢复策略用来 决定数据恢复的顺序,其原则是尽量先获取应用读写频繁且运行时 经常使用的数据块,通过先传送这些敏感数据,使得虛拟机环境中的 应用启动后,大部分数据都能预先准备好,使内核拦截单元22发现缺 失数据块的几率尽可能的小,减少冻结虛拟机环境、获取数据、解冻 等流程带来的开销。本实施例的实现方法是对每一数据块设置了敏 感度,数据传输的顺序由敏感度决定;敏感度通过应用正常运行时, 统计每个数据块在一个固定大小时间窗口w内的读写次数而获得,敏
感度的数值与具体应用以及具体时刻有关,其计算公式如下 Sw = C画^ * (1 _ a) +i * a
其中&代表当前的敏感度,S^代表前一个时间窗口的敏感度, Co朋C为当前窗口的读写计数,"称为历史因子,用来反映历史敏感
度与当前敏感度之间的关联;敏感度相关数据结构为敏感度数组和读 写计数位图,它们都被保存在应用所处的虛拟机环境的中,每隔时间 w需要重新计算敏感度,更新数组和清空位图,开始新一轮计数;当 备份时,敏感度数组作为内存映像的一部分也会被备份到上述容灾中 心端2。本实施例中该系统实现中还对如下问题作了相应处理(l)客户端
l错误处理当备份和恢复过程中连接应用、请求转发守护进程以及 服务中心的容灾服务守护进程的插接口 Socket出现校验错误和意外 中断时,釆用了错误重传和超时释放插接口的方法;(2)位图的压缩 对于大容量的数据映像,其位图消耗的内存资源也不少,为了减少内 存消耗,需要按照位图的特点做压缩,本实施例釆用了类似游程码的 压缩方式,这是因为大多数连续数据块都是连续更新的,位图中连续 的'1'和连续的'0,比较多;(3)位图的并发访问由于位图可能被
内核拦截模块和请求转发守护进程并发访问,为了保证一致性同时提 高并行度,使用了Linux2.6内核中的读写锁RCU (rwlock)机制,在 写操作更新数据的同时,暂不覆盖磁盘上原有的老数据,而是在内存 中新开辟一块空间存放更新数据,这样达到新老数据的暂时并存;此 时再发起的读写操作都定位到这个新开辟的空间,而之前还未完成的 读操作也能够继续其对磁盘上的老数据的访问,该过程一直持续到所 有对老数据的读访问全部结東;(4)对于恢复请求,需要建立快速查询 机制,当恢复数据到来时,需要定位恢复请求的相关数据结构,因此, 对于每个恢复请求,本实施例除了将其通过指针链接成为一个双向链 表,还在客户端内存中建立了请求hash表,根据请求号将各个请求放 置到各个哈希桶Bucket中;(5)保证恢复数据位图更新和磁盘数据更新 的原子性当恢复子进程接收到数据后,先写入位图,告知后续程序 数据已经传送到,以便应用不会因为发现位图相应位为'0,而冻结 虛拟机带来额外开销,同时位图的设置也起到了REDO日志的作用, 如果数据没能成功写入,接收到的数据会一直保留并被重写,直到数 据顺利写入完成任务提交。
本地的各种类型的客户端主机,首先,可以运行任意服务;其次, 客户端主机会构建虛拟机进程上下文环境,通过该环境将要保护的应 用打包,截取其一致的内存映像,同时并不影响应用的运行;最后,在客户端主机上集成虛拟机进程上下文环境,仅需购买第三方的安全 容灾存储卡,不需要对其原有操作系统作任何改变。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关 技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下, 还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明 的范畴,本发明的专利保护范围应由权利要求限定。
权利要求
1、一种基于虚拟机的按需增量恢复容灾系统,其特征在于,该系统包括相互连接的容灾中心端和客户端,所述容灾中心端由多台服务器构成存储共享集群,所述容灾中心端包括容灾服务守护单元,负责监听端口,接受来自客户端的备份或恢复请求,相应地进行数据的备份或恢复;备份数据管理单元,用于对客户端的备份请求生成相应的内存映像卷和数据映像卷并存储;集群卷管理单元,虚拟出共享存储池供所有节点使用,以逻辑卷的方式在存储池中存放和管理内存映像卷和数据映像卷;索引文件管理单元,用于对存储池中的内存映像卷和数据映像卷进行检索和定位;所述客户端包括虚拟机环境构建单元,用于在客户端宿主系统上建立独立的进程组与会话,封装用户需要保护的应用及相关资源,进而构建出客户端进程所处的虚拟机环境;内核拦截单元,用于监测虚拟机环境的每次读写请求,查询和维护记录了数据恢复情况的恢复数据位图;虚拟机冻结单元,用于在内核拦截单元监测到虚拟机环境中的进程有读写请求及查询恢复数据位图,若要读写的数据未恢复则在内核态发起虚拟机环境冻结操作;虚拟机解冻单元,用于在要读写的数据写入客户端本地存储介质后,发起解冻虚拟机的操作,使虚拟机环境中的各个进程恢复运作;请求转发守护单元,用于与容灾服中心端通信,发出备份或恢复请求并传送、接收数据,集中完成数据请求管理、调度实现容灾恢复。
2、 如权利要求l所述的基于虛拟机的按需增量恢复容灾系统,其 特征在于,该系统中客户端请求转发守护单元包括备份子单元和恢复子单元,其中所述备份子单元,用于接收用户发来的备份请求,并生成备份任 务,根据备份任务的需求与容灾中心端建立连接,并转发该备份任务 的后续请求到服务器端,同时根据各个备份任务的优先级集中对备份 请求进行调度和流量控制;所述恢复子单元,用于接收用户以及内核拦截单元发来的恢复请 求,并生成恢复任务,根据恢复任务的需求与容灾中心端建立连接, 记录容灾中心端传送回来的数据,写入本地存储介质,同时对来自内 核拦截单元的恢复请求,还负责回调函数的执行而完成数据恢复,并 根据各个恢复任务的优先级集中对恢复请求进行调度和流量控制。
3、 如权利要求l所述的基于虛拟机的按需增量恢复容灾系统,其特征在于,该系统中所述容灾中心端还包括集群卷守护单元,与所述 集群卷管理单元通信,用于维护存储共享集群的状态,保证共享集群 中的有效节点数,同步对存储池所存储内存映像卷和数据映像卷所作的修改。
4、 如权利要求1所述的基于虛拟机的按需增量恢复容灾系统,其特征在于,该系统中所述容灾中心端还包括集群巻驱动单元和物理 设备驱动单元,所述集群卷驱动单元用于维护内存映像卷和数据映像 巻的逻辑数据块与物理数据块映射信息,各逻辑卷读写命令的调度和 派发,其下层是物理设备驱动单元,所述物理设备驱动单元通过存储 区域网络连接所述共享存储池。
5、 一种利用权利要求1所述系统的基于虛拟机的按需增量恢复 容灾方法,其特征在于,该方法包括以下步骤sl.O,在客户端上构建虛拟机环境,将要保护的应用包容在虛拟机环境中;sl.l,根据客户端的备份请求在容灾中心端生成虛拟机环境在指 定时间点的内存映像卷和数据映像卷,完成数据备份;,客户端启动恢复流程,根据用户发起的恢复请求生成恢复 任务,并向容灾中心端发送恢复请求,同时通知内核拦截单元初始化 恢复数据位图; , 容灾中心端根据恢复请求检索和定位虛拟机环境在指定时 间点的内存映像卷,并将其发送到客户端; , 客户端根据接收内存映像卷获取虛拟机环境在指定时间点 的内存映像,进行内存映像重构而恢复虛拟机环境在指定时间点的正常运行状态,并行执行步骤sl.5和sl.5'; ,在客户端开启内核通用块设备的读写请求拦截功能,当虛 拟机环境中的进程访问文件系统时首先査询恢复数据位图,若要读写 的数据已恢复,则直接访问,否则执行步骤sl.6; ,客户端发起虛拟机环境的冻结操作,由内核拦截单元发出 读写数据的恢复请求; ,将步骤sl.6中的恢复请求挂载到步骤sl.2所建立恢复任务 的队列中,并赋予最高优先级,等待容灾中心端的响应; ,客户端收到来自容灾中心端的所述读写数据,更新恢复数据位图,标志该读写数据为已恢复,并将其写入本地存储介质; sl.9,解冻虛拟机,使虛拟机环境中的各个进程恢复运作; sl.5,,客户端根据由步骤sl.2所建立的恢复任务,在后台不断发送数据块恢复请求到容灾中心端进行数据块恢复,在恢复过程中通过查询恢复数据位图避免数据重复恢复。
6、如权利要求5所述的基于虛拟机的按需增量恢复容灾方法,其特征在于,该方法中步骤s1.4中进行内存映像重构恢复虛拟机环境在指定时间点的正常运行状态包括步骤 (sl.4a,根据内存映像中的进程树派生一个内核进程,修改内核进程内核栈,令内核进程在系统调用退出时切换为缺省的自恢复进程; sl.4b,所述内核进程根据内存映像中的进程树派生出其子进程,所述子进程为自恢复进程,再次修改内核栈,构造第二次系统调用退出,进而切换为指定时间点时的用户态根进程;sl.4c,根据内存映像中的进程树结构按从根到叶的顺序依次派生出新的子进程,直到内存映像中的所有进程都被派生出来为止,设置各个所派生出的进程为深度睡眠状态;sl.4d,在客户端另启动一个独立进程,该进程位于虛拟机环境外,该独立进程根据用户的指令将虛拟机环境中所有进程的状态按照内 存映像中的记录进行重置,从而恢复虛拟机环境在指定时间点的正常运行状态。
7、 如权利要求5所述的基于虛拟机的按需增量恢复容灾方法, 其特征在于,该方法中步骤sl.O构建虛拟机环境包括步骤sl.0a,扩充客户端操作系统内核中进程的结构,使之增加代表进 程所处的虛拟机进程上下文环境的域;sl.0b,开启一个用户态进程,完成输入输出设备的切换,进而通过系统调用切入内核态;sl.0c,将上述用户态进程切换到用户空间,在虛拟机上下文环境 中执行/sbin/init,使用户态进程成为该虛拟机环境的根进程,然后派 生出相关子进程,创建相关系统服务;sl.Od,建立本地操作系统中的进程上下文与虛拟机进程上下文的 切换机制,构建出虛拟机环境。
8、 如权利要求5所述的基于虛拟机的按需增量恢复容灾方法, 其特征在于,在步骤sl.6中,发出读写数据的恢复请求后,选择预取 数据进行预取,预取方法为提交与读写数据物理位置邻近的各个数据 块的恢复请求,邻近位置由设定的地址偏移阈值决定。
9、 如权利要求8所述的基于虛拟机的按需增量恢复容灾方法, 其特征在于,所述地址偏移阈值'为动态调优参数,调优的方法为预 取数据为虛拟机环境中的进程要访问文件所需数据时,增加所述地址偏移阈值的绝对值,反之则减小。
10、 如权利要求8所述的基于虛拟机的按需增量恢复容灾方法,其特征在于,所述预取数据恢复请求的优先级低于步骤sl.6中读写数据的恢复请舉优先级,高于步骤31.5,中后台所发的数据块恢复请求优先级。
11、 如权利要求5所述的基于虛拟机的按需增量恢复容灾方法, 其特征在于,在步骤sl.5,中,后台按照预定的恢复策略不断发送数 据块恢复请求到容灾中心端进行数据块恢复,所述恢复策略为按敏 感度高低顺发送数据块恢复请求,先发送敏感度高的数据块,所述敏 感度设置在数据块中,通过统计每个数据块在一个固定大小时间窗口 w内的读写次数获得。
12、 如权利要求5所述的基于虛拟机的按需增量恢复容灾方法, 其特征在于,在步骤sl.8中,对位图进行更新后还包括以游程码的压 缩方式进行位图压缩步骤。
13、 如权利要求5所述的基于虛拟机的按需增量恢复容灾方法, 其特征在于,步骤sl.8中,对位图进行更新时采用读写锁机制,在写 操作更新数据的同时,并不删除老数据,直到对老数据正在进行的读 访问全部结束为止,该过程中新发生的读搡作定位到新的数据。
14、 如权利要求5所述的基于虛拟机的按需增量恢复容灾方法, 其特征在于,在步骤sL2中,客户端对于每个恢复请求,将其通过指 针链接成为一个双向链表,并在内存中建立恢复请求hash表,根据 所赋予的请求号将各个恢复请求放置到各个哈希桶中。
15、 如权利要求5所述的基于虛拟机的按需增量恢复容灾方法, 其特征在于,在步骤sl.8及步骤sl.5,中,当客户端接收到来自容灾 中心端所恢复的数据后,先写入位图,并告知后续程序数据已经传送 到,若数据没能成功写入,接收到的数据会一直保留并被重写,直到 数据顺利写入。
全文摘要
本发明涉及一种基于虚拟机的按需增量恢复容灾系统及方法,通过集成虚拟机进程上下文环境,能够构建应用相关的进程树,并支持对其进行冻结和截取一致的内存映像,在此基础上,提出了按需增量恢复方法,在通过内核拦截单元对虚拟机进程要访问文件系统数据进行监测的同时,在后台进行应用程序的相关数据块恢复,使虚拟机中的应用和恢复流程同时运行;恢复过程分为两阶段,即先恢复内存映像,再恢复文件系统或卷数据,通过该流程应用程序能够精确恢复到备份时的运行状态;该方法支持对客户端的多个备份任务和恢复任务的调度,支持对恢复数据的预取。本发明具有恢复时间短,能提高被保护应用的可靠性,对用户透明且成本低廉等优点,具有实用价值。
文档编号G06F11/14GK101414277SQ200810225919
公开日2009年4月22日 申请日期2008年11月6日 优先权日2008年11月6日
发明者余宏亮, 向小佳, 郑纬民 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1