发明名称 一种使用快照技术进行在线恢复的方法
摘要 本发明提供一种使用快照技术进行在线恢复的方法,应用程序(1)是通过文件系统对数据进行操作的程序,通常情况下有两种数据读写方式,一种是通过调用应用程序开发接口(2)提供的接口,再一种是通过系统调用方式(B)直接访问虚拟文件系统(3)提供的接口,应用程序开发接口(2)也是通过系统调用方式(B)来完成数据读写的;虚拟文件系统(3)存在的目的就是屏蔽文件系统(4)的具体实现而对上层提供主要接口;快照源卷(5)和快照卷(6)是虚拟块设备。二者结合实现快照功能。当有写请求发送到快照源卷(5)时,它首先判断扇区中的旧数据是否已经复制到了快照卷(6),否则通过Kcopyd方式(C)将数据复制到快照卷(6)然后再完成写操作。这就是所谓的COW,快照卷(6)也可以以块设备的形式提供对外的读写。
申请公布号 CN101814043A 申请公布日期 2010.08.25
申请号 CN201010149537.6 申请日期 2010.04.19
申请人 山东高效能服务器和存储研究院 发明人 吴庆民
分类号 G06F11/14(2006.01)I;G06F17/30(2006.01)I 主分类号 G06F11/14(2006.01)I
代理机构 代理人
主权项 一种使用快照技术进行在线恢复的方法,其特征在于在线恢复所用的软硬件及步骤包括:应用程序(1),应用程序开发接口(2),虚拟文件系统(3),文件系统(4),快照源卷(5),快照卷(6),在线恢复管理程序(7),管理字符设备(8),恢复线程(9),具体步骤如下:1)在快照的基础上增加快照在线恢复能力应用程序(1)是通过文件系统对数据进行操作的程序,通常情况下有两种数据读写方式,一种是通过调用应用程序开发接口(2)提供的接口,再一种是通过系统调用方式(B)直接访问虚拟文件系统(3)提供的接口,应用程序开发接口(2)也是通过系统调用方式(B)来完成数据读写的;虚拟文件系统(3)存在的目的就是屏蔽文件系统(4)的具体实现而对上层提供主要接口;快照源卷(5)和快照卷(6)是虚拟块设备,二者结合实现快照功能。当有写请求发送到快照源卷(5)时,它首先判断扇区中的旧数据是否已经复制到了快照卷(6),否则通过Kcopyd方式(C)将数据复制到快照卷(6)然后再完成写操作,这就是所谓的COW,快照卷(6)也可以以块设备的形式提供对外的读写;在线恢复管理程序(7)用于协调统一管理快照的在线恢复操作,它与多个模块都有接口,首先,它能够通知应用程序(1)准备恢复和开始恢复,以便应用程序(1)能够保证通过一些策略保证数据是可用的,以及处理底层数据的变更,同时,它通过管理字符设备(8)提供的接口进行数据恢复操作启动以及查看当前恢复的状态;管理字符设备(8)用于提供给用户级进程管理接口,并具体实现数据恢复、状态查看等操作;恢复线程(9)用于后台执行在线恢复功能;2)数据恢复流程,具体如下:a.用户通过在线恢复管理程序(7)启动数据恢复;b.在线恢复管理程序(7)通知应用程序(1)准备开始数据恢复,使应用程序(1)有机会做一些保证数据一致性的操作。比如停止当前读写等;c.在线恢复管理程序(7)通知管理字符设备(8)启动数据恢复;d.管理字符设备(8)清空虚拟文件系统(3)或文件系统(4)的缓存,使恢复过程中的数据不至于造成不一致;e.管理字符设备(8)通知快照源卷(5)将读写流程更改为“恢复过程中的读写”过程;f.管理字符设备(8)启动恢复线程(9)进行真正的数据恢复;g.这时(7)对(8)的调用返回;h.在线恢复管理程序(7)通知应用程序(1)正在恢复数据,使应用程序(1)有机会恢复正常业务,包括继续进行读写,事实上,从a-g的操作对应用程序(1)所运行的业务是完全忽略,认为是完全在线的,不至于导致长时间的离线操作;恢复线程(9)的工作是将快照存在的数据复制到快照源卷中,对快照中所存在的每个块,包括相同大小的扇区的集合,操作如下:a.将块索引加入正在恢复的列表,以便在线读写时查找;b.通过Kcopyd方式(C)将数据复制到原来的扇区;c.恢复完成后,将恢复位图中待恢复块所在的位置置0,恢复位图初始状态为,做过快照的块置1,其它置0;d.将块索引从正在恢复列表中删除;3)恢复过程中读写流程数据恢复过程中,数据读写是采用特殊的读写流程,主要流程如下:a.接收文件系统的块数据读写请求;b.将数据读写请求指定的扇区转换为块trunk;c.查找正在恢复列表,所要请求的数据是否正在被恢复,如果正在恢复则等待,至到恢复完成,否则转为函数ioctl方式(d);d.查找恢复位图代表该块的位是否为1e.如果为1,从快照中进行数据读写,否则从源卷中进行读写(恢复位图某个位为0表示该trunk或者未被备份到快照卷,或者已经完成恢复,二必其一;f.将读写完成的结果返回上层。
地址 250014 山东省济南市历下区山大路224号