分类: 服务器与存储
2008-06-12 23:44:12
快照的目的在于能够记录出某一个时刻的数据信息并将其保存,如果之后发生某些故障需要数据恢复的时候,可以通过快照来将数据恢复到之前时间点的状态,而该时间点之后的数据都会丢失。备份系统是快照技术的主要应用领域之一,当备份软件需要备份某些不能停止运行的关键业务的时候,利用快照技术可以将某时间点的所有数据信息保存并备份,不会影响到业务的正常运行。
快照技术分为两类:物理拷贝和逻辑拷贝,物理拷贝就是对原始数据的完全拷贝;逻辑拷贝就是只针对发生过改变的数据进行拷贝。两种拷贝技术虽然都能够将数据恢复到某一个时间点,但是其也各有有缺点:
物理拷贝的优点是管理简单,不需要监控目标数据的状态,直接将所有数据拷贝到另外一个地方,而且可以作为数据备份直接保存起来。它的缺点是需要最大的存储空间,需要和目标数据一样大的空间才能将其完全拷贝下来。
逻辑拷贝的优点就是节省空间,一般来说,经常发生改变的数据只占所有数据的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