Professional Documents
Culture Documents
包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的
一个副本,也可以是数据的一个复制品。实际的技术实现:基于时间点的卷逻辑映像,在逻
辑上等同于一个完整物理拷贝(主机是这样认为的),实质上是一个指针表,并非实际的数
据卷,占用空间极少。
快照的定义与作用
SNIA(存储网络行业协会)对快照(Snapshot)的定义是:关于指定数据集合的一个
完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可
以是其所表示的数据的一个副本,也可以是数据的一个复制品。而从具体的技术细节来讲
快照是指向保存在存储设备中的数据的引用标记或指针。我们可以这样理解,快照有点像
是详细的目录表,但它被计算机作为完整的数据备份来对待。
快照有三种基本形式:基于文件系统式的、基于子系统式的和基于卷管理器/虚拟化式的,
而且这三种形式差别很大。市场上已经出现了能够自动生成这些快照的实用工具,比如有
代表性的有 NetApp 的存储设备基于文件系统实现,高中低端设备使用共同的操作系统,
都能够实现快照应用;HP 的 EVA、HDS 通用存储平台以及 EMC 的高端阵列则实现了子系
统式快照;而 Veritas 则通过卷管理器实现快照。
快照的作用主要是能够进行在线数据恢复,当存储设备发生应用故障或者文件损坏时可
以进行及时数据恢复,将数据恢复成快照产生时间点的状态。快照的另一个作用是为存储
用户提供了另外一个数据访问通道,当原数据进行在线应用处理时,用户可以访问快照数
据,还可以利用快照进行测试等工作。因此,所有存储系统,不论高中低端,只要应用于
在线系统,那么快照就成为一个不可或缺的功能。
目前有两大类存储快照,一种叫做即写即拷(copy-on-write)快照,另一种叫做分割
镜像快照。
即写即拷快照可以在每次输入新数据或已有数据被更新时生成对存储数据改动的快照。这
样做可以在发生硬盘写错误、文件损坏或程序故障时迅速地恢复数据。但是,如果需要对网
络或存储媒介上的所有数据进行完全的存档或恢复时,所有以前的快照都必须可供使用。
即写即拷快照是表现数据外观特征的“照片”。这种方式通常也被称为“元数据”拷贝,即所有
的数据并没有被真正拷贝到另一个位置,只是指示数据实际所处位置的指针被拷贝。在使
用这项技术的情况下,当已经有了快照时,如果有人试图改写原始的 LUN 上的数据,快照
软件将首先将原始的数据块拷贝到一个新位置(专用于复制操作的存储资源池),然后再
进行写操作。以后当你引用原始数据时,快照软件将指针映射到新位置,或者当你引用快
照时将指针映射到老位置。
分割镜像快照引用镜像硬盘组上所有数据。每次应用运行时,都生成整个卷的快照,而不
只是新数据或更新的数据。这种使离线访问数据成为可能,并且简化了恢复、复制或存档一
块硬盘上的所有数据的过程。但是,这是个较慢的过程,而且每个快照需要占用更多的存
储空间。分割镜像快照也叫作原样复制,由于它是某一 LUN 或文件系统上的数据的物理拷
贝 , 有 的 管 理 员 称 之 为 克 隆 、 映 像 等 。 原 样 复 制 的 过 程 可 以 由 主 机 ( Windows 上 的
MirrorSet、Veritas 的 Mirror 卷等)或在存储级上用硬件完成(Clone、BCV、ShadowImage
等)。
三种使用方法
具体使用快照时,可以有三种形式,即冷快照拷贝、暖快照拷贝和热快照拷贝。
冷快照拷贝
进行冷快照拷贝是保证系统可以被完全恢复的最安全的方式。在进行任何大的配置变化
或维护过程之前和之后,一般都需要进行冷拷贝,以保证完全的恢复原状( rollback)。冷
拷贝还可以与克隆技术相结合复制整个服务器系统,以实现各种目的,如扩展、制作生产
系统的复本供测试/开发之用以及向二层存储迁移。
暖快照拷贝
暖快照拷贝利用服务器的挂起功能。当执行挂起行动时,程序计数器被停止,所有的活
动内存都被保存在引导硬盘所在的文件系统中的一个临时文件(.vmss 文件)中,并且暂停
服务器应用。在这个时间点上,复制整个服务器(包括内存内容文件和所有的 LUN 以及相
关的活动文件系统)的快照拷贝。在这个拷贝中,机器和所有的数据将被冻结在完成挂起
操作时的处理点上。
当快照操作完成时,服务器可以被重新启动,在挂起行动开始的点上恢复运行。应用程
序和服务器过程将从同一时间点上恢复运行。从表面上看,就好像在快照活动期间按下了
一个暂停键一样。对于服务器的网络客户机看来,就好像网络服务暂时中断了一下一样。对
于适度加载的服务器来说,这段时间通常在 30 到 120 秒。
热快照拷贝
在这种状态下,发生的所有的写操作都立即应用在一个虚硬盘上,以保持文件系统的高
度的一致性。服务器提供让持续的虚拟硬盘处于热备份模式的工具,以通过添加 REDO 日
志文件在硬盘子系统层上复制快照拷贝。
一旦 REDO 日志被激活,复制包含服务器文件系统的 LUN 的快照是安全的。在快照操作
完成后,可以发出另一个命令,这个命令将 REDO 日志处理提交给下面的虚拟硬盘文件。
当提交活动完成时,所有的日志项都将被应用,REDO 文件将被删除。在执行这个操作过程
中,会出现处理速度的略微下降,不过所有的操作将继续执行。但是,在多数情况下,快
照进程几乎是瞬间完成的,REDO 的创建和提交之间的时间非常短。
热快照操作过程从表面上看基本上察觉不到服务器速度下降。在最差情况下,它看起来就
是网络拥塞或超载的 CPU 可能造成的一般服务器速度下降。在最好情况下,不会出现可察
觉到的影响。
与镜像、复制的区别
在与广大存储管理员进行交流时,他们问到最多的一个问题是:快照与镜像以及复制的
区别有哪些呢?
1、 创建快照是否对性能产生影响?
2、 每个快照需要多少存储空间?
3、 每个卷能够最多产生多少快照?
4、 对快照的管理使用是否方便?
5、 有无有效的集成快照管理工具?
6、 是否支持各种类型快照功能?
1、工作原理
首先,Snapshot 会占用磁盘空间,占用空间的多少是由变化数据的多少决定;极端情况
下,所有的数据都有变化,就需要有与 Target Lun 一样大小的 Lun。Snapshot 开始工作的时
候,在 RAID 控制器的 Cache 中建立一个数据区域指针,与 Target 的 Block 一一对应;当某
一个 Block 的数据中要变化,Controller 先将原始数据复制到 Snapshot Lun 中,同时修改指
针,指向 Snapshot Lun 中的 Block。 当 Host 需要读 Target Lun 中数据的时候,直接读取
Targe Lun;如果读取 Snapshot Lun 中的数据,现查询内存指针;数据没有改变,就直接读
取 Target LUn 中的 Block,如果改变,就直接读取 Snapshot Lun 中的 Block。 也就是说,
Snapshot 的核心是建立一个指针列表,指示读取数据的地址,提供一个瞬时数据的影像。只
有当数据要改变时,才复制到一个新的 Lun 中;数据在一段时间内的变化不是太频繁,就
不会占用太多的空间。
2、工作方式
snapshot 有两种方式,一种是将目标 LUN 的数据完全复制一份,要占用相等地磁盘空
间,典型的是 EMC TIMEFINDER。另一种是对指针的复制,占用空间很少。管理指针也与
两种方式,一种是在原数据被修改前,现将原数据复制到特定的快照区域(有有两种方式
一种在单独的磁盘分区,一种是在原文件系统占用的空间),在修改快照中的指针,这样
可以不改变原文件系统的指针结构,可以减少磁盘碎片,大多数快照都是这么做的;另一
种是修改的数据继续写到同文件系统的空余空间,修改文件系统原来的指针,而不是修改
快照的指针。我知道的只有 NETAPP 这么做,但他的特殊文件系统结构可以做的很好,因
为有 NVRAM 参与。 指针玩的最好的是 Veritas 的 CheckPoint,HP 的 EVA 盘阵(来自
COMPAQ)和 NetApp WAFL