快照的目的在于能够记录出某一个时刻的数据信息并将其保存,如果之后发生某些故障需要数据恢复的时候,可以通过快照来将数据恢复到之前时间点的状态,而该时间点之后的数据都会丢失。备份系统是快照技术的主要应用领域之一,当备份软件需要备份某些不能停止运行的关键业务的时候,利用快照技术可以将某时间点的所有数据信息保存并备份,不会影响到业务的正常运行。
快照技术分为两类:物理拷贝和逻辑拷贝,物理拷贝就是对原始数据的完全拷贝;逻辑拷贝就是只针对发生过改变的数据进行拷贝。两种拷贝技术虽然都能够将数据恢复到某一个时间点,但是其也各有有缺点:
物理拷贝的优点是管理简单,不需要监控目标数据的状态,直接将所有数据拷贝到另外一个地方,而且可以作为数据备份直接保存起来。它的缺点是需要最大的存储空间,需要和目标数据一样大的空间才能将其完全拷贝下来。
逻辑拷贝的优点就是节省空间,一般来说,经常发生改变的数据只占所有数据的20%-30%,这样逻辑备份可以节省出70%左右的存储空间。但是逻辑备份也有它的缺点,因为它只是保存了发生改变的数据,所以如果目标数据发生损坏的话,快照也无能为力。当前文件系统和备份软件流行的写入时拷贝技术(copy on write)就是属于逻辑拷贝。
虽然快照技术已经在存储行业中得到了广泛的应用,但是很多用户会对其产生误解,现在对于一些常见的问题进行解释:
快照 VS. 镜像
物理拷贝快照和镜像的工作方式是一样的,都是将某个目标数据源的内容完整的拷贝到另外的地方,但是快照是在某个时刻点的拷贝,过后目标数据的变化将不再被记录,而镜像是时时刻刻都要保证目标数据和拷贝数据的一致性。
两者的目的也不同,快照的目标是能够在系统发生错误的时候恢复到之前的,而镜像的目的是为了保证数据冗余,在数据源发生故障的时候迅速恢复。如果用户将某个文件误删除,那么如果用户之前做过快照,就可以回复出来;如果用户做的是镜像,那么镜像文件下的该文件也会丢失,无法恢复。
反过来说,如果用户的目标数据源损坏,所有数据丢失,那么快照只能恢复到最近的一个快照上,会丢失最新修改的数据,而镜像可以迅速恢复出所有的数据,保证业务的连续性。
而逻辑拷贝快照和镜像完全不同,没有可比性。
如果LUN损坏,可以利用对LUN的快照进行恢复吗?
回答这个问题需要先了解一下快照是基于逻辑拷贝的还是物理拷贝的,如果LUN损坏,物理拷贝的可以恢复,逻辑拷贝就不可以了。不同的存储设备厂商用的是不同的拷贝技术,需要查清楚自己使用的存储设备才能搞清楚这个问题。
IBM Flashcopy采用按需复制和虚拟映像;
Sun Instant image采用虚拟映像和按需复制;
EMC timefinder和HDS shadow Image采用中断镜像;
Compaq Volume replicator采用虚拟映像;
EMC Symmetrix系列和CLARiiON系列采用中断镜像和虚拟映像;
在介绍了快照技术的基本原理之后,让我们来讲述一下如何在storage foundation中使用快照技术。
storage foundation快照类型
在storage foundation中有卷级别的快照和文件系统级别的快照,卷级别的有三种:分别是传统卷快照、完全即时卷快照(full size instant snapshot)和空间优化即时卷快照(space-optimized instant snapshot);文件系统级别的快照分为两种:文件系统快照和检查点快照(storage checkpoint)。它们的快照方式如下表所示:
表一:storage foundation快照类型
由该表可以看出,storage foundation为不同级别的快照提供了多种实现方式,用户可以根据自己的需求,选择适合自己的快照。现在我来介绍一个每一种快照的原理和使用方法:
1. 传统卷快照
传统卷快照就是将storage foundation上面的某个卷或者卷中的某个字卷(plex)在某一时间点做一个镜像拷贝,将其数据拷贝到另一个同样大小的卷中。拷贝出来的卷可以单独保存以便恢复,也可以在不需要的时候被销毁重用。因为它是将目标数据完整的拷贝到另外的地方,所以其属于物理拷贝。
[用法]
1, 创建一个数据卷:
# vxassist -g test make datavol 1g
2, 为该数据卷创建一份镜像:
# vxassist -g test snapstart datavol
3, 将该镜像拷贝到另外一个卷snapvol中
# vxassist -g test snapshot datavol snapvol
4, 查看拷贝状态,如图所示,注意snapvol所写入的磁盘(sd)是datavol的一部分,其实就是datavol的镜像:
5, 如果数据源损坏,需要恢复,只需要对快照做如下操作
# vxassist -g test snapback snapvol
然后snapvol的数据会恢复到datavol中,用户可以立刻访问到其中的数据。
6, 如果需要将snap做成一个独立的卷,而不是datavol的快照
# vxassist -g test snapclear snapvol
7, 如果需要删除快照卷:
# vxassist -g test remove volume snapvol
2. 完全即时卷快照
完全即时卷快照和传统卷快照很相似,因为它也需要与目标卷同样大小的卷来保存数据。完全即时卷备份有两个优点:一是其快照卷不需要被初始化,在创建卷之后就可以使用;二是它利用了写入时拷贝技术,可以选择物理拷贝或者逻辑拷贝两种方式。
[用法]
1, 为数据卷的镜像做好准备,包括提供存储空间,设置异步传输等等;
# vxsnap -g test prepare datavol
注意,这里使用的是vxsnap命令而不是上文的vxassist,因为这里使用的是SF特有的特性,不再是传统的用法;
2, 查看一下现在卷的状态
注意,这里SF为快照创建了一个空间,但是这里的大小是270k(544个存储单元,一个单元是512字节),这就说明该快照是逻辑快照,不是把全硬盘拷贝的物理快照。
3, 为改数据卷创建一个镜像:
# vxsnap -g test addmir datavol
4, 查看一下现有卷的状态:
由图可知,SF为数据卷创建了两个子卷(plex),一个是datavol-02,一个是datavol_dc1-02。
5, 自己创建一个快照卷,并且同样初始化:
# vxassist -g test make snapvol 1g (注意,快照卷大小必须和数据卷相同,否则会失败)
# vxsnap -g test prepare snapvol
6, 将目标卷快照到快照卷:
# vxsnap -g test make source=datavol/snap=snapvol
7, 查看一下现在的卷状态:
8, 利用快照卷可以保证数据的安全:
# vxsnap -g test refresh snapvol source=datavol (从数据源更新快照)
# vxsnap -g test reattach snapvol source=datavol (将快照内容恢复数据源,快照被删除)
# vxsnap -g test restore datavol source=snapvol (从快照内容恢复数据,快照不会被删除。注意这里的源内容是snpavol了,说明是从snapvol恢复数据到数据卷datavol)
#vxsnap -g test dis snapvol (将快照卷与数据卷分离,快照卷就可以独立使用,不再保存数据卷的快照)
9, 删除快照卷
# vxedit -g test -rf rm snapvol
3. 空间优化即时卷快照
空间优化卷是利用写入时拷贝技术,将快照保存到磁盘组的缓冲存储中,因为存储缓冲的空间要求小于一个完整的卷,所以称为空间优化卷快照。如果缓冲区空间不足,可以利用storage foundion,在磁盘组中动态增大,而且多个卷快照可以共享同样的缓冲存储区。
[用法]
空间优化即时卷快照的用法和完全卷快照的用法非常相似,这里讲指出其中的不同之处即可。
1, 在完全卷即时快照中,创建一个快照卷的命令是:
# vxsnap -g test make source=datavol/snap=snapvol
而在空间优化即时卷快照中,需要指定cache的大小:
# vxsnap -g test make source=datavol/snap=snapvol/cachesize=1g (这里指明cache的大小是1g)
2, 在第九布删除快照的时候,需要多做两步去删除快照
1)# vxcache -g test stop cache (停止cache的运行)
2)# vxedit -g test -rf rm cache (删除cache)
4. 文件系统快照
文件系统快照需要讲目标文件系统和快照文件系统同时挂载起来,利用写入时拷贝技术,可以将目标文件系统发生改变的数据记录在快照文件系统,在以后恢复时使用。因为它只是拷贝发生改变的数据,所以属于逻辑备份。
[用法]
文件系统的快照比卷的快照更为简单,只需要将快照文件系统挂载到新的目标点,就可以实现快照。
1, 快照目标文件系统:
#/opt/VRTS/bin/mount -o snapof=/dev/vx/dsk/test/datavol /dev/vx/dsk/test/testvol /snapmnt/
该命令将快照文件系统testvol挂载到snapmnt目录,它监控的是datavol文件系统的改变。两个文件系统都可以访问。
2, 将快照文件系统备份:
# vxdump -cf /dev/rmt/0 /snapmnt (最大化保护数据安全)
3, 删除快照文件系统:
# umount /snapmnt/
5. 检查点快照
检查点技术是SF的一个特性,它能够在某一个时刻迅速的在目标文件系统上创建出检查点文件。如果目标数据损坏,可以通过挂载检查点的数据来恢复。因为检查点是保存在文件系统上面的,所以再其没有被删除的情况下会一直存在。如果文件系统即将达到上限的时候,SF才会自动的清理检查点文件。
[用法]
1, 创建一个检查点快照:
# fsckptadm -v create tax_12am /data (在上午12点为税务数据做了一个名为tax_12am的检查点快照)
2, 将快照挂载到其他的文件系统:
# /opt/VRTS/bin/mount -o ckpt=tax_12am /dev/vx/dsk/test/datavol:tax_12am /mnt (注意在ckpt 和 设备路径两个地方都要指明传见的检查点名字tax_12am)
3, 显示快照信息:
# fsckptadm -l list /mnt
通过该图可以看出,挂载点下由两个检查点,分别是11点和12点,现在是12点的被挂载。另外那个unnamed的检查点是做文件系统快照时候留下的,因为其没有固定的名称,所有再重启系统后会丢失,而检查点快照不会丢失。
4, 备份改快照到磁带中:
# vxdump -cf /dev/rmt/0 /mnt
5, 卸载文件系统:
# umount /mnt
检查点快照和文件系统快照看起来好像差不多,他们的差异在哪里呢?入下表所示:
本文清晰地介绍了各种快照技术的应用,用户可以根据自己的需求,选择不同的快照系统了。请记住,快照是为了在不停止业务的情况下进行数据复制的,利用快照和备份技术,可以最大化的保护您的数据安全,以后即时丢了什么数据,也不用担心了。部署好一个快