CDP连续数据保护

CDP连续数据保护

ID:41888294

大小:251.55 KB

页数:5页

时间:2019-09-04

CDP连续数据保护_第1页
CDP连续数据保护_第2页
CDP连续数据保护_第3页
CDP连续数据保护_第4页
CDP连续数据保护_第5页
资源描述:

《CDP连续数据保护》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、CDP:连续数据保护2007/09/1110:25连续数据保护概述CDP是Linux内核屮基于块的连续数据保护模块,这个模块在数据块级别提供连续数据保护能力。连续数据保护是一种备份和恢复技术,它持续地捕获所冇I/O请求,并口为在这些请求打上时间戳标志。它将数据变化以及时间戳保存下来,以便恢复到过去的任意吋刻。因此,这个模块支持数据的任意吋刻映像。在LinuxCDP实现中,涉及三个设备:•主机磁盘(HostDisk)设备;•CDP仓库(Repository)设备;•CDP元数据(Metadata)设备;对主机磁盘设备数据块的在各个吋刻所作

2、的写操作都被记录下来,被顺序保存到CDP仓库设备中,同时对应的元数据也被保存在CDP元数据设备中。元数据包括以卜信息:struetmetadata{inthrs,min,sec;该数据块被写入主机磁盘设备的时间;unsignedintbisize;该数据块的以字节为单位的长度;sector_tcdp_sector;CDP仓库设备中对应数据块的起始扇区编号;sector_thost_scctoT;该数据块在主机磁盘设备屮的起始扇区编};下图反映了主机磁盘设备和CDP仓库设备之间的关系。CDP仓库设备中按时间顺序保存了对主机磁盘设备的数据修

3、改。A为主机磁盘设备上的一个扇区,该扇区在9:00和9:05分别进行了修改,它在CDP仓库设备屮对应的扇区分别为A1和A2o下图反映了CDP仓库设备和CDP元数据设备Z间的关系,它们以写入顺序一一对应。CDP仓库设备中的一个元数据对应CDP元数据设备中一个I/O请求,实际上可能是多个扇区。具体扇区数曲元数据中的bisize指定,而起始扇区位置曲cdp_scctor扌旨定。CDP仓库设备全局变量maddr保存了下一个I/O请求在CDP仓库设备上执行的地址(起始扇区编号)。maddr的初值被定义为宏STARTJ1ETADATA(0)。uns

4、ignedintmaddr-STARTMETADATA;当一个写请求到来时,对应数据被写到CDP仓库设备小,这时所作的操作如下:•将写入CDP仓库设备的数据块起始扇区编号设置为maddr;•根据要写入主机磁盘设备的数据块的扇区数口增加maddro这吋,我们要将这里写入的CDP仓库设备的数据块编号记录下来以便构造对应的元数据。CDP元数据设备全局变量taddr保存了下一个I/O请求对应的元数据在CDP元数据设备中保存的地址(起始扇区编号)。taddr的初值被定义为宏STARTJIETADATA(0)。unsignedinttaddr-ST

5、ARTMETADATA;当一个写请求到来时,对应的元数据被记录在CDP元数据设备中。为了简单起见,在元数据设备上,一个扇区(512字节)只保存一个元数据信息(只有32字节),这样浪费了大量的存储空间,但对元数据设备的处理却非常简单:•将写入CDP元数据设备的元数据起始扇区编号设置为taddr,长度为1个扇区;•将taddr増1。请求处理过程请求处理过程是从make.rcquest函数开始的。考虑到读请求的处理的相似性,甚至更为简单,我们这里只分析对写请求的处理过程。我们首先获得当前的系统时间。Z后,写请求bio结构(为说明方便,我们记为

6、B)被分为三个写请求bio结构(分别为BO、B1和B2)o这三个bio结构的作用是:•B0:将数据块写到主机磁盘设备;•B1:将数据块写到CDP仓库设备;•B2:将元数据写到CDP元数据设备。bibdev_、4dev[i]同其它块设备驱动程序的实现一样。我们从B克隆产生BO、B1和B2。然后重定向它们要处理的设备,即bi.bdcv域。另外一个大的变动是重新设置了bi’nd.io域,用于在1/0请求完成之后进行善后处理。为了处理善后,还将B0>Bl和B2的bi_private扌旨向同一个cdpbiol结构。从这个结构,我们要能够回到对B的

7、处理。structcdp_bio{struetbio^master_bio;原來的bio,通过这个域我们可以从BO、Bl.B2找到Bstruetbio*bios[3];如果10为WRITE,这个指针数组分别指向B0、Bl.B2,为何需要这个域?atomic_tremaining;这里一个计数器,我们后面将解释。unsignedlongstate;在I/O完成方法中使用};善后工作的主要目的是:在BO、B1和B2都执行完成后,冋去执行B,为此,我们需要一个“havewefinished”计数器,这就是原子整型变量remainingo在构造

8、BO、Bl、B2时分别递壇,同时在BO、Bl和B2的I/O完成方法中递减,最后根据该值是否递减到0,來判断BO、B1和B2是否都已经执行完毕。为了防止B0在构造后,在B1和B2构造之前就执行到B0的1/0完

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。