2快照的作用
快照的作用主要是能够进行在线数据备份与恢复。当存储设备发生应用故障或者文件损坏时可以进行快速的数据恢复,将数据恢复某个可用的时间点的状态。快照的另一个作用是为存储用户提供了另外一个数据访问通道,当原数据进行在线应用处理时,用户可以访问快照数据,还可以利用快照进行测试等工作。所有存储系统,不论高中低端,只要应用于在线系统,那么快照就成为一个不可或缺的功能。[1]3快照的实现方式
当前实现快照有主要有两种技术,一种是第一次写时复制(Copy OnFirst Write,COFW),有时简称为写时复制(CopyOn Write,COW)。即在数据第一次写入到某个存储位置时,首先将原有的内容读取出来,写到另一位置处(为快照保留的存储空间,此文中我们称为快照空间),然后再将数据写入到存储设备中。而下次针对这一位置的写操作将不再执行写时复制操作。这种技术常在计算机相关的技术中经常初使用,其基本原理大同小异,只是面向的对象不同,适用的场合不一样。 从COW 的执行过程我们可以知道,这种实现方式在第一次写入某个存储位置时需要完成一个读操作(读原位置的数据),两个写操作(写原位置与写快照空间),如果写入频繁,那么这种方式将非常消耗IO时间。因此可推断,如果预计某个卷上的I/O多数以读操作为主,写操作较少,这种方式的快照实现技术是一个较理想的选择,因为快照的完成需要较少的时间。除此之外,如果一个应用易出现写入热点,即只针对某个有限范围内的数据进行写操作,那么COW的快照实现方式也是较较理想的选择。因为其数据更改都局限在一个范围内,对同一份数据的多次写操作只会出现一次写时复制操作。下图是写时复制的示意图:4快照的实现层次
计算机的存储结构是一个类似于 TCP/IP 一样的栈结构。栈中包括硬件与软件部分。栈中不同层为上层提供服务,同时利用下层的接口(如下图)。因此在实现上,快照可以在不同的栈层上实现。但是不同的层其效果及特点是不一样的。 一般来说,在应用层不太合适实现快照功能。因为不同的应用是千差万别的,因此需要针对不同的应用实现快照功能,这个代价也太高了。但在应用层实现快照也并不是说一无用处,如在应用层实现快照的一个典型的例子就是 vmWare 虚拟化软件中的快照功能。只是这种快照功能应用在存储系统中不现实。 其次在文件系统层实现快照与应用也是具有同样的缺点,就是需要针对不同的文件系统实现快照功能,这样的代价也很大。实现的快照的功能的文件系统基本上都是一些专用系统专为某个特定功能实现的文件系统。在这个层级上实现快照,缺乏灵活性和可扩展性。这个比较典型的例子就是ZFS。 而较为适宜实现快照功能的层应该为卷管理层以及物理层。在这两个层中都不与特定的应用及文件系统相关。这里比较典型的例子有Linux 的LVM。而在硬件层次上实现快照又通常有许多种,在这个层次上实现的快照一般为专用系统,好处是性能是各个方式中最好的。但是在这个层次上实现的快照也有一个不可避免的缺点,那就是由于不与特定的应用及文件系统关联,因此其就无法理解上层的应用逻辑,也就无法保证每个快照都处于数据一致性状态的。但是这个缺点是可以通过其他的方式减少或者解决的,比如在生成快照之前先对数据进行刷新操作,或者在恢复快照时对文件系统进行一致性检查等。5趋势
存储快照会取代备份吗? 第一代存储快照解决方案并不想取代备份。有更方便的功能比什么都重要。现代快照解决方案可以当作备份的替代品,只要他们采取措施保护数据。记住,快照和数据副本不一样。今天的技术几乎不可能在几秒钟之内创建多字节卷的副本。存储快照不创建真正的数据副本。 因此,为了使快照解决方案能真正取代传统备份,那么就需要一种能同时保护快照和原始数据的方法。通常,这意味着需要把数据和快照复制到一个镜像位置。[2]- 参考资料
-
1. 快照的作用主要是能够进行在线数据备份与恢复。 .IT168 .2011-6-24 [引用日期2012-11-6] .
2. 存储快照会取代备份吗? .TechTarget中国 .2012-11-5 [引用日期2012-11-6] .