Snapshot,也就是快照技术,在backup时被广泛采用。很早就被应用到阵列和主机中,主要采用Copy on Write的算法。这些详细的技术细节,可以去snia.org上查找。通常,他们都是基于卷,在block级别进行处理。各种大型的array中都有支 持,主机OS上的卷管理器,如VxVM上就可以做快照。
SNIA对快照(Snapshot)的定义是:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。
快照其实是指向保存在存储设备中的数据的引用标记或指针,说穿了就是数据在某一时刻的状况,其工作原理核心就是是建立一个指针列表,指示读取数据的地址,提供一个瞬时数据的影像,当数据有改变时,再进行复制。
快照大致分为2种,一种叫做即写即拷(copy-on-write)快照,通常也会叫作指针型快照,VSS即属于这一种,另一种叫做分割镜像快照,常叫做 镜像型快照。指针型快照占用空间小,对系统性能影响较小,但如果没有备份而原数据盘坏了,数据就无法恢复了;而镜像型快照实际就是当时数据的全镜像,会对 系统性能造成一定负荷,但即使原数据损坏也不会有太大影响,不过要占用到相等容量的空间。
snapshot原理
|
|
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,所以原数据坏对它是没有影响的。
|
|