第9章网络存储备份系统在计算机系统中,备份是指拷贝特定的数据集到指定的存储设备上,当数据集丢失时,从相应的设备上读取这些额外拷贝重新恢复数据集。由于备份至少包含有数据集的一个副本,因此不仅需要大量的存储空间进行存放,而且必须对于这些备份数据进行高效的管理。传统上往往使用磁带库作为数据备份的目标设备,这主要是由于备份数据集往往很少改动,因此特别适合于磁带这种离线的设备。但是随着存储技术的发展和存储空间的廉价趋势,现有越来越多的存储设备可以作为备份资源。随着网络技术的发展,通过共享存储系统可以方便的为多个客户端提供高效备份服务,这样能够的优化存储资源的使用效率,并能够更好的管理各种备份数据。由于备份构成对于存储容量、性能有着巨大的需要,因此大规模存储系统往往必须为多个用户和应用提供备份服务。本章首先讨论备份系统的原理和实现技术,重点介绍一种基于网络的备份系统的设计结构和实现方法。本章设计的备份系统主要针对逻辑备份,将从网络备份系统的总体结构,以及设计方案入手,详细讨论基于存储网络的备份系统的软件设计,尤其是备份管理程序和备份客户端与备份源代理(即恢复目的代理)的设计与实现。9.1复制和镜像技术从为数据集建立拷贝的角度看,数据复制和镜像技术也是两种特殊的数据备份技术。在逻辑上数据复制更加强调数据拷贝的过程,而镜像是在时间维度上的保持拷贝和数据集更新的同步。而它们都是提高存储系统中数据可用性的重要技术,并且在很多方面都采用了相同的技术,如快照技术,因此在讨论普通意义上备份系统之前,先简单分析一下复制和镜像技术。数据复制可以分为两种级别,一是基于文件系统的备份复制技术,另一种是基于数据块和逻辑卷的复制技术。前者可以通过文件系统或者数据库的备份系统实现,对重要的文件和数据进行备份,如数据备份;而后者往往基于软硬件结合的方式实现,不必了解数据的含义,例如磁盘镜像。磁盘镜像是一个基于数据块层的功能,用设备虚拟化的基本形式使两个或者多个磁盘表现为一个逻辑磁盘形式,接受完全相同的数据。从镜像对中,对磁盘驱动器的相对优先级分析可以分为主/从镜像对,对等镜像对;从操作时间性可以分为同步、异步和半同步镜像;从空间上分为本地磁盘镜像和远程磁盘镜像。而镜像功能往往通过在I/O路径中增加镜像器实现。本地磁盘镜像往往结合RAID技术实现,而远程镜像往往涉及更为复杂的结构和技术。应用服务器应用服务器本地存储池交换网络远程存储池镜像代理镜像代理交换网络123564注:1.应用服务器发出I/O请求;2.镜像代理服务器截获I/O请求,并写本地存储池;3.镜像代理发送I/O请求到远程站点;4.远程站点的镜像代理执行I/O写操作;5.远程的I/O写操作完成,发回确认信息;6.本地的镜像代理向应用服务器发出I/O请求完成信号。图9.1同步远程镜像数据流程示意图同步的远程镜像技术的前提是本地和异地间通过高速的通道直接连接,它对网络的稳定性和性能都要很高的要求。实现同步的远程镜像技术有两种方法,一种是在主机端的文件系统的设备驱动层进行修改,把发给本地磁盘阵列的写I/O请求同时发送给异地的镜像磁盘阵列,当两个写I/O请求都完成后才认为请求完成,这类似于RAID1方式。另一种方法,就是在磁盘阵列的控制器中进行设计,把发给本地磁盘阵列的写I/O请求同时发送给异地的镜像磁盘阵列。当远程磁盘阵列响应后,本地磁盘阵列才回复主机I/O完成。这种方法的好处是对主机透明,但为了提高性能必须在两个磁盘阵列之间建立独立的通道。对于读I/O,没有同步的必要。图9.1显示了同步远程镜像过程。注:1.应用服务器发出I/O请求;2.镜像代理服务器截获I/O请求,并写本地存储池;3.镜像代理并不等待远程的确认信号,直接向应用服务器发出I/O请求完成信号。4.镜像代理发送I/O请求到远程站点;5.远程站点的镜像代理执行I/O写操作;6.远程的I/O写操作完成,发回确认信息;应用服务器应用服务器本地存储池交换网络远程存储池镜像代理镜像代理交换网络124635图9.2异步远程镜像数据流程示意图异步的远程镜像技术虽然不特别要求网络的实时性,但同时引入了本地和异地数据不一致的风险。异步的远程镜像技术同样通过主机系统或者磁盘阵列系统实现,和同步方式不同的是异步系统必须建立同步点或者叫做检查点,在检查点上两方数据是完全一致的。在检查点之后,本地系统依次向远地阵列发送自己收到的I/O,但保留所有I/O请求直到下一个检查点,当远程阵列确认完成到一个检查点之后,本地系统才释放这一批保留的I/O请求。图9.2显示了异步远程镜像过程。它也是远程容灾的核心技术之一。为了保证不影响主机的业务系统的正常运行,减小数据量,数据复制所采用的基本方法是快照技术。9.2备份系统概述数据备份是存储系统最重要应用之一,是保护用户数据的关键技术手段。虽然在线的镜像或者冗余技术能够有效的提高数据的可用性,但事实上,对于用户删除或者修改,这些在线冗余系统却无能为力,因此如果说前者那些在线冗余技术在空间维度上能够保证系统数据的可用性,那么备份系统能够进一步在时间维度上的保证数据的可靠性。实际备份有多种实现形式,从不同的角度可以对备份进行不同的分类:从备份策略来看,可以分为完全备份,增量备份,差分备份。完全备份就是拷贝整个文件系统的数据到备份设备。它最为简单,但有两个不利之处,首先是读写整个文件是一个非常费时的操作,其次每次都会需要大量的存储空间。而增量备份是一种更快、备份数据更少的策略,它在上次全备份基础上仅仅拷贝新生或者修改的文件,但是在恢复时,它需要检索整个备份文件修改链。差量备份即拷贝所有新的数据,这些数据都是上一次完全备份后产生或更新的。增量备份和差量备份的区别在于前者记录上一次备份(完全或者增量备份)以来的更新数据,而后者记录从上次完全备份以来的所有更新数据。按照备份时间来划分,可以分为即时备份和计划备份。前者需要马上开始备份任务,而后者仅在制定的时间到达时启动备份任务。按照备份种类来划分,可以分为系统备份和用户备份。从备份模式来看,备份过程可以分为物理备份和逻辑备份。物理备份又称为“基于块(block-based)的备份”或“基于设备(device-based)的备份”。它忽略文件的结构,把磁盘块直接拷贝到备份介质上,这避免了大量的寻址操作,直接提高了备份的性能。但为了恢复特定的文件,物理备份必须记录文件和目录在磁盘上的组织信息,因此它同样依赖于特定的文件系统。逻辑备份也可以称作“基于文件(file-based)的备份”。它能够立即将文件目录结构,通过遍历目录树拷贝所有整个文件到指定设备,它能够很方便的完成指定文件目录的恢复。根据备份服务器在备份过程中是否可以接收用户响应和数据更新,又可以分为离线备份和在线备份。许多备份程序需要整个文件系统在备份过程中保持文件系统的只读性质,当备份完成时才能进行写或者更新操作,这是一种简单的备份策略,但由于备份窗口相对很大,会降低系统的可用性。相反在线备份运行系统备份数据时的更新操作,但随着带来的就是数据一致性的问题。事实上,在线备份具有很多实现的困难之处,特别是在备份过程中目录的移动,或者文件的创建、增加、更新或者删除。对于在线备份,可以通过增加锁和检测修改机制能够避免一致性问题的产生。但是考虑到备份版本的问题,也经常使用快照技术。快照的基本思想是冻结或者维护一个文件系统当前的只读状态,并记录这个时刻的系统数据。全量快照是实现所有数据的一个完整的只读副本;为了降低快照所占用的存储空间,提出了写前拷贝(COW,Copy-On-Write)和ROW(RedirectonWrite,写时重定向)快照技术,写前拷贝基本想法是当正在备份的文件或数据库对象发生改变时,将磁盘上的原有数据块拷贝到一个临时磁盘位置,并使用一个特殊的位图索引标明原有块的位置以及临时存储的相应位置,类似于缓存索引,备份系统检测索引表判断下一个读取的数据块是否在临时位置,如果是,那么将就指导备份进程访问临时磁盘位置的原数据块;当备份完成时,清除位图索引,释放临时存储的数据块,提供给下一次使用。而写时重定向只包括新的写操作数据。快照技术对于前台应用性能的影响较小,每天可以建立多个快照。快照可以在磁盘阵列、文件系统、卷管理器、NAS系统或者备份软件中实现。如图9.3所示。快照首先要建立一个与主存储系统互为镜像且分离的可寻址的存储实体,备份操作在该存储实体上进行,而不是在主存储系统上进行,从而使备份不至于影响服务器正常运行。当备份结束时,由于主机可能在备份期间对主存储系统数据进行改写,从而使得镜像存储中的内容与主存储中不一致,为了镜像存储与主存储之间快速同步,在备份期间对主存储系统中的数据的改写要进行记录或缓存下来。服务器基本卷X快照卷物理视图卷x的快照逻辑视图图9.3磁盘卷的快照示意图快照是在完全读和增量读之间的权衡。每一个快照是一个完整的文件系统树,它在概念上类似与一个完全备份。然而,它的实现更类似于一个增量备份,因为快照和存档文件系统共享任何一个未被修改过的块;一个快照只需要对发生改变的块进行额外的存储。为了取得合理的性能,存储快照的设备必须有效的支持随机访问。快照主要分为两大类,一种是基于硬件的快照,利用卷映像技术执行磁盘驱动器上的数据拷贝。另一种是基于软件的快照,是通过内存作为缓冲区由软件提供系统磁盘存储的即时数据映像,这种方式存在缓冲区调度的问题。现今主要有四种快照技术:分离镜像(Split-Mirror)、写前拷贝CoW(Copy-on-Write)、重定向写RoW(RedirectonWrite)、日志结构的文件系统。第一种属于基于硬件快照,后三种属于基于软件的快照。为了减小备份任务的存储空间或者传输带宽的需要,许多备份系统可以在数据开始备份时进行压缩,与之相对应的是在恢复过程中需要解压备份数据。9.3备份系统基本结构一个典型的网络备份系统包括以下几个部件:备份引擎系统,备份源系统,网络和网络接口,备份设备和子系统。备份引擎系统运行主要的备份控制软件,并负责所有的管理功能,包括设备操作、备份计划、介质管理、数据库记录处理以及错误处理等。备份源系统备份计划、介质管理、数据库记录处理以及错误处理等。备份源系统是读取备份数据的软硬件系统,在很多情况下,备份源代理必须理解和记录数据在备份源主机上数据的物理和逻辑结构,例如很多数据库备份源模块需要理解内部的表结构和物理数据存放结构,使得一方面提高备份效率,另一方面在恢复过程中使得数据能够更快地被使用。备份设备和子系统在传统上往往指对于磁带机(库)的管理,目前能够扩展管理基于磁盘的备份系统(虚拟磁带库)。而网络和网络接口部件用户传输管理命令和实际的备份数据。备份系统往往依赖于存储系统的物理和逻辑结构。在主机系统中,备份设备(磁带机等)往往在执行备份任务前挂接到主机系统外部总线接口上,由主机上的备份软件执行具体的备份任务,在完成备份任务再卸载备份设备;在恢复过程中,也同样需要挂载备份设备到主机上,由主机上的恢复软件完成恢复任务。在这种结构中备份软件作为主机软件的组成部分执行备份任务。在中大型机系统中,备份设备(磁带库)在物理上往往直接连接在主机的外部总线上,无需物理的挂载和卸载过程,由备份软件负责何时进行备份或者恢复操作。也就是说,在这种系统中,主机必须参与整个备份/恢复工作,而备份源也往往是主机自己的应用数据(文件系统或者数据库)。在基于SAN的备份系统中,面向备份的磁带库和其他块级存储设备一起连接到光纤通道交换机上,因此在确定备份源和备份目的或者恢复源和恢复目的后,可以直接通过光纤通道从源设备备份或者恢复数据到目的设备,减少了主机的干预,提高了备份的性能和效率,特别对于物理备份完全可以通过光纤交换机或者磁盘阵列完成卷备份,而无需主机干预。并且在这种结构中备份设备可以为多个主机提供备份服务,提高了备份设备的利用效率。在基于LAN的备份系统中,备份系统可能具有独立的备份服务器,可以高效的为更多用户提供备份服务。针对日常产生的大量数据可以使用数据备份系统对关键数据进行备份。备份技术核心就是