SNIA对快照(Snapshot)的定义是:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。

快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。

实际的技术实现:基于时间点的卷逻辑映像,在逻辑上等同于一个完整物理拷贝(主机是这样认为的),实质上是一个指针表,并非实际的数据卷,占用空间极少。
快照的定义与作用

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可能造成的一般服务器速度下降。在最好情况下,不会出现可察觉到的影响。

与镜像、复制的区别

在与广大存储管理员进行交流时,他们问到最多的一个问题是:快照与镜像以及复制的区别有哪些呢?

记者认为镜像、快照和复制是三种不同的功能。

镜像是通过从一个I/O创建两个I/O来复制数据。磁盘镜像通过OS或卷管理软件在主系统上创建。磁盘镜像是依靠平台和本地连接特性的本地选件。镜像可用于DAS和SAN并且大多数NAS支持它。存储转发式镜像磁盘子系统(例如,EMC SRDF, IBM PPRC, Hitachi TrueCopy)主要用于SAN产品。

复制是通过网络传输数据对象(文件、表格等)。传输是从系统到系统进行的,而不是在存储设备之间或子系统之间进行。复制一般也针对具体平台,因此用于Windows 2000复制产品的运行方式与Unix平台存在很大不同。

用户选择快照时要考虑的问题

1、 创建快照是否对性能产生影响?
2、 每个快照需要多少存储空间?
3、 每个卷能够最多产生多少快照?
4、 对快照的管理使用是否方便?
5、 有无有效的集成快照管理工具?
6、 是否支持各种类型快照功能?

Snapshot,也就是快照技术,在backup时被广泛采用。很早就被应用到阵列和主机中,主要采用Copy on Write的算法。这些详细的技术细节,可以去snia.org上查找。通常,他们都是基于卷,在block级别进行处理。各种大型的array中都有支持,主机OS上的卷管理器,如VxVM上就可以做快照。

SNIA对快照(Snapshot)的定义是:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。

快照其实是指向保存在存储设备中的数据的引用标记或指针,说穿了就是数据在某一时刻的状况,其工作原理核心就是是建立一个指针列表,指示读取数据的地址,提供一个瞬时数据的影像,当数据有改变时,再进行复制。

快照大致分为2种,一种叫做即写即拷(copy-on-write)快照,通常也会叫作指针型快照,VSS即属于这一种,另一种叫做分割镜像快照,常叫做镜像型快照。指针型快照占用空间小,对系统性能影响较小,但如果没有备份而原数据盘坏了,数据就无法恢复了;而镜像型快照实际就是当时数据的全镜像,会对系统性能造成一定负荷,但即使原数据损坏也不会有太大影响,不过要占用到相等容量的空间。

snapshot是STK(storagetek)为其SVA(shared virtual array)系列磁盘开发的一项技术,后来STK 又不这项技术运用与其中低端的磁盘上,但是在非SVA磁盘上这项技术实现起来有点别扭.snapshot与其他的磁盘快速拷贝技术(如:IBM的 flashcopy,EMC的timefinder,hds的shadowimage等)有本质的区别.


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


其实snapshot意思就是“快照”,是数据在某一时刻的状况。进行snapshot可以用磁盘阵列内的软件进行,例如EMC的 timefiner,IBM的Flashcopy,HDS的ShadowImage;也可以在操作系统级利用volume manager软件或 file system的技术实现。实现方式也有两种,一种是镜像型的,也就是所有数据copy一份;另一种是指针型,上面谈了很多了。例如 VERITAS的volume manager snapshot是镜像型的,而file system snapshot是指针型的。IBM的 FlashCopy好像也有两种方式,IBM的flashcopy分为前台和后台拷贝两种方式,前台拷贝是实际完全拷贝,后台就是说的那种建立指针的方式。后台方式下,如果你访问备份卷 的数据,发现不是最新的,就会先去从原卷上执行COPY工作,达到访问 数据的正确行。后台拷贝对系统性能影响小一些。

一般指针型的snapshot是只读的。指针型的snapshot,如果没有备份而原盘坏了,数据应该是无法恢复的;而镜像型的snapshot本身就是当时时刻的数据的全copy,所以原数据坏对它是没有影响的。