存储快照技术主要是在
操作系统以及存储技术上实现的一种记录某一时间系统状态的技术。近来,Oracle等数据库厂家以及Vmware等虚拟化产品也把这种技术引入各自的数据保护当中。
存储中使用快照技术由于其广泛的实用性成为应用最广泛的。本文主要探讨的是各种不同的存储快照技术。
SINA对于快照的定义是:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。
由此我们可以看到快照的一些特性:
- 数学建模中通常包含指针技术
- 快照一旦生成,一定是记录了某一个时间点的系统的完全状态。
为什么要使用存储快照技术
- 瞬时备份:在不产生备份窗口的情况下,可以帮助客户创建一致性的磁盘快照,每个磁盘快照都可以认为是一次对数据的全备份。从而实现常规备份软件无法实现的分钟级别的RPO。
- 快速恢复:用户可以依据存储管理员的定制,定时自动创建快照,通过磁盘差异回退,快速回滚到指定的时间点上来。通过这种回滚在很短的时间内可以完成。大大的提高了业务系统RTO的水平。
- 应用测试:用户可以使用快照产生的虚拟硬盘的数据对新的应用或者新的操作系统版本进行测试,这样可以避免对生产数据造成损害,也不会影响到目前正在运行的应用。
- 报表打印等资源消耗较大的业务的分离:用户可以将指定时间点的快照虚拟硬盘分配给一个新的服务器,从而实现将报表打印等对于服务器核心业务会产生较大影响的剥离。使核心业务服务器运行更加平稳有效快速的运行。
- 降低数据备份对于系统性能的影响: 通常数据备份是在业务服务器上完成的。每次发起数据备份必然对当前业务系统运行性能造成影响。通过快照虚拟硬盘的提取后,备份工作可以转移到其他服务器上。从而实现了零备份窗口(针对应用主机),零影响的理想数据备份。
传统的存储快照技术(copy-on-write)
传统的存储快照技术以IBM Flashcopy/HDS Shadowimage等为代表,这类技术由于自动生成的能力不足,防御意外的能力比较弱,一般不用于自动备份,而是用于系统更新之前的一种计划内数据保存方式。
传统存储快照技术是基于时间点的复制,能够在一个存储单元中建立数据的完全卷拷贝。如果生产系统此时对某一个数据集合进行频繁的修改,在这种情况下产生一个时间点一致拷贝是比较困难的。当进行快照时,快照的源卷将会被冻结几秒钟;当快照拷贝的位图建立之后,源卷才可以继续进行I/O操作。当位图建立后,后台拷贝需要进行一段时间,但是在目标卷上看来,拷贝已经完成了。
基于写重定向的存储快照技术(Redirect Write)
通过写重定向来实现数据快照技术主要在NETAPP公司的存储和NAS中使用,NETAPP称为Snapshot,由于Snapshot只能提供只读的卷,如果需要对快照虚拟磁盘进行写操作,还需要配合Flexclone技术实现。
SnapShot是WAFL文件系统“任意位置写入”功能带来的一项突出优势。 一份SnapShot是文件系统的在线只读拷贝。创建文件系统的一份SnapShot仅仅需要几秒种的时间,并且除非原始文件被删除或者更改,数据快照并不占用额外的磁盘空间。只有修改活动文件系统中的数据块并写入磁盘中新的位置时,SnapShot才会占用额外的磁盘空间。
基于首次写入变更的存储快照技术(Copy-On-First Write)
基于首次写入变更的存储快照技术是由传统的Copy on write发展而来的,通过整合不同时间的不同快照,使他们之间建立关联性,从而回避了传统快照技术的在多个快照时对于性能和个数的影响。
这类技术主要是以美国飞康公司为代表的。飞康公司称之为Timemark。飞康Timemark 是一种基于时间点的和可定制策略的存储数据快照保护技术。Timemark可以按照客户要求定时的周期产生或者按照策略进行生成,每个数据卷可达到255个快照。由于Delta增量空间只有在数据变更的时候才会被占用,255个快照(相当于255份数据版本)只需要非常有限的空间就可以实现。另外,飞康近来发明了“录像”(Journal) 技术,任何一秒钟的数据可以迅速变成一个新的快照,使快照技术登上了一个新的高度。
快照技术的比较
传统的存储快照技术主要是针对每个存储资源时间点状态的单一保护。虽然同一存储资源也可以实现几份乃至十几份的快照,但是快照之间彼此是没有关联性的。正是由于这个缺陷,是当存储管理员对同一存储资源需要多个时间点的多份快照时,传统的存储快照技术遇到以下问题:
- 存储容量问题:传统快照技术通常是一份快照就需要一份磁盘空间,当客户需要的快照数量上百个之后,产生数百倍的空间占用,显然单一存储的空间局限性问题将暴露的非常突出。同时,其价格也将变得非常昂贵。因而,一般并不用于多份数据快照。实际上,这类快照技术的快照数量本身就十分少(如8个),也不会用于多个时间点的自动快照机制。
- 存储性能问题:由于不同时间产生的传统存储快照之间没有关联性,假如需要生成多个快照,一个磁盘块的写入很可能向多个快照空间发出保存当前时间点原始数据的指令,例如产生10个快照的话,就要将一份原始数据同样写入10个快照区域,这样产生的写惩罚十分惊人,而且数据库还需要产生短时冻结,大大降低系统性能。举例:一个系统中有12份快照,当一个数据需要写入时,在存储中将产生13个写操作和1个读操作。其对存储性能的影响根本无法被接受。
Redirect Write技术和Copy-On-First Write技术都可以在少量的空间内实现高达255份快照。但是由于实现机理不同,所以呈现出不同的性能特性,有着不同的使用领域。
Redirect write的Snapshot技术在数据写入是没有任何性能影响,但是由于破坏了原有数据在磁盘上的连续分配,如果应用程序在数据写入后存在大量连续读操作(如报表业务等),则会降低读性能,导致业务相应时间变长。此外,快照数据只能提供读操作,不能写入数据。对于大量业务环境并不符合要求。为了实现对虚拟快照磁盘的可读写访问,必然要使用Flexclone技术,因此每次写都会变成两次写,产生对写性能的影响,并且破坏了数据在磁盘上的连续分布。因此,我们认为Redirect Write技术比较适合写入数据量远远大于读数据量的应用系统,或者向NAS这种用来做归档和备份存储产品。但是对于当前绝大多数读写比3:1到10:1的数据中心级别的系统来讲,可能对业务系统产生性能影响。
Copy-On-First Write对于读操作和以前是一样的,没有任何影响。对于写操作,至多可能产生2次写和一次读操作。对于读写比3:1到10:1的数据中心级别的系统,通常至多产生5%的影响。客户可以通过牺牲很小的性能实现数据安全性的极大提高。因此,Copy-On-First Write快照技术更适合在数据中心等高端系统中帮助客户实现数据保护功能。