1.数据存储备份与恢复的作用与意义
随着计算机的普及和信息技术的进步,特别是计算机网络的飞速发展,信息安全的重要性日趋明显.但是,作为信息安全的一个重要内容――数据存储备份的重要性却往往被人们所忽视.只要发生数据传输、数据存储和数据交换,就有可能产生数据故障.这时,如果没有采取数据存储备份和数据恢复手段与措施,就会导致数据的丢失.有时造成的损失是无法弥补和无法衡量的.
数据故障的形式是多种多样的.通常,数据故障可划分为系统故障、事务故障和介质故障三大类.在信息的收集、处理、存储、传输和分发中经常会存在一些新的问题,其中最值得关注的就是系统失效、数据丢失或遭到破环.
因此,数据存储备份和数据恢复是保护数据的最后手段.
2.数据存储备份系统的基本构成
一个好的数据存储备份系统应该具备以下一些基本要素:(1)保护性:全面保护用户的数据,在灾难发生时能快速可靠地进行数据恢复;(2)可管理性:这是存储备份中一个重要的因素.因为可管理性与存储备份的可靠性紧密相关.最佳的可管理性当然就是自动化存储备份方案,这不仅增加了数据的安全性和可靠性,而且在数据恢复时减少了以往十分繁琐的工作步骤,节约了大量的人力和时间;(3)可扩展性:存储备份最大的忌讳就是在存储备份过程中因介质容量不足而更换介质.因为这会降低存储备份数据的可靠性与完整性.因此,存储介质的容量在存储备份中具有压倒一切的重要性.
3.卷复制技术
3.1 存储备份模型
当用户的数据需要保留相对比较长的时间时,最经济的方法是采用磁带,这就需要解决因此带来的需要长时间存储备份和恢复的问题.要完成存储备份/恢复操作,最简单的方案就是:用户在每次需要进行数据拷贝时,逐个指定所使用的源/目的Volume,若需要多个副本,则需要多次重复同一过程.这样把对存储备份介质的管理和对存储备份过程的控制责任完全压在了用户身上,不但效率低下,而且容易出错,也没有充分发挥磁盘阵列硬件的并行优势.为此,备份恢复管理模块首先从介质的管理入手,它通过引入复制的观点,即在磁盘阵列中将一些磁盘作为主磁盘,另一些作为主磁盘的冗余盘,也叫从磁盘,通过对主磁盘和从磁盘的pair设定,并提供复制、恢复、分离等命令,可实现以下功能:主盘上所有数据的变化可以直接反映到从盘上;当发生意外时,从盘上的数据可以迅速恢复到主盘上等功能,并且通过各种选项的设置,实现不同的复制状态,按用户的需要完成不同的备份恢复功能.用户可以事先规划好数据的备份和恢复关系,在用户的参与下建立起多个磁盘阵列间的备份网络,以后的备份/恢复过程就只需要指定所要操作的备份网络即可.
备份/恢复操作是以逻辑盘LD为单位进行的.逻辑盘在备份术语中称为“卷”.基本备份/恢复功能就是通过将磁盘阵列中业务卷上的数据复制到复制卷上,以实现系统的高安全性.当业务卷上的数据被毁坏时,就可以用它的复制卷上的数据来恢复业务卷上的数据内容,或者让服务器直接访问这个复制卷.
3.2 Pair信息的存储
借助pair关系的branch(分叉)和chain(链式)特性,可形成一个备份/恢复的多叉树,并进而形成一个强大的备份网络.为了在系统中表示与操作这种关系,需要用一种数据结构来存储它.作为pair中主方的Volume会具有MV属性,作为pair中从方的Volume会具有RV属性.
关系总是依赖于实体而存在的,因此笔者将pair关系用volume中的一个称之为“pair node”的内嵌结构体来表示.pair node中包含MV或RV的定位信息,以及该pair当前所处的状态.为了查询性能的优化,以及为了能通过RDR pair中的一方找到位于远地的另一方,在MV和RV所对应的Volume中都持有表示同一个pair关系的“pair node”.pair关系是有方向性的,为了区分这一点,参照Volume的分类方法,可将MV中的那个指向RV的“pair node”称为“replication pair node”,将RV中的那个指向MV的“pair node”称为“master pair node”.
MV和RV中表示同一个pair关系的“pair node”中所保存的pair状态值在大多数情况下是完全一样的,但在pair中一方出现故障而另一方正常时,二者的内容可能会有所差别.另外,系统提供了一些单方强制操作,亦只对pair中的某一方而不是同时对MV和RV同时执行操作,在这种情况下,MV和RV中的pair状态信息也会有所差别.这种MV和RV中保存的pair状态信息的不一致性,也是同时在MV和RV方保存pair信息的原因之一.
图1 pair信息存储示意图
3.3 卷复制功能的实现
(1)pair的设定和解除操作.
在设定pair时,首先要检查指定的两个Volume是否可以被设定为pair,即:①即将作为RV的Volume必须是一个IV(独立卷);②两个Volume的容量、类型等必须完全一致;③若即将作为MV的Volume不是一个VI,则它所在的所有pair必须处于分离状态;在解除一个pair时,要检查指定的两个volume是否己经是一对pair,且该pair应当处于分离状态.
(2)Restore/Separate等操作.
这些操作本身的实现并不难,最主要的是要在命令发行前根据硬件的当前状态进行合法性检查,预先判断这些命令发往硬件后,是否能被执行成功.若检查通过,则将之打包成Agent模块所能识别的电文并发往Agent模块,等待执行结果的返回.