快照建立方法、 系统及应用服务器 【技术领域】
本发明涉及快照技术领域, 具体涉及快照建立方法、 系统及应用服务器。背景技术 因 特 网 小 型 计 算 机 系 统 接 口 (iSCSI, Internet Small Computer SystemInterface) 是一种基于传输控制协议 (TCP, Transmission Control Protocol)/ 因 特网协议 (IP, Internet Protocol) 的 SCSI 传输协议, 用于在应用服务器和存储系统之间 通过 IP 网络来传输 SCSI 命令和数据。目前, iSCSI 技术已经标准化如 : RFC3720、 RFC3721 等, 并且在业界逐步取得广泛应用。
图 1 为 iSCSI 协议的典型应用环境, 如图 1 所示, 应用服务器上安装有 iSCSI 发起 者 (initiator) 模块, 存储设备中集成一个 iSCSI 目标者 (target) 模块。应用服务器的 initiator 将 SCSI 命令 ( 可以包含数据 ) 封装在 iSCSI 报文中, 通过 IP 网络发送给 target, 存储设备对每个 iSCSI 报文进行处理, 取出其中的数据并写入到存储介质如 : 磁盘中。
当客户存在容灾需求时, 可以对存储设备上的逻辑单元 (LUN, LogicUnit Number) 建立快照。通过在不同的时间点建立快照, 以达到保护 LUN 中的数据的目的。
现有方案中, 是在应用服务器上安装 initiator 软件或者拥有 initiator 功能的 硬件, 在存储设备上, 由管理员手动配置, 将存储区域网络 (SAN, StorageArea Network) 资 源分配给应用服务器, 然后应用服务器通过 initiator 与存储设备的 target 建立连接, 对 分配给应用服务器的 SAN 资源进行数据读写。如果需要建立快照, 则建立快照的过程如图 2 所示, 其具体步骤如下 :
步骤 201 : 存储设备管理员准备在存储设备上创建快照, 触发存储设备向应用服 务器发送快照通知。
存储设备上可设置有快照按钮, 管理员通过点击快照按钮, 触发存储设备发送快 照通知。
步骤 202 : 应用服务器的快照代理接收快照通知, 通知应用服务器上的应用程序 暂停数据读写同时刷新缓存, 向存储设备发送应用程序已暂停读写的通知。
步骤 203 : 存储设备接收应用程序已暂停读写的通知后, 为应用服务器的 LUN 创建 快照, 创建成功后, 向应用服务器发送快照创建成功通知。
步骤 204 : 快照代理接收快照创建成功通知, 通知应用程序重新开始数据读写。
需要说明的是, 若应用程序自身能够保证数据一致性, 则不需要在应用服务器上 安装快照代理, 此时, 存储设备可直接为应用服务器的 LUN 建立快照 ; 若应用服务器自身无 法保证数据一致性, 则需要在应用服务器上安装快照代理, 通过步骤 201 ~ 204 建立快照。
对于大型企业用户, 其存储设备往往由存储服务提供商提供, 存储设备由存储服 务提供商管理而并不由企业用户直接管理, 而应用服务器则在企业用户这边, 如图 3 所示, 这样, 应用服务器与存储设备是由不同的管理员来管理的。 在现有方案中, 快照的创建是由 存储设备发起的, 由存储设备管理员来操作。 由于创建快照对业务性能有一定影响, 所以一
般希望在业务比较空闲时进行。而只有应用服务器管理员才了解业务的空闲状况, 在现有 方案中, 是由应用服务器管理员首先告诉存储设备管理员的业务空闲情况, 然后存储设备 管理员根据该业务空闲情况, 制定一个计划来生成快照, 例如 : 通常选择每天晚上 12 点生 成快照, 此时业务流量最小。
但是, 现有方案的缺点是 : 一旦业务某天发生了变化, 例如 : 某天晚上 12 点的流量 非常大, 或者, 在某天中午 12 点企业希望对重要数据做一个快照进行数据保护, 那么就需 要迅速修改快照设置。 此时, 这些突发情况都需要在第一时间迅速操作, 但是由于快照创建 过程必须由存储设备管理员来控制, 非常不方便, 可能达不到数据保护的预期效果。因此, 现有方案将存储数据保护的控制权完全交给了存储设备, 而使用这些存储数据的应用服务 器却无法主动参与数据保护的过程, 导致数据保护的效果不理想。 另外, 现有的快照代理与 存储设备之间的消息使用的是各厂商自己的私有协议, 不利于互相兼容。 发明内容 本发明提供快照建立方法、 系统及应用服务器, 以优化存储数据保护效果。
本发明的技术方案是这样实现的 :
一种快照建立方法, 应用于基于 iSCSI 的 SAN 中, 根据应用服务器的业务空闲情况 在快照代理上配置快照创建条件, 该方法包括 :
应用服务器上的快照代理发现快照创建条件满足, 通知应用程序暂停数据读写同 时刷新缓存 ;
快照代理向存储设备发送快照建立请求, 存储设备接收该请求, 对所述应用服务 器的 LUN 建立快照。
所述存储设备对应用服务器的 LUN 建立快照之后进一步包括 :
存储设备建立快照成功, 向快照代理返回快照建立成功响应, 快照代理接收该响 应, 通知应用程序重新开始数据读写。
所述快照创建条件为 : 预设业务空闲时刻到来 ;
或者为 : 业务忙闲衡量参数值大于预设值。
所述快照建立请求承载在 iSCSi 协议的 NOP-OUT 报文上,
且, 将该报文中的保留字段取值为第一预设值, 以表示请求建立快照。
所述保留字段位于 NOP-OUT 报文的第 32 ~ 47 字节。
所述快照建立成功响应承载在 iSCSi 协议的 NOP-IN 报文上,
且, 将该报文中的保留字段取值为第二预设值, 以表示快照建立成功。
所述保留字段位于 NOP-OUT 报文的第 36 ~ 47 字节。
一种快照建立系统, 该系统位于基于 iSCSI 的 SAN 中, 根据应用服务器的业务空闲 情况在应用服务器上配置快照创建条件, 该系统包括 :
应用服务器, 发现预设快照创建条件满足, 通知应用程序暂停数据读写同时刷新 缓存, 向存储设备发送快照建立请求 ;
存储设备, 接收快照建立请求, 对所述应用服务器的 LUN 建立快照。
一种应用服务器, 该应用服务器位于基于 iSCSI 的 SAN 中, 包括 : 快照代理和应用 程序单元, 且, 根据应用服务器的业务空闲情况在快照代理上配置快照创建条件, 其中 :
快照代理, 发现预设快照创建条件满足, 向应用程序单元发送暂停数据读写同时 刷新缓存的通知, 向存储设备发送快照建立请求 ;
应用程序单元, 接收暂停数据读写同时刷新缓存的通知, 则暂停数据读写同时刷 新缓存。
所述快照代理进一步包括 :
用于接收存储设备发来的快照建立成功响应, 通知应用程序重新开始数据读写的 模块。
与现有技术相比, 本发明中, 根据应用服务器的业务空闲情况在快照代理上配置 快照创建条件, 快照代理发现快照创建条件满足, 则发起快照建立过程, 从而优化了存储数 据保护效果。
另外, 本发明实施例中, 通过将 iSCSI 协议的 NOP-OUT 报文的保留字段扩展为表示 请求建立快照, 将 NOP-IN 报文的保留字段扩展为表示快照建立成功, 使得在创建快照时, 不同厂商之间的快照代理和存储设备可以兼容。 附图说明
图 1 为 iSCSI 协议的典型应用环境示意图 ; 图 2 为现有的快照建立过程示意图 ; 图 3 为现有的企业用户的基于 iSCSI 协议的 SAN 的组网图 ; 图 4 为本发明实施例提供的在基于 iSCSI 的 SAN 中建立快照的方法流程图 ; 图 5 为本发明实施例提供的在基于 iSCSI 的 SAN 中建立快照的系统组成图。具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
图 4 为本发明实施例提供的在基于 iSCSI 的 SAN 中建立快照的方法流程图, 如图 4 所示, 其具体步骤如下 :
步骤 401 : 应用服务器上的快照代理发现预设快照创建条件满足, 通知应用程序 暂停数据读写同时刷新缓存。
预设快照创建条件可如下 :
一、 由应用服务器管理员根据应用服务器的业务空闲情况, 设置一个快照创建时 刻表, 将该时刻表配置在应用服务器上, 应用服务器根据该时刻表发起快照建立过程。
二、 应用服务器根据自身的业务忙闲衡量参数, 如 CPU 占用率等, 发起快照创建过 程, 例如 : 当应用服务器发起自身的 CPU 占用率大于预设百分比时, 发起快照建立过程。
步骤 402 : 快照代理向存储设备发送快照建立请求报文, 该报文中携带应用服务 器在存储设备上的 LUN 标识。
这里, 快照建立请求报文可以采用 iSCSi 协议的 NOP-OUT 报文, 将该报文中的保留 (Reserved) 字段取值为预设值如 : 0x01, 以表示请求建立快照。其中, 可采用第 32 ~ 47 字 节的 Reserved 字段。
以下是本步骤可以采用的 NOP-OUT 报文的结构 :
字节 | 0 | 1 | 2 | 3 |0|.|I|0x00 |1|Reserved | +......................+......................+......................+..................... 4|TotalAHSLength | DataSegmentLength | +......................+......................+......................+..................... 8| LUN or Reserved | +......................+......................+......................+..................... 12| +......................+......................+......................+..................... 16| Initiator Task Tag or 0xffffffff | +......................+......................+......................+..................... 20| Target Transfer Tag or 0xffffffff | +......................+......................+......................+..................... 24| CmdSN | +......................+......................+......................+..................... 28| ExpStatSN |+......................+......................+......................+.....................
32| Reserved : 0x01 |
+......................+......................+......................+.....................
48| Header-Digest(Optional) |
+......................+......................+......................+.....................
| DataSegment-Ping Data(optional) |
+......................+......................+......................+.....................
| Data-Digest(Optional) |
+......................+......................+.....................+.....................
步骤 403 : 存储设备接收快照建立请求报文, 根据报文中的 LUN 标识查找到 LUN, 对 该 LUN 建立快照。
步骤 404 : 存储设备建立快照成功, 向快照代理返回快照建立成功报文。
这 里, 快 照 建 立 成 功 报 文 可 采 用 iSCSi 协 议 的 NOP-IN 报 文, 将该报文中的 Reserved 字段取值为预设值如 0x21, 以 3 示快照建立成功。其中, 可采用第 36 ~ 47 字节 的 Reserved 字段。
以下是本步骤可以采用的 NOP-IN 报文的结构 :
字节 | 0 | 1 | 2 | 3 |
0|.|.|0x20 |1|Reserved |
+......................+......................+......................+.....................
4|TotalAHSLength | DataSegmentLength |
+......................+......................+......................+.....................
8| LUN or Reserved |
+......................+......................+......................+.....................
12|+......................+......................+......................+..................... 16Initiator Task Tag or 0xffffffff | +......................+......................+......................+..................... 20| Target Transfer Tag or 0xffffffff | +......................+......................+......................+..................... 24| StatSN | +......................+......................+......................+..................... 28| ExpCmdSN | +......................+......................+......................+..................... 32| MaxCmdSN | +......................+......................+......................+..................... 36| Reserved : 0x21 | +......................+......................+......................+..................... 48| Header-Digest(Optional) | +......................+......................+......................+.....................| DataS egment-Return Ping Data |
+......................+......................+......................+.....................
| Data-Digest(Optional) |
+......................+......................+......................+.....................
步骤 405 : 快照代理接收快照建立成功报文, 通知应用程序重新开始数据读写。
本发明实施例中, 当快照创建条件需要更改时, 应用服务器管理员直接更改配置 在快照代理上的快照创建条件即可。
图 5 为本发明实施例提供的在基于 iSCSI 的 SAN 中建立快照的系统组成图, 如图 5 所示, 其主要包括 : 应用服务器 51 和存储设备 52, 应用服务器 51 包括 : 快照代理 511 和 应用程序单元 512, 且, 根据应用服务器的业务空闲情况在快照代理 511 上配置快照创建条 件, 其中 :
快照代理 511 : 发现预设快照创建条件满足, 向应用程序单元 512 发送暂停数据 读写同时刷新缓存的通知, 向存储设备 52 发送快照建立请求报文, 该报文中携带应用服务 器在存储设备上的 LUN 标识 ; 接收存储设备 52 发来的快照建立成功报文, 向应用程序单元 512 发送重新开始数据读写的通知。
应用程序单元 512 : 接收快照代理 511 发来的送暂停数据读写同时刷新缓存的通 知, 则暂停数据读写同时刷新缓存 ; 接收快照代理 511 发来的重新开始数据读写的通知, 则 重新开始数据读写。
存储设备 52 : 接收快照代理 511 发来的快照建立请求报文, 根据报文中的 LUN 标 识查找到 LUN, 对该 LUN 建立快照, 建立快照成功, 向快照代理 511 返回快照建立成功报文。
以上所述仅为本发明的过程及方法实施例, 并不用以限制本发明, 凡在本发明的 精神和原则之内所做的任何修改、 等同替换、 改进等, 均应包含在本发明的保护范围之内。