基于存储阵列快照功能的数据实时备份方法及系统 【技术领域】
本发明涉及计算机数据备份技术, 尤其涉及基于存储阵列快照功能的数据实时备份方法。 背景技术 数据备份是容灾的基础, 是指为防止系统出现操作失误或系统故障导致数据丢 失, 而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程。
传统的基于文件拷贝的备份通常需要应用程序暂停运行, 然后开始拷贝数据, 等 拷贝完成后再恢复应用程序的运行。而且当数据量比较大时, 拷贝数据的时间一般会比较 长, 也就是通常说的备份窗口很大。这样会严重的影响业务系统的正常运行。
传统的基于文件拷贝的备份中, 备份数据通常需要经过局域网从应用服务器拷贝 到备份服务器上, 然后保存到磁带中。 由于备份数据量一般都非常大, 在备份期间会占用大 量的局域网络带宽, 对用户的正常业务使用造成一定程度的影响。
传统的基于文件拷贝的备份中, 备份数据对象通常需要在不被其他应用所访问使 用的时候才能进行访问备份, 会对用户的正常业务带来影响。此外, 为了实现数据在线备 份, 传统的备份方案都是基于应用服务器的, 需要占用应用服务器的大量 CPU 和内存资源。 因此也会对用户的正常业务造成一定影响。
发明内容 本发明提供了基于存储阵列快照功能的数据实时备份方法及系统, 可实现零备份 窗口, 并且能够极大节省应用服务器资源, 同时备份过程对应用服务器不会造成性能上的 冲击。
本发明实施例提供了一种基于存储阵列快照功能的数据实时备份方法, 包括如下 步骤 :
A、 将存储阵列的源卷加载到应用服务器上, 用以存储应用服务器的数据文件 ;
B、 存储阵列生成所述源卷的快照卷 ;
C、 建立快照卷到备份服务器的映射关系, 并将快照卷加载到备份服务器。
较佳地, 步骤 C 之后进一步包括 :
D、 备份服务器将所加载的快照卷的数据备份到介质服务器中。
较佳地, 步骤 D 之后进一步包括 : 从备份服务器上移除加载的快照卷, 并删除快照 卷的映射信息。
较佳地, 所述介质服务器为磁带库。
较佳地, 所述应用服务器的文件系统为新技术文件系统 NTFS。
本发明实施例还提供了一种基于存储阵列快照功能的数据实时备份系统, 包括应 用服务器、 备份服务器和存储阵列 ;
所述应用服务器包括备份代理模块, 备份代理模块用于加载存储阵列的源卷以存
储自身的数据文件, 以及命令存储阵列生成源卷的快照卷 ;
所述存储阵列用于根据来自应用服务器的命令, 生成所述源卷的快照卷 ;
所述备份服务器用于建立快照卷到备份服务器的映射关系, 并将快照卷加载到备 份服务器。
较佳地, 该系统进一步包括介质服务器 ; 所述备份服务器进一步用于将所加载的 快照卷的数据备份到介质服务器。
较佳地, 所述备份服务器包括 : 备份处理模块、 备份前处理脚本、 备份后处理脚本、 脚本应用程序接口 ;
所述备份处理模块用于 : 在进行备份之前调用备份前处理脚本 ; 在进行备份时将 数据从快照卷中移动到介质服务器 ; 在备份完成后调用备份后处理脚本 ;
备份前处理脚本用于命令应用服务器对存储阵列的源卷进行快照生成, 调用脚本 应用程序接口对生成的快照添加映射并且将生成的快照卷加载到备份服务器 ;
备份后处理脚本用于调用脚本应用程序接口从备份服务器上移除加载的快照 卷;
所述脚本应用程序接口用于在备份前处理脚本或备份后处理脚本的调用下与存 储阵列通信。
较佳地, 所述备份代理模块包括卷映射拷贝服务 VSS 请求端、 VSS 服务模块、 VSS 硬 件提供模块、 快照代理模块和 VSS 编写器 ;
VSS 请求端用于向 VSS 服务模块发送建立快照的服务请求, 以及接收 VSS 服务模块 导出的快照信息 ;
所述 VSS 服务模块用于根据 VSS 请求端的请求, 刷新并保持 VSS 编写器, 与 VSS 硬 件提供模块交互进行快照操作, 完成后释放 VSS 编写器, 并将快照卷的读写属性设置为只 读;
VSS 硬件提供模块用于根据 VSS 服务模块的指令, 通过快照代理模块命令存储阵 列生成源卷的快照卷 ;
快照代理模块用于根据 VSS 硬件提供模块的指示, 与存储阵列进行通信。
较佳地, 所述 VSS 请求端进一步包括 CLI 操作单元、 备份代理单元和日志记录单 元;
日志记录单元用于记录跟踪信息并将相关信息记录到日志文件中 ;
CLI 操作单元提供了用户命令接口, 负责接收处理 CLI 命令并将其解析成为 VSS 能 够使用的相关数据 ;
备份代理单元用于接收远端脚本或者应用的命令请求, 并将其送给 CLI 操作单 元, 同时等待 CLI 操作单元解析处理完成后, 返回执行结果给远端调用脚本或者应用。
从以上技术方案可以看出, 通过利用存储阵列快照功能, 实现将数据从应用服务 器备份到备份服务器, 能够极大节省应用服务器资源, 同时备份过程对应用服务器不会造 成任何性能上的冲击, 另外, 备份窗口为零, 从而导致应用服务器上的业务系统能够连续运 行, 不会被中断, 从而在一些需要业务系统不间断运行的场景中, 本备份方案能够发挥举足 轻重的作用, 同时, 备份后的数据迁移不走普通的局域网拷贝, 而是通过光纤通道进行迁 移, 也极大的减轻了 LAN 数据交换的负担。附图说明
图 1 为本发明实施例提供的数据实时备份系统示意图 ; 图 2 所示为本发明实施例提供的数据实时备份系统中的数据流与控制流示意图 ; 图 3 为应用服务器中的备份代理模块的逻辑结构图 ; 图 4 为一个完整的备份过程中备份代理模块之间的消息流程图。具体实施方式
针 对 现 有 的 数 据 备 份 方 法 存 在 的 问 题, 本发明提出利用存储阵列的快照 (Snapshot) 功能实现数据备份。
存储网络行业协会 (SNIA) 对快照的定义是 : 关于指定数据集合的一个完全可用 拷贝, 该拷贝包括相应数据在某个时间点 ( 拷贝开始的时间点 ) 的映像。快照可以是其所 表示的数据的一个副本, 也可以是数据的一个复制品。快照的作用主要是能够进行在线数 据恢复, 当存储设备发生应用故障或者文件损坏时可以进行及时数据恢复, 将数据恢复成 快照产生时间点的状态。快照的另一个作用是为存储用户提供了另外一个数据访问通道, 当原数据进行在线应用处理时, 用户可以访问快照数据, 还可以利用快照进行测试等工作。 存储阵列快照功能可以对一个或多个逻辑卷做出瞬间快照, 也就是那一时刻的源 逻辑卷的完整拷贝。 本发明正是利用存储阵列的这一功能, 对源卷进行快照生成, 并利用生 成的快照卷进行在线数据备份。快照卷一方面可以作为最终备份可以实现快速恢复, 另一 方面可以结合第三方备份软件, 将数据从快照卷上再备份到备份介质上, 比如磁带库。
需要注意的是, 这里的快照生成都是数据块一级的操作, 无法保证应用系统文件 级别的数据一致性, 因此, 为了保证文件系统级别的数据一致性, 还需要在对源卷制作快照 之前使上层应用禁止对源逻辑卷进行数据块一级的写操作, 从而能保证生成的快照在上层 应用所见到的备份数据的一致性, 这也是本解决方案关注的焦点之一。
为使本发明技术方案的原理、 特点及技术效果更加清楚, 以下通过具体实施例对 本发明方案进行进一步详细阐述。
图 1 为本发明实施例提供的数据实时备份系统示意图。 该系统包括存储阵列 101、 应用服务器 102、 备份服务器 103、 可能还包括介质服务器 104。其中, 存储阵列 101 包括源 卷, 以及所述源卷的快照卷。存储阵列 101 的源卷加载到应用服务器 102 上, 用以存储应用 服务器的数据文件。存储阵列 101 的快照卷到备份服务器 103 具有映射关系, 并将快照卷 加载到备份服务器 103, 备份服务器 103 可以利用快照卷中的备份数据对应用服务器 101 的 数据进行快速恢复 ; 备份服务器 103 将所加载的快照卷的数据备份到介质服务器 104 的存 储中实现进一步的备份。介质服务器 104 通常可以是磁带库。该备份过程中利用了存储阵 列 101 的快照功能。
图 2 所示为本发明实施例提供的数据实时备份系统中的数据流与控制流示意图。
数据流包括 :
I: 存储阵列 101 的源卷加载到应用服务器 102 上面, 用以存储数据文件。
II : 存储阵列 101 的快照卷映射到备份服务器 103 用以拷贝备份数据。
III : 备份数据迁移到磁带库 105。
控制流
①: 备份服务器 103 的备份处理模块在进行备份之前调用备份前处理脚本。
②: 备份前处理脚本调用备份代理模块, 命令应用服务器 102 的备份代理模块对 存储阵列 101 的源卷进行快照生成。
③: 备份代理模块与存储阵列 101 通信, 存储阵列 101 生成源卷的快照卷。
④: 备份前处理脚本调用脚本应用程序接口 (API) 对生成的快照添加映射并且将 生成的快照卷加载到备份服务器。
⑤: 脚本 API 与存储阵列 101 通信, 建立快照卷到备份服务器 103 的映射关系, 并 将快照卷加载到备份服务器 103。
⑥: 备份处理模块将数据从快照卷中移动到磁带库 105 中。
⑦: 备份完成后, 备份处理模块调用备份后处理脚本。
⑧: 备份后处理脚本调用脚本 API 从备份服务器 103 上移除加载的快照卷。
⑨: 脚本 API 与存储阵列 101 通信, 删除快照卷的映射信息。
本发明实施例中, 应用服务器 102 中使用的文件系统为新技术文件系统 (NTFS, New Technology File System)。 为了实现对 NTFS 文件系统卷的一次完整的以及稳定可用的备份, 备份操作需要 处理以下关注点 :
1、 备份过程中无法访问的文件的处理。
2、 不一致的文件状态的处理。
3、 文件系统的元数据 (Meta-data) 的处理。
4、 最小化服务中断的时间。
为了实现对存储阵列的操作, 以及对 NTFS 文件系统的操作, 本发明实施例方案需 要实现一个中间的备份代理软件, 备份代理软件主要的工作就是控制 NTFS 文件系统的相 关操作以及对 NTFS 文件系统所在源逻辑卷生成快照的操作。
图 3 为应用服务器 102 中的备份代理模块的逻辑结构图。该备份代理模块包括卷 映射拷贝服务 (VSS, Volume Shadow copy Service) 请求端 301、 VSS 服务模块 305、 VSS 硬 件提供模块 306、 快照代理模块 307、 VSS 编写器 308。
其中, VSS 服务模块 305 用于根据 VSS 请求端的请求, 刷新并保持 VSS 编写器, 与 VSS 硬件提供模块交互进行快照操作, 完成后释放 VSS 编写器, 并将快照卷的读写属性设置 为只读。VSS 服务模块 305 使用 “IOCTL_VOLSNAP_FLUSH_AND_HOLD_WRITES ” 以及 “IOCTL_ VOLSNAP_RELEASE_WRITES” 两个 IO 控制 (IOCTRL) 命令来处理文件系统级别的数据一致性 问题, 通过这个两个控制命令, 能够保证备份数据的一致性。具体地, 当 VSS 服务器模块 收到 “IOCTL_VOLSNAP_FLUSH_AND_HOLD_WRITES” 的 IO 控制消息后, 会将 VSS 编写器缓存中 数据刷新到磁盘中, 并阻塞 VSS 编写器对磁盘的 I/O, 使 VSS 编写器进入保持 (HOLD) 阶段, 本 I/O 控制过后, 磁盘处于只读状态 ; 而当 VSS 服务器模块收到 “IOCTL_VOLSNAP_RELEASE_ WRITES” 的 IO 控制消息后, 将释放编写器对磁盘的 I/O 操作, 编写器会将在保持阶段所缓存 的对磁盘的 I/O 数据刷新到磁盘中, 从而保证备份数据以及应用数据的一致性。
而对于应用级别的系统一致性问题, 需要应用程序的编写器 (Writer) 来处理自 身打开的文件的一致性, 例如 SQL Server 等应用, 如果应用程序没有提供 “Writer” , 那么,
VSS 所备份的则是保证系统级别的一致性的文件备份。 对于上层应用来说, 需要在 VSS 服务 模块 305 保持住系统 IO 以后, 应用所打开的文件, 需要应用本身来维护相关的状态。也就 是应用程序需要提供编写器, 如果应用不具备编写器, 那备份出来的数据就是操作系统级 别的一致性备份。
快照代理模块 307 负责与存储阵列进行通信, 例如对逻辑卷进行快照等操作。
VSS 硬件提供模块 306 用于根据 VSS 服务模块 305 的指令, 通过快照代理模块 307 命令存储阵列生成源卷的快照卷。
VSS 请求端 301 用于向 VSS 服务模块发送建立快照的服务请求, 以及接收 VSS 服务 模块导出的快照信息。VSS 请求端 301 中进一步包括命令行界面 (CLI) 操作单元 302、 备份 代理单元 303 和日志记录单元 304。日志记录单元 304 用于记录跟踪信息并将相关信息记 录到日志文件中。 CLI 操作单元 302 提供了用户命令接口, 负责接收处理 CLI 命令并将其解 析成为 VSS 能够使用的一些相关数据。备份代理单元 303 是一个服务程序, 它负责接收远 端脚本或者应用的命令请求, 并将其送给 CLI 操作单元 302, 同时等待 CLI 操作单元 302 解 析处理完成后, 返回执行结果给远端调用脚本或者应用。
图 4 示出了一个完整的备份过程中备份代理模块之间的消息流程。具体包括如下 步骤 : 步骤 401 至 404 : VSS 请求端与 VSS 服务模块交互, 建立 VSS 备份单元, 并对 VSS 备 份单元进行初始化, 设置备份状态, 收集编写器元数据。在此阶段, 备份会通过调用收集编 写器元数据 (GatherWriterMetadata) 接口完成初始化 VSS 请求端与 VSS 编写器以及填充 内部数据结构、 设定备份以及建立 VSS 请求端与 VSS 编写器通信等操作。
步骤 405 : VSS 服务模块通知 (Onidentify)VSS 编写器进行生成编写器的只读元数 据文档 (Metadata Document)。
步骤 406 : VSS 请求端与 VSS 服务模块交互, 设置备份的卷影副本内容。
步骤 407 : 将所有需要备份的所有组件增加到备份组件文档 (Backup Components Document) 的备份集合中去。
步骤 408-409 : 生成新的空的备份集合并将源卷加载到此备份集合中。
步骤 410 至 411 : 判断逻辑卷是否支持建立快照, 若是, 则准备建立快照, 生成 “PrepareForBackup“事件。
步骤 412 : 设置编写器状态, 使之准备进行备份。
步骤 413 : 收集编写器状态信息。
步骤 414 : 顺序提交所有卷影拷贝请求。
步骤 415 : 完成快照准备。
步骤 416 : VSS 编写器处理 “PrepareForSnapshot“事件, 通过此事件, 编写器能够 确定是否能能够参与备份操作。
步骤 417 : VSS 编写器接收 “Freeze“事件, 将自己的状态设置成适合进行 VSS 操 作。
步骤 418 : VSS 服务模块查询 VSS 硬件提供模块是否可以对源卷进行快照操作。
步骤 419 : 刷新编写器缓存到源卷并保持编写器。需要刷新并保持 VSS 编写器的 持续时间约 10 秒。
步骤 420 : 进行快照操作。 步骤 421 : 释放编写器 步骤 422 : 所有快照生成完毕后, 清除快照生成中产生的相关标志。 步骤 423 : VSS 编写器处理 “Thaw“事件, 用以将自己状态设置成正常状态。 步骤 424 : 对新生成的快照卷进行扫描, 填写相关结构信息。 步骤 425 : 通过调用 VSS 硬件提供模块设置新生成的快照卷, 使之在计算机上可见。 步骤 426 : 将计算机上可见的快照卷信息与 VSS 硬件提供模块提供的信息进行比 对, 从而进一步修正快照卷相关信息。
步骤 427 : 设置 VSS 硬件提供模块使之支持 “自动恢复 “卷影副本。
步骤 428 : 通知 VSS 编写器处理最终的编写器组件的元数据, 并且做清除操作 ( 删 除临时文件 )。
步骤 429 : 通知 VSS 硬件提供器相应的快照卷的读写属性变成 “只读 “, 直到步骤 436。
步骤 430 : 导出快照信息。
步骤 431-432 : 生成可移动卷影副本所需步骤, 与步骤 425、 426 相同。
步骤 433 : 收集编写器状态信息。
步骤 434 : 备份完成。
步骤 435 : 通知编写器处理 “备份完成” 事件。
步骤 436-438 : 断开或者删除快照备份集合。步骤 439-440 : 编写器处理 “备份关 闭” 事件。当备份应用关闭或者崩溃的时候, 需要处理此事件。
本方案可以实现零备份窗口, 也就是说在备份期间用户的应用程序可以继续运 行, 不会对业务系统造成任何影响。
本方案可以实现备份数据不经过局域网, 而是从快照卷上通过光线通道直接移动 到磁带介质中。避免了对用户的局域网上的正常业务带来影响。
本方案在系统运行过程中进行在线备份, 避免了对用户的正常业务带来影响。
本方案可以将快照卷挂载到备份服务器上或介质服务器上, 这样在将备份数据的 移动到备份介质上是就不需要占用应用服务器上的 CPU 和内存资源。
以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明, 凡在本发明的精 神和原则之内, 所做的任何修改、 等同替换、 改进等, 均应包含在本发明保护的范围之内。