当前的主流快照技术
一般而言,快照都要经过初始化、数据拷贝和终止几个处理阶段,其中数据拷贝是快照的技术核心,根据数据拷贝实现的方法将快照主流技术分为以下三类:分离镜像快照技术、按需复制快照技术和虚拟视图快照技术。
3.2.1分离镜像快照技术
分离镜像技术是基于硬件的快照,其基本思想是建立一个分离的可寻址的存储实体,包含真实的数据快照,可以在这个实体上执行操作[18]。
具体来说,分离镜像快照技术在快照时间点到来之前,首先要为源数据卷创建并维护一个完整的物理镜像卷,这一过程与标准的RAID1相似:同一数据的两个副本分别保存在由源数据卷和镜像卷组成的镜像对上。在快照时间点到来时,镜像操作被停止,镜像卷转化为快照卷,获得一份数据快照。快照卷在完成数据备份等应用后,将与源数据卷重新同步,重新成为镜像卷。对于要同时保留多个时间点快照的源数据卷,则必须预先为其创建多个镜像卷。
分离镜像快照的优点为:在快照命令发出之后立即就能得到一个完整的物理副本,不再需要额外的复制操作。快照操作的时间非常短,仅仅是断开镜像卷对所需的时间,通常只有几毫秒,这样小的“复制窗口”几乎不会对上层应用造成影响。
但是分离镜像快照也存在一些缺点:首先,这种快照技术缺乏灵活性,无法在任意时间点为任意的数据卷建立快照:如果源数据卷没有预先创建镜像卷,将无法建立快照;当一个镜像卷正处于重新同步状态时,也无法用于建立快照。其次,预先创建镜像卷占用了大量的存储资源,并极有可能造成资源的浪费。最后,快照时间点之前持续的镜像操作将会增加系统的开销,尤其当一个源数据卷同时维持多个镜像卷时。
3.2.2按需复制快照技术
按需复制快照技术在快照时间点之后,才开始建立一份快照时刻源数据卷的完整物理副本。存储子系统接收到快照操作请求,首先暂停上层应用;接着为源数据卷建立快照卷,并为其分配大于或等于源数据卷容量的存储空间;并建立一个控制位图,控制位图的每一个控制位表示源数据卷的一个复制单位是否已经被复制到快照卷,复制单位一般为数据块或磁道;控制位图建立之后,所有的控制位都被初始化,表示所有的数据块尚未复制。至此创建快照的操作已经完成,源数据卷的数据已经被逻辑复制到快照卷上,被暂停的上层应用恢复运行,源数据卷和快照卷都能被访问。此时源数据卷上的数据并没有被物理复制到快照卷上,快照卷实际上是空的。
快照建立之后,一个后台复制进程开始将源数据卷的数据块顺序复制到快照卷,并在控制位图上标记该数据块完成复制。如果上层应用要访问快照卷的某数据时,将首先检索控制位图:如果对应的控制位显示该数据还没有被复制到快照卷上,则从源数据卷访问实际数据,否则直接访问快照卷。当源数据卷上某数据要被更新时,如果该数据尚未完成复制,这些数据将首先被复制到快照卷上,并标记控制位图对应的控制位,然后才能更新源数据卷的数据,这种操作称为写前复制,也就是我们前面所提到的CoW;如果要更新的数据已经完成复制,则数据更新将直接进行,不再影响快照卷的操作。写前复制技术确保复制操作发生在更新操作之前,使快照时间点后的数据更新不会出现在快照卷上,保证了快照操作的原子性。按需复制快照的工作原理如图3-1所示。
按需复制快照在快照时间点之前,不会占用任何的存储资源,也不会影响系统性能;而且它在使用上非常灵活,可以在任意时间点为任意数据卷建立快照。在快照时间点,存储子系统要为快照卷分配存储空间,并建立控制位图,因此,产生的“复制窗口”的长度与源数据卷的容量成线性比例,一般为几秒钟。
通过后台复制进程和写前复制技术,源数据卷所有的数据块最终都将被复制到快照卷,得到源数据卷的完整物理副本,但完成这一过程的时间不仅与源数据卷的容量有关,而且还受到上层应用数据访问的影响,很难准确估算,可能需要几个小时甚至更长时间。
3.2.3虚拟视图快照技术
虚拟视图快照技术在快照时间点之后,只建立一份快照时刻源数据卷的逻辑副本,最终也不会产生完整的物理副本。这种快照技术也在创建快照时才建立快照卷,但只需分配相对少量的存储空间,用于保存快照时间点之后源数据卷中被更新的数据。由于被更新的数据通常仅占源数据卷容量很小比例,一般建议为每个快照卷保留源数据卷20%的空间,如果数据更新超过这一比例,快照将失效。
在虚拟视图快照技术中,每个源数据卷都有一个数据指针表,该指针表的记录数量等于源数据卷的数据块数量,每条记录保存着指向对应数据块的指针。在创建快照时,存储子系统为源数据卷的指针表建立一个副本,作为快照卷的数据指针表。当快照时间点结束时,快照建立了一个可供上层应用访问的逻辑副本,快照卷与源数据卷通过各自的指针表共享同一份物理数据。
快照创建之后,当源数据卷中某数据将要被更新时,为了保证快照操作的原子性,使用写前复制技术:首先将原始数据复制到快照卷的某个数据块,并修改快照卷数据指针表的对应记录,使其指向该数据块,最后才能更新源数据卷。对快照卷中数据的访问,必须查询数据指针表,根据对应数据块的指针确定所访问数据的物理存储位置。虚拟视图快照的工作原理如图3-2所示。
虚拟视图快照技术的“复制窗口”的长度也为几秒钟,但为快照卷分配的存储空间却大大减少;复制操作只在源数据卷发生更新时才发生,因此系统开销比后台进程复制源数据卷的全部数据要小得多。但是由于快照卷仅仅保存了源数据卷被更新的数据,此快照技术无法得到完整的物理副本,它对需要完整物理副本的应用是不适用的。
3.3 写前复制(CoW)策略
我们可以看到,在当前的主流快照技术中,都使用了如下同样的方法来保证数据的一致性。那就是,快照创建之后,当源数据卷中某数据将要被更新时,为了保证快照操作的原子性,均使用了写前复制技术。本小节我们将专门来讨论该策略。
下面我们以文件系统快照为例来讨论CoW策略[19]。文件系统快照是整个文件系统某一时刻的静态只读副本。在文件系统快照中采用CoW策略来保证副本的一致性,同时也能较容易地实现文件系统的活备份。
文件系统中的文件和目录都是由磁盘上的数据块构成的,文件系统级的快照是在数据块一级进行操作的。图3-3中显示了文件系统中的一个文件myfile.dat由磁盘上的3个连续数据块构成,内容分别为A,B和C。创建了快照S0后,S0中的myfile.dat仍由活动文件系统中原来的myfile.dat的3个物理块构成。
快照的CoW策略基本原理如下:当一个用户修改了该文件的数据后,快照S0中就要分配一个空块,将活动文件系统中的原数据块内容C复制到S0中,然后才将原数据块内容C改写为C'。这样一来,活动文件系统中myfile.dat的版本就包含数据块A,B和C'。快照中的myfile.dat旧版本则包含数据块A,B和C。结果如图3-4所示。
此后如果继续有对C块的操作,则直接对C'进行修改,快照中保存的始终是快照开始时刻的文件系统的一个静态副本,快照得到的数据是一个一致性得到保证的副本,而文件系统此时也可以进行正常的工作。文件的完整性和一致性也就都可以得到保证了。
前面所提到的当前主流快照技术可以说都是基于数据块层次的,无法保证文件或文件集的数据完整性和一致性,同时由于这些技术往往与存储设备相关,实施代价较高,移植性不好,也不适合我们的容灾备份系统。所以,为了保证数据一致性,本文将要实现的快照技术将是基于文件级的热快照。
阅读(640) | 评论(0) | 转发(0) |