大话存储系列19——数据备份与恢复 下

4、卷克隆(Clone)

克隆是指源数据集某时间点的一份或者几份实实在在的实体复制,利用快照做克隆:首先对某个源数据集(源卷或者源文件系统)创建一份快照,之后将这份快照执行的所有数据块阯出来到一个额外的存储空间,这样,被复制出来的所有数据就组成了源数据集在那个时刻的一个克隆实体。

历史是不能回过头去改变的,但是快照却是可写的(以前我一直以为快照时只读的),其实可写的Snapshot也只不过是对指针的处理而已,即系统增加了一个RoFW数据映射表,比如存储系统将Snapshot也只不过是对指针的处理而已,即系统增加了一个RoFW数据映射表,比如存储系统将Snapshot1映射给了HostA主机,HostA主机将其挂载到了F盘,某时刻HostA对F盘的第一个扇区全写入0,存储系统收到这个请求之后,会将这512B的数据重新定向地写入一个空闲存储空间的地址,并将用新的MetaData来记录这个新指向。而且更灵活的是,还可以为这个克隆卷再次创建快照,甚至CDP。

可写的Snapshot叫做虚克隆,在虚客克隆中,数据的更改部分是是是在这写入存储的,而数据的未更改部分是与源卷使用相同的数据源。其特点显而易见,好处是占用的空间少,坏处是一旦源卷损坏,克隆的数据就完了。

5、CDP(Continuous Data Protect)连续数据保护

CDP是这样一种机制,即他可以保护从某个时刻开始卷或者文件在此后任意时刻的数据状态也就是数据的每次改变,都会被记录下来,无一遗漏,看起来很神奇,但是只不过在底层比快照多了一些考虑而已,下面我们来分析器具体实现原理:

1、应用级的CDP和文件级的CDP

应用级的典型的代表就是oracle和db2数据库系统,利用归档日志,完全可以恢复到任何一个时间点;文件级的CDP就是通过监视文件系统动作,文件的每一次变化(包括实际数据或者元数据的变化,比如重命名、删除、裁剪等属性的改变)以日志的形式记录下来。CDP引擎分析应用对文件系统的IO数据流,然后计算出文件变化的部分,将其保存在CDP仓库设备(存放CDP数据的介质)中,可以针对每个文件生成单独的日志链。可以对一个文件,或者一个目录,甚至一个卷进行监控。文件级的CDP方案,一般需要在生产主机上安装代理,用来监控文件系统IO,并将变化的数据信息传送的CDP仓库介质中,或者使用本地文件系统或者磁盘的某块额外空间来充当日志仓库。文件级的CDP,能够保障数据一致,因为它是作用于文件系统层次,捕获的是完整的十五操作,所有的文件版本管理软件都可以算作是文件级CDP的实现。

2、块级CDP

块级的CDP,与应用级和文件级CDP实现思想相同,其实就是捕获底层卷的写IO变化,并将每次变化的块数据打入时间戳,并保存下来。


先看一下这个结构,一台主机后端通过FC交换机连接了一台磁盘阵列。磁盘阵列映射了若干LUN给这台主机使用,并且主机还有本地磁盘,受保护的文件盒卷有一部分存放在磁盘上,又有一部分存放在存放在本地磁盘中。其前端通以太网交换机连接了一台CDP服务器。主机安装有CDP客户端套件,包括的主要模块有:CDP主代理模块、块IO捕获虚拟设备模块和文件IO过滤驱动模块。

1)文件IO过滤模块

这个模块作用于文件系统层旁路以及卷管理层之上,其作用是监视每个收到CDP保护目录下的文件的所有操作,一旦发现某个受保护的文件有写入操作,则将这个操作所对应的数据和偏移量一通通过以太网发送到CDP服务器端(RoW方式),或者像将受到保护的文件对应的即将被覆盖的部分的现有内容读出然后附带对应的偏移量信息一并发送到CDP服务器端后再将待写入的数据写到对应的磁盘空间中(CoW方式下)。文件IO过滤层是实现文件级CDP的一个必需组件。而实现卷级或者块级的CDP,就需要在卷管理层之下的Block IO链条之间插入一层,也就是图示的块IO捕获虚拟设备层。

2)块IO捕获虚拟设备层

这个组件在数据管理层之下生成了一个虚拟设备,卷管理层直接对这个设备进行IO,从而将任何师徒写入受CDP保护的卷的IO操作截获,与文件IO过滤组件作用方式相同,根据不同的设计方式比如CoW或者RoW,将对应的数据和LBA地址信息发送到CDP服务器端。这两个组件并不是所有IO都监控,他们只会向操作系统API注册受CDP保护的目录或者卷的监控过滤权限,上层对未受保护对象的写IO操作均会Bypass掉这两个层直接写向原有的下层。上图中的箭头明确指示了各个层次之间的关系。

3)CDP主代理模块

这个模块是受保护的客户端主模块,负责协调与CDP服务器的通信和数据传输,以及适配上述的两个模块。若果说上面两个模块是两个枪,则客户端主代理模块就是前线指挥者,CDP服务器就是后方总指挥加战俘集中营。主代理模块还负责把每个从上面两个模块接收到的写IO数据大伤时间戳发送给CDP服务端模块保存。

4)CDP服务器端
CDP服务器端是整个CDP系统的总控制台和IO仓库。服务端负责监控和记录所有受保护的客户端主机上的代理程序状态以及目录/卷的状态、传输状态等。服务端负责响应代理端的查询请求并在查询命中时将保存在仓库中的IO数据返回给代理端。服务器还负责接收各个代理端传送过来的需要保存的IO,并将这些IO数据加以分类并存放到本地的存储空间中,并做好时间索引/地址段索引等重要步骤以便提高查询速度。服务端还负责提供用户配置接口,用CLI/GUI方式接收用户的配置,比如保存期限、空间配额、备份策略、传输模式、带宽控制、用户权限控制等。
CDP服务端可以使一台普通的服务器,安装对应软件,也可以是内嵌软件的成品一体化硬件服务器,至于CDP服务器的存储空间,则需要根据受保护的总容量、处理能力和具体需求等来配置,服务器机箱内本地磁盘以及通过FC或者SAS之类的适配卡连续的外置扩展柜或者第三方独立存储系统,均可以作为IO仓库存储空间。

5)源卷数据被保护的详细步骤阐述
有一台主机,其上有一个100GB大小的卷或者分区,需要对其进行CDP连续保护,保护期限为一周,也就是说只保留值周前到现在的所有变化数据即可,CDP服务器已经安装配置完成。
1、主机安装CDP客户端代理模块,对受保护卷IO更改率评估一般IO仓库容量为源卷的20%即可——在代理端用操作界面申请20GB大小的IO仓库——服务器端在本地分配20GB空间,并记录这个空间使用者和卷信息,对此空间做元数据初始化,准备接受客户端发送来的IO数据——管理员手动将数据保护引擎启动,块IO捕获引擎开始工作,IO数据源源不断地发送给代理主模块——代理主模块打上时间戳,传送到服务器端——服务端接受IO数据放入IO仓库——IO仓库数据容量达到所设定的阀值的时候,将会产生告警信息通知管理员扩容。

6)CDP实现数据恢复

假如由于你的误操作,删除了一个文件,如何利用CDP技术恢复呢?我们通过一个生动的例子来说明恢复过程:

1、通过客户端界面选择mount某个时间点的镜像——客户端代理迅速地将指令发送给了CDP服务器端,告知说本代理需要提供服务,请准备一下相关的资源,服务端准备好后通知代理端,我已经给你虚拟出了一个新的卷,并且挂载到一个盘符下,静候下一步的指示。

2、管理员打开我的电脑,出现了一个新的磁盘F盘,总容量与受保护的卷一样,一看就知道是源卷在选择的那个时刻的虚拟影像了,双击进去。

3、文件系统查询LBA1024到LBA2048这段地址上,让代理程序去CDP服务端仓库中对应LBA1024到LBA2048这些数据块的各自链条中有没有要恢复时刻的时间戳,有的话全部发过来,在链条中没找到带那个时刻戳子的块,就一定还在源卷处,然后代理从源卷也取来数据,送给文件系统。

就这样通过文件系统与代理的交互,找到误删除的数据。

7)改进的模型

上述模型中有两个比较严重地问题需要改进,第一:源数据卷或者目录中没有被写覆盖的文件部分或者block,并未被传送至CDP服务器端做备份,若源卷发生损坏,则CDP上保存的IO数据就会变得无用。第二:CDP服务器与客户机之间只通过以太网连接,如果大量的IO数据发送,性能会出现瓶颈。









转载于:https://www.cnblogs.com/cymm/archive/2013/03/31/3390398.html

你可能感兴趣的:(大话存储系列19——数据备份与恢复 下)