SNIA(存储网络行业协会)对快照(Snapshot)的定义是:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制。
一、快照的价值
(1)快速备份和恢复:快照可迅速生成,并可用作传统备份和归档的数据源,缩小甚至消除备份窗口;快照存储在磁盘上,可以快速直接存取,大大提高数据恢复的速度。
(2)保存多个恢复点目标:基于磁盘的快照使存储设备有灵活和频繁的恢复点,可以快速通过不同时间点的快照恢复数据。
(3)重新定义数据用途:快照提供一份接近实况数据的拷贝,可供测试、归档、查询使用,既保护生产系统又赋予备份数据新的用途。
二、常见的快照技术
主要分为全拷贝快照和差分快照。全拷贝快照需要复制整个数据集,主要通过分离镜像来实现。全拷贝快照的特点是空间占用上每一次全拷贝快照需要与源盘相同大小的数据空间;创建过程中每一次全拷贝快照都需要完全数据同步;创建完毕后原卷的读操作不受影响,原卷的写操作受数据同步的影响。
差分快照:与全拷贝快照相比,差分快照仅处理上次快照之后出现的增量,这类快照需要较少的磁盘空间,但是需要更多的系统处理开销。差分快照有几种实现形式,常见的有写即拷贝(CoW)、写即重定向(RoW)和随处写(WA)。
写即拷贝(CoW)快照的写入和读取的大致流程是:在创建快照之前向源卷上地址1的块中写入数据p,然后创建快照,再向源卷上地址6的块中写入数据z,此时CoW方式快照先将源卷地址6块上的数据g拷贝到快照的数据空间,同时将在源卷上的旧地址和快照卷上的新地址的对应关系加入快照索引,最后将数据z写入地址6的块中。
从快照卷上读取数据时,通过查看快照索引来判断源卷上要读取的块是否被更新过,如没被更新,则从源卷读取数据,如被更新过,则从快照卷上读取原始数据。
写即拷贝快照的特点是源卷保持最新状态。在执行一个新的写操作时,首先读出写操作将要覆盖地址的当前数据,然后将读出的数据保存至快照空间并建立索引,新的写操作将数据写入源卷;建立快照后,对源卷的读路径基本无影响,源卷的写操作,受向快照卷拷贝原始数据的影响,效率有所降低,对快照进行读写时,因为需要查询索引,对读写路径都有影响。
写即重定向(RoW)快照的写入和读取的大致流程是:在创建快照之前向源卷上地址1的块中写入数据p,然后创建快照,再向源卷上地址6的块上写入数据z,与CoW方式不同的是,RoW方式的快照在处理时将新数据不是写入源卷而是写入快照卷,源卷地址6上的数据保持不变。
RoW方式的快照特点是在源卷执行新的写操作时新数据被写入快照空间并索引;读源卷时先检索快照索引,如果在快照索引中有记录则从快照卷上读取数据;读快照卷时,只需从源卷读取数据;当快照取消时,写日志必须全部执行以保证源卷数据被同步更新。创建快照之后,对卷的写操作基本无影响,源卷的读路径因为要查询快照索引会受影响。
随处写(WA)快照的实现以NetApp的WAFL文件系统的实现比较典型,WAFL文件系统本身可以理解成数据块的树型组织结构,其根部的数据结构描述了inode文件信息。这份根inode文件信息包含了对文件系统的所哟inode的描述,它包含诸如空闲块图和空闲inode图等元数据信息。WAFL通过对根inode做一个完全相同的拷贝来建立新的快照,当创建了快照的inode之后,它所指向的数据块与实际文件系统的根inode所指的数据块完全一致。当用户数据修改原文件系统的数据块C时,WAFL在随机找到的数据块C’上写入新数据,并将原文件系统指向新的数据块,而快照的inode指向没有修改的数据块C。
WA方式快照的特点是磁盘块被虚拟化,新的写操作定向到空闲块,而不是直接覆盖原数据块;其性能通常不受创建快照的影响,但是会受到磁盘碎片的影响。
三、总结
快照技术是一种有效防范数据丢失的方法,对于数据恢复是一个很有效的方法,它广泛应用在网络存储领域,对于网络数据的存储起着不可替代的作用。