Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
DATA SENDING METHOD, DATA RECEIVING METHOD AND STORAGE DEVICE
Document Type and Number:
WIPO Patent Application WO/2015/010327
Kind Code:
A1
Abstract:
Embodiments of the present invention provide a data sending method, a data receiving method and a storage device. The present invention comprises: a first storage device receiving a first write data request sent by a host, the first write data request carrying to-be-written data and address information; adding a first number to the to-be-written data and address information, and writing the to-be-written data and address information into a cache, the first number being a current time slice number; reading, from the cache, the to-be-written data and address information corresponding to the first number; modifying the current time slice number to identify information carried by a subsequent write data request; and sending the to-be-written data and address information to a second storage device. The present invention can improve the efficiency of data replication.

Inventors:
OUYANG JI (CN)
ZOU YE (CN)
Application Number:
PCT/CN2013/080203
Publication Date:
January 29, 2015
Filing Date:
July 26, 2013
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HUAWEI TECH CO LTD (CN)
International Classes:
G06F17/00; H04L69/40; G06F12/0866
Foreign References:
CN101126998A2008-02-20
CN101901173A2010-12-01
US6675177B12004-01-06
CN101634968A2010-01-27
Download PDF:
Claims:
权 利 要 求 书

1、 一种数据发送方法, 其特征在于, 包括:

第一存储设备接收主机发送的第一写数据请求, 所述第一写数据请求 携带待写入数据和地址信息;

将所述待写入数据和地址信息增加第一编号, 写入緩存, 其中所述第 一编号为当前时间片编号;

从所述緩存中读取所述第一编号对应的所述待写入数据和地址信息; 修改所述当前时间片编号以标识后续写数据请求携带的信息; 将所述待写入数据和地址信息发送给第二存储设备。

2、 根据权利要求 1 所述的方法, 其特征在于, 所述第一编号用于标 识当前的复制任务; 所述方法还包括:

记录第二编号, 所述第二编号是当前的复制任务之前, 最近一次已完 成的复制任务对应的编号。

3、 根据权利要求 2所述的方法, 其特征在于, 还包括:

从所述緩存中读取所述第二编号之后, 所述第一编号之前的编号对应 的待写入数据和地址信息;

将所述第二编号之后, 所述第一编号之前的编号对应的待写入数据和 地址信息发送给所述第二存储设备。

4、 根据权利要求 1所述的方法, 其特征在于, 还包括:

记录当前时间片编号, 所述当前时间片编号用于生成所述第一编号。

5、 根据权利要求 1 所述的方法, 其特征在于, 所述将所述待写入数 据和地址信息发送给所述第二存储设备包括:

根据所述待写入数据和地址信息生成第二写数据请求;

将所述第二写数据请求发送给所述第二存储设备。 6、 根据权利要求 5 所述的方法, 其特征在于, 所述地址信息包括逻 辑块地址 LBA;

所述根据所述待写入数据和地址信息生成第二写数据请求包括: 获得所述第二存储设备的数据卷的 ID;

生成所述第二写数据请求, 所述第二写数据请求包括所述待写入数 据、 LB A以及所述数据卷的 ID。

7、 一种数据接收方法, 其特征在于, 包括:

第二存储设备接收第一存储设备发送的地址信息;

当确定所述第一存储设备故障时, 所述第二存储设备根据所述地址信 息, 获取第一编号对应的待写入数据, 所述第一编号对应的地址信息与所 述接收到的地址信息相同, 所述第一编号为当前时间片编号之前的编号; 将所述第一编号对应的待写入数据和地址信息增加第二编号, 写入緩 存。 8、 根据权利要求 7所述的方法, 其特征在于, 还包括:

记录所述当前时间片编号, 所述当前时间片编号用于生成所述第二编

9、 根据权利要求 7所述的方法, 其特征在于, 还包括:

接收主机发送的读数据请求, 所述读数据请求包含所述接收到的地址信 确定所述接收到的地址信息对应的最新的编号是所述第二编号; 将所述第二编号对应的待写入数据发送给所述主机。

10、 一种存储设备, 其特征在于, 包括:

接收模块, 用于接收主机发送的第一写数据请求, 所述第一写数据请 求携带待写入数据和地址信息;

读写模块, 用于将所述待写入数据和地址信息增加第一编号, 写入緩 存, 其中所述第一编号为当前时间片编号; 从所述緩存中读取所述第一编 号对应的所述待写入数据和地址信息;

当前时间片编号管理器, 用于修改所述当前时间片编号以标识后续写 数据请求携带的信息;

发送模块, 用于将所述待写入数据和地址信息发送给第二存储设备。

11、 根据权利要求 10所述的存储设备, 其特征在于, 所述第一编号 用于标识当前的复制任务;

所述当前时间片编号管理器, 还用于记录第二编号, 所述第二编号是 当前的复制任务之前, 最近一次已完成的复制任务对应的编号。

12、 根据权利要求 11所述的存储设备, 其特征在于,

所述读写模块, 还用于从所述緩存中读取所述第二编号之后, 所述第 一编号之前的编号对应的待写入数据和地址信息;

所述发送模块, 还用于将所述第二编号之后, 所述第一编号之前的编 号对应的待写入数据和地址信息发送给所述第二存储设备。

13、 根据权利要求 10所述的存储设备, 其特征在于,

所述当前时间片编号管理器, 还用于记录当前时间片编号, 所述当前 时间片编号用于生成所述第一编号。

14、 根据权利要求 10所述的存储设备, 其特征在于,

所述发送模块, 具体用于根据所述待写入数据和地址信息生成第二写 数据请求; 将所述第二写数据请求发送给所述第二存储设备。

15、 一种存储设备, 其特征在于, 包括:

接收模块, 用于接收第一存储设备发送的地址信息;

查找模块, 用于当确定所述第一存储设备故障时, 所述第二存储设备 根据所述地址信息, 获取第一编号对应的待写入数据, 所述第一编号对应 的地址信息与所述接收到的地址信息相同, 所述第一编号为当前时间片编 号之前的编号;

写入模块, 用于将所述第一编号对应的待写入数据和地址信息增加第 二编号, 写入緩存。

16、 根据权利要求 15所述的存储设备, 其特征在于, 还包括: 当前时间片编号管理器, 用于记录所述当前时间片编号, 所述当前时 间片编号用于生成所述第二编号。 17、 根据权利要求 15所述的存储设备, 其特征在于, 包括: 所述接收模块, 还用于接收主机发送的读数据请求, 所述读数据请求包 含所述接收到的地址信息;

所述查找模块,还用于确定所述接收到的地址信息对应的最新的编号是 所述第二编号;

所述存储设备还包括发送模块, 所述发送模块用于将所述第二编号对应 的待写入数据发送给所述主机。 18、 一种存储设备, 其特征在于, 包括: 处理器、 存储器和通信总线; 其中, 所述处理器和所述存储器通过所述通信总线进行通信;

所述存储器用于保存程序;

所述处理器用于执行所述程序, 以实现:

接收主机发送的第一写数据请求, 所述第一写数据请求携带待写入数 据和地址信息; 将所述待写入数据和地址信息增加第一编号, 写入緩存, 其中所述第一编号为当前时间片编号; 从所述緩存中读取所述第一编号对 应的所述待写入数据和地址信息; 修改所述当前时间片编号以标识后续写 数据请求携带的信息; 将所述待写入数据和地址信息发送给第二存储设 备。

19、 根据权利要求 18所述的存储设备, 其特征在于, 所述第一编号用 于标识当前的复制任务; 所述处理器还用于:

记录第二编号, 所述第二编号是当前的复制任务之前, 最近一次已完 成的复制任务对应的编号。

20、 根据权利要求 19所述的存储设备, 其特征在于, 所述处理器还用 于: 从所述緩存中读取所述第二编号之后, 所述第一编号之前的编号对应 的待写入数据和地址信息; 将所述第二编号之后, 所述第一编号之前的编 号对应的待写入数据和地址信息发送给所述第二存储设备。

21、 根据权利要求 18所述的存储设备, 其特征在于, 所述处理器还用 于: 记录当前时间片编号, 所述当前时间片编号用于生成所述第一编号。

22、 根据权利要求 18所述的存储设备, 其特征在于, 所述处理器具体 用于: 根据所述待写入数据和地址信息生成第二写数据请求; 将所述第二 写数据请求发送给所述第二存储设备。

23、 根据权利要求 22所述的存储设备, 其特征在于, 所述地址信息包 括逻辑块地址 LBA; 所述处理器具体用于: 获得所述第二存储设备的数据 卷的 ID; 生成所述第二写数据请求, 所述第二写数据请求包括所述待写入 数据、 LB A以及所述数据卷的 ID。

24、 一种存储设备, 其特征在于, 包括: 处理器、 存储器和通信总线; 其中, 所述处理器和所述存储器通过所述通信总线进行通信;

所述存储器用于保存程序;

所述处理器用于执行所述程序, 以实现:

接收第一存储设备发送的地址信息;

当确定所述第一存储设备故障时, 所述第二存储设备根据所述地址信 息, 获取第一编号对应的待写入数据, 所述第一编号对应的地址信息与所 述接收到的地址信息相同, 所述第一编号为当前时间片编号之前的编号; 将所述第一编号对应的待写入数据和地址信息增加第二编号, 写入緩 存。 25、 根据权利要求 24所述的存储设备, 其特征在于, 所述处理器还用于 记录所述当前时间片编号, 所述当前时间片编号用于生成所述第二编号。

26、 根据权利要求 24所述的存储设备, 其特征在于, 所述处理器还用于 接收主机发送的读数据请求, 所述读数据请求包含所述接收到的地址信息; 确定所述接收到的地址信息对应的最新的编号是所述第二编号; 将所述第二 编号对应的待写入数据发送给所述主机。

Description:
数据发送方法、 数据接收方法和存储设备

技术领域

本发明涉及存储技术, 尤其涉及一种数据发送方法、 数据接收方法和存 储设备。 背景技术 数据容灾, 又称为远程数据复制技术, 是指建立一个异地的数据系统, 该系统是本地数据的一个可用复制。在本地数 据及整个应用系统出现灾难时, 系统至少在异地保存有一份可用的关键业务的 数据。

典型的数据容灾系统包括生产中心和灾备中心 。在生产中心,部署有主机、 存储阵列, 用于正常的业务运行; 在灾备中心, 部署有主机、 存储阵列, 用 于在生产中心发生灾难后, 接管其业务。 其中, 生产中心或灾备中心的存储 阵列均包含多个数据卷, 数据卷是物理存储空间映射而成的一段逻辑存 储空 间。 生产中心的业务产生的数据写入生产阵列后, 可以经容灾链路复制到灾 备中心, 写入灾备阵列。 为了保证灾难发生后, 灾备中心的数据能够支撑业 务接管, 复制到灾备阵列的数据必须保证一致性(consis tency )。 保证数据一 致性本质上是指, 有依赖关系的写数据请求, 该依赖关系需要得到保证。 应 用程序、 操作系统、 数据库都内在地依靠这种写数据请求的依赖关 系的逻辑 来运行其业务, 例如: 先完成写数据请求 1 , 再完成写数据请求 2, 顺序是固 定的。 也就是说, 系统会确保写数据请求 1完全返回成功后, 才会下发写数据 请求 2。 由此, 才能实现当出现故障导致执行过程中断时, 可以依靠固有的办 法来恢复业务。 否则, 可能会出现这样的情况, 例如: 在读取数据时, 可以 读到写数据请求 2存储的数据, 却读不到写数据请求 1存储的数据, 这将导致 业务无法恢复。 在现有技术中, 可以利用快照技术解决这个问题。 快照是数据在某个时 间点 (拷贝开始的时间点) 的映像。 快照的目的是为数据卷创建一个在特定 时间点的状态视图, 通过这个视图只可以看到数据卷在创建时刻的 数据, 在 此时间点之后数据卷的修改(有新的数据写入 ) , 不会反映在快照视图中。 利用这个快照视图, 就可以做数据的复制。 对于生产中心而言, 由于快照数 据是 "静止的" , 因此生产中心可以在将各个时间点的数据增加 快照之后, 再将快照数据复制到灾备中心, 既可以完成远程数据复制, 也不会影响在生 产中心继续执行写数据请求。 对于灾备中心而言, 也可以满足数据一致性的 要求。 例如, 写数据请求 2的数据成功复制到灾备中心, 写数据请求 1的数 据没有成功复制, 可以利用写数据请求 2之前的快照数据, 将灾备中心的数 据恢复到之前的状态。

由于生产中心在执行写数据请求的时候要进行 快照处理, 将生成的快照 数据保存在专门用于存储快照数据的数据卷中 , 因此生产中心在将快照数据 复制到灾备中心时, 需要先将数据卷中存储的快照数据读到緩存, 然后再发 送给灾备中心。 然而, 用于生成快照数据的数据可能还存在緩存中, 但这部 分数据不能被合理利用, 每次复制都需要先到数据卷中读取快照数据, 导致 数据复制的时间较长, 效率较低。 发明内容

本发明实施例提供了一种数据发送方法, 可以直接从第一存储设备的 緩存中将写数据请求携带的信息发送给第二存 储设备, 提高了数据复制的 效率。

本发明实施例第一方面提供了一种数据发送方 法, 包括:

第一存储设备接收主机发送的第一写数据请求 , 所述第一写数据请求 携带待写入数据和地址信息;

将所述待写入数据和地址信息增加第一编号, 写入緩存, 其中所述第 一编号为当前时间片编号;

从所述緩存中读取所述第一编号对应的所述待 写入数据和地址信息; 修改所述当前时间片编号以标识后续写数据请 求携带的信息; 将所述待写入数据和地址信息发送给第二存储 设备。

在本发明实施例第一方面的第一种可能的实现 方式中, 所述第一编号 用于标识当前的复制任务; 所述方法还包括:

记录第二编号, 所述第二编号是当前的复制任务之前, 最近一次已完 成的复制任务对应的编号。

结合本发明实施例第一方面的第一种实现方式 , 第一方面的第二种可 能的实现方式还包括:

从所述緩存中读取所述第二编号之后, 所述第一编号之前的编号对应 的待写入数据和地址信息;

将所述第二编号之后, 所述第一编号之前的编号对应的待写入数据和 地址信息发送给所述第二存储设备。

本发明实施例第一方面的第三种可能的实现方 式, 还包括: 记录当前 时间片编号, 所述当前时间片编号用于生成所述第一编号。

本发明实施例第二方面提供了一种数据接收方 法, 包括:

第二存储设备接收第一存储设备发送的地址信 息;

当确定所述第一存储设备故障时, 所述第二存储设备根据所述地址信 息, 获取第一编号对应的待写入数据, 所述第一编号对应的地址信息与所 述接收到的地址信息相同, 所述第一编号为当前时间片编号之前的编号; 将所述第一编号对应的待写入数据和地址信息 增加第二编号, 写入緩 存。

在本发明实施例第二方面的第一种可能的实现 方式中, 还包括: 记录 所述当前时间片编号, 所述当前时间片编号用于生成所述第二编号。

在本发明实施例第二方面的第二种可能的实现 方式中, 还包括: 接收主机发送的读数据请求, 所述读数据请求包含所述接收到的地址信 确定所述接收到的地址信息对应的最新的编号 是所述第二编号; 将所述第二编号对应的待写入数据发送给所述 主机。

本发明实施例第三方面提供了一种存储设备, 包括:

接收模块, 用于接收主机发送的第一写数据请求, 所述第一写数据请 求携带待写入数据和地址信息;

读写模块, 用于将所述待写入数据和地址信息增加第一编 号, 写入緩 存, 其中所述第一编号为当前时间片编号; 从所述緩存中读取所述第一编 号对应的所述待写入数据和地址信息;

当前时间片编号管理器, 用于修改所述当前时间片编号以标识后续写 数据请求携带的信息;

发送模块, 用于将所述待写入数据和地址信息发送给第二 存储设备。 在本发明实施例第三方面的第一种可能的实现 方式中, 所述第一编号 用于标识当前的复制任务;

所述当前时间片编号管理器, 还用于记录第二编号, 所述第二编号是 当前的复制任务之前, 最近一次已完成的复制任务对应的编号。

结合本发明实施例第三方面的第一种实现方式 , 在第三方面的第二种 可能的实现方式中: 所述读写模块, 还用于从所述緩存中读取所述第二编 号之后, 所述第一编号之前的编号对应的待写入数据和 地址信息;

所述发送模块, 还用于将所述第二编号之后, 所述第一编号之前的编 号对应的待写入数据和地址信息发送给所述第 二存储设备。

在本发明实施例第三方面的第三种可能的实现 方式中, 所述当前时间 片编号管理器, 还用于记录当前时间片编号, 所述当前时间片编号用于生 成所述第一编号。

本发明实施例第四方面提供了一种存储设备, 包括: 接收模块, 用于接收第一存储设备发送的地址信息;

查找模块, 用于当确定所述第一存储设备故障时, 所述第二存储设备 根据所述地址信息, 获取第一编号对应的待写入数据, 所述第一编号对应 的地址信息与所述接收到的地址信息相同, 所述第一编号为当前时间片编 号之前的编号;

写入模块, 用于将所述第一编号对应的待写入数据和地址 信息增加第 二编号, 写入緩存。

在本发明实施例第四方面的第一种可能的实现 方式中, 还包括: 当前时间片编号管理器, 用于记录所述当前时间片编号, 所述当前时 间片编号用于生成所述第二编号。

在本发明实施例第四方面的第二种可能的实现 方式中,所述接收模块, 还用于接收主机发送的读数据请求, 所述读数据请求包含所述接收到的地址 信息;

所述查找模块,还用于确定所述接收到的地址 信息对应的最新的编号是 所述第二编号;

所述存储设备还包括发送模块, 所述发送模块用于将所述第二编号对应 的待写入数据发送给所述主机。

本发明实施例第五方面提供了一种存储设备, 包括: 处理器、 存储器 和通信总线;

其中, 所述处理器和所述存储器通过所述通信总线进 行通信;

所述存储器用于保存程序;

所述处理器用于执行所述程序, 以实现:

接收主机发送的第一写数据请求, 所述第一写数据请求携带待写入数 据和地址信息; 将所述待写入数据和地址信息增加第一编号, 写入緩存, 其中所述第一编号为当前时间片编号; 从所述緩存中读取所述第一编号对 应的所述待写入数据和地址信息; 修改所述当前时间片编号以标识后续写 数据请求携带的信息; 将所述待写入数据和地址信息发送给第二存储 设 备。

在本发明实施例第五方面的第一种可能的实现 方式中, 所述第一编号 用于标识当前的复制任务; 所述处理器还用于:

记录第二编号, 所述第二编号是当前的复制任务之前, 最近一次已完 成的复制任务对应的编号。

结合本发明实施例第五方面的第一种实现方式 , 在第五方面的第二种 可能的实现方式中, 所述处理器还用于: 从所述緩存中读取所述第二编号 之后, 所述第一编号之前的编号对应的待写入数据和 地址信息; 将所述第 二编号之后, 所述第一编号之前的编号对应的待写入数据和 地址信息发送 给所述第二存储设备。

在本发明实施例第五方面的第三种可能的实现 方式中, 所述处理器还 用于:记录当前时间片编号,所述当前时间片 编号用于生成所述第一编号。

本发明实施例第六方面提供了一种存储设备, 包括: 处理器、 存储器 和通信总线;

其中, 所述处理器和所述存储器通过所述通信总线进 行通信;

所述存储器用于保存程序;

所述处理器用于执行所述程序, 以实现:

接收第一存储设备发送的地址信息;

当确定所述第一存储设备故障时, 所述第二存储设备根据所述地址信 息, 获取第一编号对应的待写入数据, 所述第一编号对应的地址信息与所 述接收到的地址信息相同, 所述第一编号为当前时间片编号之前的编号; 将所述第一编号对应的待写入数据和地址信息 增加第二编号, 写入緩 存。

在本发明实施例第六方面的第一种可能的实现 方式中, 所述处理器还 用于记录所述当前时间片编号, 所述当前时间片编号用于生成所述第二编 在本发明实施例第六方面的第二种可能的实现 方式中, 所述处理器还 用于接收主机发送的读数据请求, 所述读数据请求包含所述接收到的地址信 息; 确定所述接收到的地址信息对应的最新的编号 是所述第二编号; 将所述 第二编号对应的待写入数据发送给所述主机。

本发明实施例中, 第一存储设备在接收主机发送的写数据请求后 , 所 述写数据请求携带的信息包括待写入数据和地 址信息, 在待写入数据和地 址信息中增加第一编号, 写入緩存, 第一编号为当前时间片编号, 在复制 任务触发时, 从緩存中读取第一编号对应的待写入数据和地 址信息, 发送 给第二存储设备, 另外, 在复制任务触发时, 修改当前时间片编号, 使得 第一存储设备在后续接收写数据请求时, 在其携带的信息中增加与修改后 的当前时间片编号相同的编号, 由此在緩存中将需要发送给第二存储设备 的写数据请求携带的信息, 与第一存储设备正在接收的写数据请求携带的 信息区分开来, 实现了直接从緩存中将写数据请求携带的信息 发送给第二 存储设备,由于信息是直接从緩存中发送的, 不需要从数据卷中读取数据, 因此数据复制的时间较短, 提高了数据复制的效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中 的技术方案, 下面将对实 施例或现有技术描述中所需要使用的附图作筒 单地介绍, 显而易见地, 下面 描述中的附图是本发明的一些实施例, 对于本领域普通技术人员来讲, 在不 付出创造性劳动性的前提下, 还可以根据这些附图获得其他的附图。

图 1为本发明实施例提供的一种数据发送方法的 用网络架构示意图; 图 2为本发明实施例提供的一种数据发送方法的 程图;

图 3为本发明实施例提供的一种数据接收方法的 程图;

图 4为本发明实施例提供的一种数据发送方法的 令图;

图 5为本发明实施例提供的一种存储设备的结构 意图; 图 6为本发明实施例提供的另一种存储设备的结 示意图; 图 7为本发明实施例提供的再一种存储设备的结 示意图;

图 8为本发明实施例提供的又一种存储设备的结 示意图。 具体实施方式

为使本发明实施例的目的、 技术方案和优点更加清楚, 下面将结合本发 明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完整地描述, 显然, 所描述的实施例是本发明一部分实施例, 而不是全部的实施例。 基于 本发明中的实施例, 本领域普通技术人员在没有作出创造性劳动前 提下所获 得的所有其他实施例, 都属于本发明保护的范围。

本发明实施例提供的数据发送方法可以在存储 设备中实现。 图 1为本发 明实施例提供的数据发送方法的系统架构示意 图, 如图 1所示, 生产中心包 括生产主机、 连接设备和生产阵列 (对应下面实施例的第一存储设备) ; 灾 备中心的系统架构与生产中心类似, 包括灾备主机、连接设备和灾备阵列(对 应下面实施例的第二存储设备) 。 在本发明实施例中, 灾备中心可以不止一 个。其中,生产中心与灾备中心可以通过 IP ( Internet Protocol )或者 FC ( Fiber Chanel )进行数据传输。 生产中心和灾备中心之间可以有一个控制中心 , 所述控制中心可以部署在生产中心侧, 也可以部署在灾备中心侧, 还可以 部署在生产中心和灾备中心之间的第三方设备 中。 所述控制中心用于当生 产阵列发生故障时, 向灾备阵列发出信号让其接替生产阵列处理主 机业 务。

生产主机和灾备主机均可以是当前技术已知的 任何计算设备,如服务器、 台式计算机等等。 在主机内部, 安装有操作系统以及其他应用程序。

连接设备可以包括当前技术已知的存储设备和 主机之间的任何接口, 如 光纤交换机, 或者其他现有的交换机。

生产阵列和灾备阵列均可以是当前技术已知的 存储设备, 如独立磁盘 冗余阵歹 1 J ( Redundant Arrays of Inexpensive Disks , RAID ) 、 磁盘 I: ( Just a Bunch Of Disks, JBOD )、直接存取存储器( Direct Access Storage Device , DASD ) 的一个或多个互连的磁盘驱动器, 诸如磁带库、 一个或多个存储 单元的磁带存储设备。

生产阵列的存储空间可以包括多个数据卷, 数据卷是由物理存储空间 映射而成的一段逻辑存储空间, 例如, 数据卷可以是逻辑单元(Logic Unit Number, LUN ) , 也可以是文件系统。 在本发明实施例中, 灾备阵列的结 构和生产阵列类似。

请参考图 1 , 图 1是本发明一种数据发送方法的实施例, 本发明实施例 应用在第一存储设备中, 其中, 第一存储设备包括控制器、 高速緩沖存储 器(以下筒称緩存或 cache )和存储介质。 其中, 控制器是第一存储设备的 处理器, 用于执行 10命令以及其他数据业务; 緩存是存在于控制器与硬盘 之间的存储器, 容量较硬盘小但速度比硬盘高得多; 存储介质是第一存储 设备主要的存储器, 通常情况下是指非易失性存储介质, 例如, 磁盘, 在 本发明实施例中将第一存储设备包含的物理存 储空间都称为存储介质。 具 体执行下述步骤的可以是第一存储设备中的控 制器。

步骤 S101 : 第一存储设备接收主机发送的第一写数据请求 , 所述第一 写数据请求携带待写入数据和地址信息。

其中, 地址信息可以包括逻辑块地址 ( Logic Unit Address, LB A ) , 当第一存储设备中包含多个数据卷时, 地址信息还可以包括第一存储设备 的数据卷的 ID。

步骤 S102: 将所述待写入数据和地址信息增加第一编号, 写入緩存, 其中所述第一编号为当前时间片编号。

在第一存储设备中可以包含一个当前时间片编 号管理器, 所述当前时 间片编号管理器中保存有当前时间片编号, 当前时间片编号可以用数值表 示, 例如 0、 1、 2, 也可以用字母表示, 例如 a、 b、 c, 在此不 限定。 当接收到第一写数据请求时, 在第一写数据请求携带的待写入数据和 地址信息中增加第一编号, 所述第一编号是由当前时间片编号赋值给它 的。

在第一写数据请求携带的信息中增加第一编号 后, 再将修改后的第一 写数据请求携带的信息写入緩存, 使得第一写数据请求携带的待写入数 据、 地址信息和第一编号都保存在緩存中。

另外, 在一段时间内, 还可以接收到其他写数据请求, 同样需要在其 携带的信息中增加第一编号, 并写入緩存。 需要说明的是在当前时间片编 号改变之前, 在写数据请求携带的信息中增加的都是第一编 号。

步骤 S103: 从所述緩存中读取所述第一编号对应的所述待 写入数据和 地址信息。

当复制任务触发时, 第一存储设备可以从緩存中将第一编号对应的 待 写入数据和地址信息读取出来, 可以理解的是, 第一编号对应的待写入数 据和地址信息可以不止一条。

复制任务是指第一存储设备将一段时间内一个 数据卷接收到的写数 据请求携带的信息发送给第二存储设备, 这些写数据请求携带的信息都被 增加了与当前时间片编号相同的编号。 复制任务触发可以是由定时器触 发, 也可以是人为触发, 在此不做限定。 复制的目的是将第一存储设备接 收的写数据请求携带的待写入数据发送给第二 存储设备存储, 使得第一存 储设备故障时,第二存储设备可以接替第一存 储设备工作。可以理解的是, 写数据请求携带的地址信息(例如 LBA )也需要发送给第二存储设备, 所 述 LBA用于指示第二存储设备存储待写入数据的地 址。 由于第二存储设备 具有与第一存储设备相同的物理结构, 因此适用于第一存储设备的 LBA, 也适用于第二存储设备。

在本发明实施例中, 复制任务是针对第一存储设备的一个数据卷而 言 的, 当第一存储设备包含多个数据卷时,每个数据 卷对应的一个复制任务。 步骤 S 104: 修改所述当前时间片编号以标识后续写数据请 求携带的信 当复制任务触发时, 当前时间片编号管理器需要修改当前时间片编 号, 当接收到后续写数据请求时, 则后续的写数据请求携带的信息则需增 加另一个编号, 所述另一个编号是由修改后的当前时间片编号 赋值给它 的。 由此, 可以在緩存中将需要发送给第二存储设备的写 数据请求携带的 信息, 与第一存储设备正在接收的写数据请求携带的 信息区分开来。

需要说明的是, 步骤 S103和步骤 S104之间没有先后顺序之分。

步骤 S105: 将所述待写入数据和地址信息发送给第二存储 设备。

第一存储设备将从緩存中读取的第一编号对应 的待写入数据和地址 信息, 发送给第二设备。

具体的, 第一存储设备可以将读取到的所有的待写入数 据和地址信息 直接发送给第二存储设备; 也可以在获得第二存储设备的数据卷的 ID后, 根据每一个写数据请求携带的待写入数据和地 址信息, 以及第二存储设备 的数据卷的 ID, 分别生成新的写数据请求, 再发送给第二存储设备。

本发明实施例中, 第一存储设备在接收主机发送的写数据请求后 , 所 述写数据请求携带的信息包括待写入数据和地 址信息, 在待写入数据和地 址信息中增加第一编号, 写入緩存, 第一编号为当前时间片编号, 在复制 任务触发时, 从緩存中读取第一编号对应的待写入数据和地 址信息, 发送 给第二存储设备, 另外, 在复制任务触发时, 修改当前时间片编号, 使得 第一存储设备在后续接收写数据请求时, 在其携带的信息中增加与修改后 的当前时间片编号相同的编号, 由此在緩存中将需要发送给第二存储设备 的写数据请求携带的信息, 与第一存储设备正在接收的写数据请求携带的 信息区分开来, 实现了直接从緩存中将写数据请求携带的信息 发送给第二 存储设备,由于信息是直接从緩存中发送的, 不需要从数据卷中读取数据, 因此数据复制的时间较短, 提高了数据复制的效率。 可以理解的是, 在上述实施例中, 第一存储设备在复制任务触发时, 将当前时间片编号对应的待写入数据和地址信 息, 发送给第二存储设备, 同时修改当前时间片编号以标识后续写数据请 求携带的信息。 在下一次复 制任务触发时, 将修改后的当前时间片编号对应的待写入数据 和地址信息 发送给第二存储设备, 同时再次修改当前时间片编号。 可以保证第一存储 设备分批次地完整地将其接收到的写数据请求 携带的信息, 发送给第二存 储设备。

然而, 当存在多个灾备中心时, 假设第二个灾备中心对应的存储设备 是第三设备, 第一存储设备还需要将其接收到的写数据请求 携带的信息, 发送给第三存储设备。 对于第二存储设备而言, 复制任务触发时, 当前时 间片编号管理器将修改当前时间片编号, 此时, 当前时间片编号赋值给第 二存储设备和第三存储设备的编号都是修改后 的编号。 然而, 当前时间片 编号修改之前的编号对应的写数据请求携带信 息还没有发送给第三存储 设备。

因此, 对于多个灾备中心的场景, 上述实施例还可以包括以下步骤: 步骤 S106: 记录第二编号, 所述第二编号是当前的复制任务之前, 最 近一次已完成的复制任务对应的编号。

在上述实施例中, 第一编号与当前时间片编号相同, 可以用于标识当 前的复制任务, 当前的复制任务是指第一存储设备将当前时间 段内一个数 据卷接收到的写数据请求携带的信息发送给第 二存储设备, 这些写数据请 求携带的信息都被增加了与当前时间片编号相 同的编号。

第二编号是当前的复制任务之前, 最近一次已完成的复制任务对应的 编号。

当存在多个灾备中心时, 当前时间片编号可能在向其他灾备中心的存 储设备发起复制任务时修改的, 因此需要将上一次已完成的复制任务对应 的编号记录下来。 如果在第二编号和第一编号之间还存在其他编 号, 那么该编号对应的 写数据请求携带的信息是没有发送给第二存储 设备的, 需要执行步骤

S107。

步骤 S107: 从所述緩存中读取所述第二编号之后, 所述第一编号之前 的编号对应的待写入数据和地址信息。

具体的读取过程, 与步骤 S103类似, 这里不再赘述。

需要说明的是, 步骤 S107可以和步骤 S103没有先后顺序之分, 也可以 同时执行。

步骤 S108: 将所述第二编号之后, 所述第一编号之前的编号对应的待 写入数据和地址信息发送给所述第二存储设备 。

具体的发送过程, 与步骤 S105类似, 这里不再赘述。

本发明实施例, 除了将当前时间片编号对应的写数据请求携带 的信息 发送给第二存储设备以外, 还可以将上一次已完成的复制任务对应的编 号, 与当前时间片编号之间的编号对应的写数据请 求携带的信息发送给第 二存储设备, 适用于多个灾备中心的场景, 保证了数据复制的完整性。 请参考图 2, 图 2是本发明一种数据接收方法的实施例, 本发明实施例 用于灾备中心在接收到生产中心发送的写数据 请求携带的信息的应用场 景。 所述方法可以包括:

步骤 S201 : 第二存储设备接收第一存储设备发送的地址信 息。

具体的, 第二存储设备可以接收第一存储设备发送的待 写入数据和地 址信息; 也可以接收第一存储设备发送的写数据请求, 其中, 所述写数据 请求包括待写入数据和地址信息,所述地址信 息可以是逻辑块地址( Logic Unit Address, LBA ) 。 当第二存储设备包括多个数据卷时, 所述地址信息 还可以包括第二存储设备的数据卷的 ID。 可以理解的是, 这里的地址信息 可以不止一条。 第二存储设备在接收到待写入数据和地址信息 后, 在待写入数据和地 址信息中增加与当前时间片编号相同的编号, 写入緩存, 使得在緩存中保 存与当前时间片编号相同的编号、 待写入数据和地址信息。

需要说明的是, 第二存储设备中也包含有一个当前时间片编号 管理 器, 所述当前时间片编号管理器中保存有当前时间 片编号, 当前时间片编 号可以用数值表示, 例如 0、 1、 2, 可以用字母表示, 例如 a、 b、 c, 在此 不做限定。 这里的当前时间片编号可以和第一存储设备中 的当前时间片编 号没有联系。

步骤 S202: 当确定所述第一存储设备故障时, 所述第二存储设备根据 所述地址信息, 获取第一编号对应的待写入数据, 所述第一编号对应的地 址信息与所述接收到的地址信息相同, 所述第一编号为当前时间片编号之 前的编号。

通常情况下, 若第一存储设备和第二存储设备均运行正常, 那么第一 存储设备发送多少条写数据请求携带的信息, 第二存储设备就可以接收多 少条写数据请求携带的信息, 并且将每个写数据请求携带的信息都加上与 当前时间片编号相同的编号, 保存在緩存中。 然而, 如果第一存储设备发 生故障, 那么第二存储设备可能只接收到了第一存储设 备的当前时间片编 号的对应的部分待写入数据, 在这种情况下, 第二存储设备保存的数据可 能是不真实的数据, 如果直接接替第一存储设备工作, 数据一致性就不能 得到保证。 举例来说, 若此时主机向第二存储设备发送一个读数据请 求, 要求读取所述地址信息上保存的数据, 第二存储设备会查找与所述地址信 息对应的最新的编号, 然后将当前时间片编号对应的待写入发送给主 机, 然而该数据是不真实的。 因此, 此时需要将第二存储设备的緩存中的数据 恢复成第二存储设备的当前时间片编号之前的 编号对应的数据。

具体的, 确定第一存储设备发生故障的方式可以是控制 中心向第二存 储设备发送一个信号, 该信号用于指示第一存储设备故障, 第二存储设备 需接替第一存储设备处理主机业务。

通常情况下, 当一个复制任务完成时, 控制中心可以分别向第一存储 设备和第二存储设备发送复制成功的指示。 如果第二存储设备没有接收该 指示, 则说明当前复制任务没有完成。 复制任务完成是指, 第一存储设备 将当前时间片编号对应的所有写数据请求携带 的信息都发送给了第二存 储设备, 并且第二存储设备也接收完成。

当第二存储设备确定第一存储设备发生故障时 , 若当前的复制任务已 完成, 则第二存储设备可以直接接替第一存储设备工 作, 数据一致性可以 得到保证。 这种情况不在本发明实施例的讨论范围之内。

然而, 若当前的复制任务没有完成, 则需要将第二存储设备的緩存中 的数据恢复成其当前时间片编号之前的编号对 应的数据。

具体的恢复方式可以是, 根据接收到的地址信息, 在当前时间片编号 的上一个编号对应的地址信息中查找是否有与 所述地址信息相同的地址 信息, 如果没有, 则继续在再上一个编号对应的地址信息中查找 , 直至找 到所述地址信息, 然后获得该编号对应的待写入数据。

步骤 S203: 将所述第一编号对应的待写入数据和地址信息 增加第二编 号, 写入緩存。

其中, 第二编号是对当前时间片编号进行修改后的编 号, 也是在本实 施例中緩存中保存的最新的编号。 当主机向第二存储设备发送一个读数据 请求, 要求读取所述地址信息上保存的数据时, 第二存储设备经过查找得 知与所述地址信息对应的最新的编号是第二编 号, 将第二编号对应的待写 入数据发送给主机。 由此, 保证了数据的一致性。

本发明实施例中, 第二存储设备接收第一存储设备发送的地址信 息, 在第一存储设备发生故障时, 根据该地址信息获得当前时间片编号之前的 编号对应的待写入数据, 并且将当前时间片编号之前的编号对应的待写 入 数据和地址信息增加第二编号, 保存在緩存中。 由此,保证了数据一致性。 请参考图 3 , 图 3是本发明一种数据发送方法的实施例, 在本发明实施 例中, 为了将生产阵列中的緩存与灾备阵列中的緩存 相区别, 在本发明实 施例中, 将生产阵列中的緩存称为第一緩存, 灾备阵列中的緩存称为第二 緩存。

如图 3所示, 所述方法包括:

步骤 S301 : 生产阵列接收生产主机发送的写数据请求 A。

所述写数据请求 A包括卷 ID、 待写入地址 A和待写入数据 A, 待写入地 址 A是指待写入数据 A将要写入的生产阵列的逻辑地址, 例如 LBA, 通常情 况下, 生产阵列在执行所述写数据请求 A时需要将 LBA转换为 PBA ( Phys i cs B lock Addres s )后, 再根据 PBA将待写入数据 A写入存储介质中。 卷 ID是 写数据请求 A对应的数据卷的 I D。 本实施例以生产阵列包含一个卷(以下 称为主卷) 为例, 那么写数据请求 A携带的信息中包含主卷 ID、 待写入地 址 A和待写入数据 A。

步骤 S302: 生产阵列将写数据请求 A修改为写数据请求 Α, , 写数据 请求 A, 包含写数据请求 A携带的信息以及第一编号。

在本发明实施例中, 生产阵列的控制器中可以包含一个当前时间片 编 号 (Current Time Per i od Number , CTPN ) 管理器, 在 CTPN管理器中记录 有当前时间片编号, 所述当前时间片编号用于生成第一编号, 具体的, 第 一编号等于当前时间片编号。

在生产阵列接收到写数据请求 A后, 将写数据请求 A修改为写数据请 求 A,。 具体的, 其修改方式可以是在所述写数据请求 A携带的信息中增加 第一编号, 例如, 当前时间片编号可以为 1 , 那么第一编号也为 1。

可选的, 也可以在接收写数据请求 A时, 记录时间戳, 将所述时间戳 在预先保存的编号序列中进行匹配, 从而确定所述时间戳对应的编号。 具 体的, 所述编号序列可以是映射表或者其他形式, 在此不做限定。 所述编 号序列包括多个编号, 每个编号对应一段时间戳的区间。 如表 1所示:

以接收所述写数据请求 A的时间戳是 9:30为例, 其对应的编号为 1 , 则 可以根据所述编号, 将写数据请求 A修改为写数据请求 A,。

步骤 S303: 生产阵列将所述写数据请求 A,写入第一緩存, 使得在所述 第一緩存中保存写数据请求 A'携带的信息。 其中, 写数据请求 A'携带的信 息包括第一编号、 主卷 ID、 待写入地址 A和待写入数据 A。

在本发明实施例中, 第一编号对应的写数据请求可以有多个。 在 CTPN 管理器中记录的当前时间片编号修改之前, 接收到所有的写数据请求携带 的信息都会加上第一编号。

可以理解的是, 在接收写数据请求 A之后, 还可以接收写数据请求 B, 将写数据请求 B修改为写数据请求 Β, , 使得写数据请求 B, 中还包含所述 第一编号; 还可以接收写数据请求 C , 将写数据请求 C修改为写数据请求 C ' , 使得写数据请求 C ' 中还包含所述第一编号。

举例来说, 将写数据请求 A,, 写数据请求 B,, 写数据请求 C,写入第 一緩存后, 第一緩存中的保存的信息可以如表 2所示:

需要说明的是, 在本发明实施例中, 以生产阵列包含一个数据卷(可 以称为主卷)为例, 所述写数据请求 , 、写数据请求 B, 和写数据请求 C, 携带的数据卷的 ID均是主卷 ID。 在本发明另一个实施例中, 生产阵列可以 包含多个数据卷, 所以写数据请求4、 写数据请求 B和写数据请求 C携带的 数据卷的 ID可以不同。 另外, 表 2只是写数据请求携带的信息在第一緩存 中保存形式的一个示例, 还可以采用树的形式进行保存, 在此不作限定。

以表 2为例, 编号、 卷 I D、 待写入地址可以看作表 2的索引, 根据所述 索引可以查到其对应的待写入数据, 当索引相同时, 其对应的待写入数据 也应该相同。 因此, 当写入一个新的写数据请求时, 需判断第一緩存中是 否存储有与新的写数据请求的编号、 卷 I D以及待写入地址均相同的信息, 如果有,则用新的写数据请求携带的信息覆盖 原来的信息。可以理解的是, 在将写数据请求 A ' 、 写数据请求 B ' 、 写数据请求 C ' 写入第一緩存时, 也需要判断其编号、 卷 I D、 待写入地址是否与第一緩存中已保存的信息相 同, 因为不相同, 所以可以将写数据请求 , 、 写数据请求 B, 、 写数据 请求 C ' 都写入第一緩存。

举例来说, 如果此时接收到写数据请求 D, 所述写数据请求 D包含主卷

I D、 待写入地址 B、 待写入数据 D, 将写数据请求 D修改为写数据请求 D, , 使得写数据请求0, 中还包含所述第一编号。 那么, 将所述写数据请求 D, 写入第一緩存时, 则需判断第一緩存中是否存储与写数据请求 D ' 的编号、 卷 ID以及待写入地址均相同的信息, 如果有, 则用写数据请求 D, 携带的 数据覆盖原来的信息。 由于写数据请求 D ' 中携带的编号、 卷 ID、 待写入 地址均与写数据请求 B, 中包含的编号、 卷 I D、 待写入地址相同, 因此在 第一緩存中, 写数据请求 D ' 的信息将覆盖写数据请求 B ' 的信息。

具体的, 在将所述写数据请求 D ' 写入第一緩存后, 第一緩存中保存 的信息可以如表 3所示: 1 主卷 ID 待写入地址 B 待写入数据 D

1 主卷 ID 待写入地址 C 待写入数据 C

步骤 S304: 当复制任务触发时, 生产阵列修改 CTPN管理器包含的当 前时间片编号; 举例来说, 可以将当前时间片编号由 1修改为 2。

为了将生产阵列的当前时间片编号与灾备阵列 的当前时间片编号区 别开, 在本发明实施例中, 将生产阵列的当前时间片编号称为第一当前时 间片编号, 将灾备阵列的当前时间片编号称为第二当前时 间片编号。

可以理解的是, 当第一当前时间片编号由 1修改为 2之后, 相应地, 此 后接收到的写数据请求携带的信息都会加上与 编号 2。 例如, 接收到写数 据请求 E , 所述写数据请求 E包含主卷 ID、 待写入地址 A、 待写入数据 E , 将 写数据请求 E修改为写数据请求 Ε, , 使得写数据请求 E, 中还包含编号 2; 接收到写数据请求 F , 所述写数据请求 F包含主卷 I D、 待写入地址 F、 待写 入数据 F , 将写数据请求 F修改为写数据请求 F, , 使得写数据请求 F, 中还 包含编号 2。 在将写数据请求 E, 和写数据请求 F, 写入第一緩存之后, 第 一緩存中保存的信息可以如表 4所示:

步骤 S305: 灾备阵列修改其 CTPN管理器包含的第二当前时间片编号; 举例来说, 可以由 11修改为 12。

在本发明实施例中, 灾备阵列中也可以包含自己的 CTPN管理器。 当 生产阵列的复制任务触发时,生产阵列中的 CTPN管理器修改第一当前时间 片编号, 此时, 控制中心也可以给灾备阵列发送一个控制信号 , 让在灾备 阵列也修改自己的 CTPN管理器中包含的第二当前时间片编号。 因此, 步骤 S305与步骤 S304之间没有先后顺序之分。

步骤 S306A: 生产阵列从第一緩存中读取第一编号对应的写 数据请求 携带的信息。

具体的, 由上面的描述可知, 第一编号对应的写数据请求携带的信息 如表 3所示。

步骤 S306B: 生产阵列获得待写入灾备阵列的数据卷的 ID;

步骤 S306C: 生产阵列根据所述数据卷的 ID以及第一编号对应的写 数据请求携带的信息, 生成新的写数据请求;

具体的, 可以根据数据卷的 ID、 待写入地址 A、 待写入数据 A生成 写数据请求 A"; 可以根据数据卷的 ID、 待写入地址 B、 待写入数据 D生 成写数据请求 D"; 可以根据数据卷的 ID、 待写入地址 C、 待写入数据 C 生成写数据请求 C"。

在本发明另一个实施例中, 生产阵列和灾备阵列均可以包含多个数据 卷, 那么写数据请求 A,,、 写数据请求 D,,、 写数据请求 C"所包含的数 据卷的 ID可能是不相同的。 然而, 灾备阵列中每一个数据卷的 ID是与生 产阵列中每一个数据卷的 ID——对应的。

步骤 S307: 生产阵列向灾备阵列发送生成的新的写数据请 求。

具体的, 生产阵列向灾备阵列发送写数据请求 A"、 写数据请求 D"、 写数据请求 C"。

步骤 S308: 灾备阵列修改接收到的写数据请求。

例如, 可以根据 CTPN管理器中记录的第二当前时间片编号, 将写数 据请求 A"修改为写数据请求 A,,,。 具体的, 其修改方式可以是在所述写 数据请求 A"携带的信息中增加编号 12。 同样的, 可以在写数据请求 B"携带的信息中增加编号 12, 将写数据 请求 B"修改为写数据请求 B,,,;在写数据请求 C"携带的信息中增加编号 12, 将写数据请求 C"修改为写数据请求 C",。

步骤 S309: 灾备阵列将修改后的写数据请求写入第二緩存 。

具体的, 保存在第二緩存中的信息可以如表 5所示:

表 5

步骤 S310: 灾备阵列根据写数据请求的待写入地址,将待 写入数据写 入待写入地址对应的存储介质中。

通常情况下, 由于緩存空间是有限的, 当其空间利用率达到一定阈值 时, 就需要将緩存中的数据写入硬盘。 具体的, 将待写入数据 A写入待写 入地址 A对应的存储介质中, 将待写入数据 D写入待写入地址 B对应的 存储介质中, 将待写入数据 C写入待写入地址 C对应的存储介质中。

步骤 S311 : 生产阵列根据写数据请求的待写入地址,将待 写入数据写 入待写入地址对应的存储介质中。

同样的, 生产阵列的緩存在其空间利用率达到一定阈值 时, 也需要将 緩存中的数据写入硬盘。 由上面的描述可知, 此时第一緩存中保存有如下 信息:

2 主卷 ID 待写入地址 A 待写入数据 E

2 主卷 ID 待写入地址 F 待写入数据 F 具体的, 对于卷 ID相同、 待写入地址相同而编号不同的写数据请求, 可 以先写入编号较小的写数据请求携带的待写入 数据, 再写入编号较大的写数 据请求携带的待写入数据, 例如先写入待写入数据 D, 再写入待写入数据 E; 或者直接写入编号较大的写数据请求携带的待 写入数据, 而不写入编号较小 的写数据请求携带的待写入数据, 例如直接写入待写入数据 E。

步骤 S310和步骤 S311之间没有先后顺序之分。

步骤 S312: 当复制任务触发时,生产阵列修改其 CTPN管理器包含的 第一当前时间片编号; 举例来说, 可以将当前时间片编号由 2修改为 3。

可以理解的是, 当生产阵列的 CTPN管理器中的第一当前时间片编号 由 2修改为 3之后, 相应地, 此后生产阵列接收到的写数据请求携带的信 息中都会加上编号 3。

步骤 S313: 灾备阵列修改其 CTPN管理器包含的第二当前时间片编 号; 举例来说, 可以将第二当前时间片编号由 12修改为 1 3。

可以理解的是, 当灾备阵列的 CTPN管理器中的第二当前时间片编号 由 12修改为 1 3之后, 相应地, 此后灾备阵列接收到的写数据请求携带的 信息都会加上编号 1 3。

步骤 S314: 生产阵列读取编号 2对应的写数据请求携带的信息, 生成 相应的写数据请求发送给灾备阵列。

具体的, 由上面的描述可知, 编号 2对应的写数据请求携带的信息包 括写数据请求 E携带的信息和写数据请求 F携带的信息。 同样的, 生产阵 列在获得灾备阵列的数据卷的 ID后, 可以根据数据卷的 ID、 待写入地址 A、 待写入数据 E生成写数据请求 E" ; 可以根据数据卷的 ID、 待写入地 址F、 待写入数据 F生成写数据请求 F,,。 所以, 生产阵列向灾备阵列发送 的写数据请求是写数据请求 E"和写数据请求 F"。

需要说明的是, 在本发明实施例中, 生产阵列在向灾备阵列发送写数 据请求时并没有根据先后顺序之分, 可以是随机发送的, 具体而言, 可以 先发送写数据请求 E" , 再发送写数据请求 F" ; 也可以先发送写数据请求 F" , 再发送写数据请求 E"。

由上面的描述可知, 此时, 灾备阵列的 CTPN管理器中的第二当前时 间片编号是 1 3 , 因此灾备阵列在接收到写数据请求 E"之后需要将写数据 请求 E"修改为包含编号 13的写数据请求 E",; 同样的, 灾备阵列在接收 到写数据请求 F"之后需要将写数据请求 F"修改为包含编号 13的写数据 请求 F,"。

步骤 S315: 灾备阵列收到指示接替生产阵列处理主机业务 。

在本发明实施例中, 如果生产阵列发生故障, 灾备阵列就需要接替生 产阵列处理主机业务, 因此灾备阵列需要满足数据一致性的要求。

由步骤 S314可知, 在当前的复制任务中, 灾备阵列需要接收的写数 据请求包括写数据请求 E"和写数据请求 F,。 当写数据请求 E"和写数据 请求 F" , 经修改后均已成功写入第二緩存中, 灾备阵列才开始接替生产 阵列处理主机业务时, 说明当前的复制周期已经完成, 具备数据一致性的 要求。

若灾备阵列在将写数据请求 E"修改为写数据请求 E",并成功写入第 二緩存之后, 写数据请求 F",成功写入第二緩存之前,生产阵列发生故 , 灾备阵列开始接替生产阵列处理主机业务, 那么当前的复制任务没有完 成, 不满足数据一致性的要求。 同样的, 若灾备阵列在将写数据请求 F" 修改为写数据请求 F",并成功写入第二緩存之后, 写数据请求 E",成功写 入第二緩存之前, 生产阵列故障, 灾备阵列开始接替生产阵列处理主机业 务, 那么当前的复制任务也没有完成, 也不满足数据一致性的要求。

此时, 需要将灾备阵列的緩存中的数据恢复成编号 12对应的复制任 务完成时的状态。 下面以灾备阵列在将写数据请求 E"修改为写数据请求 E",并成功写入第二緩存, 而写数据请求 F",没有成功写入第二緩存为例。

步骤 S316: 灾备阵列获取当前复制周期中已成功写入第二 緩存的写数据 请求携带的待写入地址。

由上面的描述可知, 在编号 13对应的复制任务中, 写数据请求 E",已 成功写入第二緩存, 其携带的待写入地址为待写入地址 A。

步骤 S317: 灾备阵列根据所述待写入地址, 在上一个编号对应的写数据 请求携带的信息中进行匹配,查找到与所述待 写入地址 A相同的待写入地址。

当查找到与所述待写入地址相同的待写入地址 时,执行步骤 S318;若否, 则继续在再上一个编号 (例如编号 11 )对应的写数据请求携带的信息中进行 匹配, 直到查找到与写数据请求 E,,,携带的待写入地址 A相同的待写入地 址为止。

由上面的描述可知,编号 12对应的写数据请求携带的信息如表 5所示。 其中,写数据请求 A,,携带待写入地址与写数据请求 E,,,携带的待写入地址 相同。

可以理解的是, 当灾备阵列包含多个数据卷, 每个写数据请求携带的 信息中包含数据卷的 ID时,则需要待写入地址和数据卷的 ID两者均相同 时才满足条件。

步骤 S318: 根据查找到的待写入地址所在的信息, 生成新的写数据请求 写入所述第二緩存, 所述新的写数据请求包含修改后的编号。

举例来说,从第二緩存中读取的信息包括待写 入地址 A和待写入数据 A (还可以包含从卷 ID ) , 根据读取到的信息, 再加上修改后的编号 (例 如, 将编号由 13修改为 14 ) , 可以生成一条新的写数据请求。 将所述新的 写数据请求写入第二緩存后, 此时緩存中保存的对应关系如表 6所示: 12 从卷 ID 待写入地址 B 待写入数据 D

12 从卷 ID 待写入地址 C 待写入数据 C

1 3 从卷 ID 待写入地址 A 待写入数据 E

14 从卷 ID 待写入地址 A 待写入数据 A

表 6

当主机发送读数据请求给灾备阵列,要求读取 数据卷的 I D为从卷 I D、 待写入地址为待写入地址 A时,灾备阵列会在第二緩存中查找数据卷的 ID 为从卷 I D、待写入地址为待写入地址 A且最新的编号对应的待写入数据发 送给主机。 在本发明实施例中, 则是从第二緩存中将编号 14对应的待写 入数据 A发送给主机。

本发明实施例生产阵列可以直接从緩存中将接 收到的写数据请求携 带的信息, 发送给灾备阵列, 不用到数据卷中读取相关信息, 因此可以提 高数据复制的效率, 并且对于灾备阵列来说也保证了数据一致性。

在现有技术中, 数据复制是通过快照数据来实现的, 这就要求在生产 阵列每次执行写数据请求时, 需要先将写数据请求携带的数据放入緩存, 根据写数据请求中携带的待写入地址, 将该地址中保存的旧数据读取出 来, 存储在数据卷中, 再将緩存中的数据写入所述待写入地址, 这些操作 完成以后才能返回写数据请求的响应消息, 由于增加了快照处理的步骤, 因此增加了写数据请求处理的时延。 而在本发明实施例中不需要对数据进 行快照处理, 虽然会对写数据请求进行修改, 但耗时较小。 所以, 和现有 技术相比, 本发明实施例减小了写数据请求处理的时延。 请参考图 5 , 图 5是本发明实施例一种存储设备 50的结构示意图, 如 图 5所示, 所述存储设备 50包括: 接收模块 501、 读写模块 502、 当前时 间片编号管理器 503和发送模块 504。

接收模块 501 ,用于接收主机发送的第一写数据请求, 所述第一写数据 请求携带待写入数据和地址信息。

其中, 地址信息可以包括逻辑块地址 (Logic Unit Address, LBA ) , 当存储设备 50中包含多个数据卷时, 地址信息还可以包括存储设备 50的 数据卷的 ID。

读写模块 502, 用于将所述待写入数据和地址信息增加第一编 号, 写 入緩存, 其中所述第一编号为当前时间片编号; 从所述緩存中读取所述第 一编号对应的所述待写入数据和地址信息。

在存储设备 50中可以包含一个当前时间片编号管理器 503 , 所述当前 时间片编号管理器 503中保存有当前时间片编号, 当前时间片编号可以用 数值表示, 例如 0、 1、 2, 可以用字母表示, 例如 a、 b、 c, 在此不做限定。

当接收到第一写数据请求时, 在第一写数据请求携带的待写入数据和 地址信息中增加第一编号, 所述第一编号是由当前时间片编号赋值给它 的。

在第一写数据请求携带的信息中增加第一编号 后, 再将修改后的第一 写数据请求携带的信息写入緩存, 使得第一写数据请求携带的待写入数 据、 地址信息和第一编号都保存在緩存中。

另外, 在一段时间内, 还可以接收到其他写数据请求, 同样需要在其 携带的信息中增加第一编号, 并写入緩存。 需要说明的是在当前时间片编 号改变之前, 在写数据请求携带的信息增加的都是第一编号 。

当复制任务触发时, 存储设备 50可以从緩存中将第一编号对应的待写 入数据和地址信息读取出来, 可以理解的是, 第一编号对应的待写入数据 和地址信息可以不止一条。

复制任务是指存储设备 50将一段时间内一个数据卷接收到的写数据 请求携带的信息发送给灾备中心的存储设备, 这些写数据请求携带的信息 都被增加了与当前时间片编号相同的编号。 复制任务触发可以是由定时器 触发, 也可以是人为触发, 在此不做限定。 复制的目的是将存储设备 50接 收的写数据请求携带的待写入数据发送给灾备 中心的存储设备存储, 使得 存储设备 50故障时, 灾备中心的存储设备可以接替存储设备 50工作。 可以 理解的是, 写数据请求携带的地址信息(例如 LBA )也需要发送给灾备中 心的存储设备, 所述 LBA用于指示灾备中心的存储设备存储待写入数 据的 地址。 灾备中心的存储设备具有与存储设备 50相同的物理结构, 因此适用 于存储设备 50的 LBA, 也适用于灾备中心的存储设备。

在本发明实施例中, 复制任务是针对存储设备 50的一个数据卷而言 的, 当存储设备 50包含多个数据卷时, 每个数据卷对应的一个复制任务。

当前时间片编号管理器 503 , 用于修改所述当前时间片编号以标识后 续写数据请求携带的信息。

当复制任务触发时, 当前时间片编号管理器 503需要修改当前时间片 编号, 当接收到后续写数据请求时, 则后续的写数据请求携带的信息则需 增加另一个编号, 所述另一个编号是由修改后的当前时间片编号 赋值给它 的。 由此, 可以在緩存中将需要发送给灾备中心的存储设 备的写数据请求 携带的信息, 与存储设备 50正在接收的写数据请求中携带的信息区分开 来。

发送模块 504, 用于将所述待写入数据和地址信息发送给灾备 中心的 存储设备。

存储设备 50将从緩存中读取的第一编号对应的待写入数 和地址信 息, 发送给灾备中心的存储设备。

具体的, 存储设备 50可以将读取到的所有的待写入数据和地址信 直 接发送给灾备中心的存储设备; 也可以在获得灾备中心的存储设备的数据 卷的 ID后, 根据每一个写数据请求携带的待写入数据和地 址信息, 以及灾 备中心的存储设备的数据卷的 ID, 分别生成新的写数据请求, 再发送给灾 备中心的存储设备。

本发明实施例中, 存储设备 50在接收主机发送的写数据请求后, 所 述写数据携带的信息包括待写入数据和地址信 息, 在待写入数据和地址信 息中增加第一编号, 写入緩存, 第一编号为当前时间片编号, 在复制任务 触发时, 从緩存中读取第一编号对应的待写入数据和地 址信息, 发送给灾 备中心的存储设备, 另外, 在复制任务触发时, 修改当前时间片编号, 使 得存储设备 50在后续接收写数据请求时, 在其携带的信息中增加与修改 后的当前时间片编号相同的编号, 由此在緩存中将需要发送给灾备中心的 存储设备的写数据请求携带的信息, 与存储设备 50正在接收的写数据请 求携带的信息区分开来, 实现了直接从緩存中将写数据请求携带的信息 发 送给灾备中心的存储设备, 由于信息是直接从緩存中发送的, 不需要从数 据卷中读取数据, 因此数据复制的时间较短, 提高了数据复制的效率。 请参考图 6 , 图 6是本发明实施例一种存储设备 60的结构示意图, 如 图 6所示, 所述存储设备 60包括: 接收模块 601、 查找模块 602和写入模 块 604。

接收模块 601 , 用于接收存储设备 50发送的地址信息。

具体的, 存储设备 60可以接收存储设备 50发送的待写入数据和地址信 息; 也可以接收存储设备 50发送的写数据请求, 其中, 所述写数据请求包 括待写入数据和地址信息, 所述地址信息可以是逻辑块地址 (Logic Unit Address, LBA ) 。 当存储设备 60包括多个数据卷时, 所述地址信息还可以 包括存储设备 60的数据卷的 ID。 可以理解的是, 这里的地址信息可以不止 一条。

存储设备 60在接收到待写入数据和地址信息后, 在待写入数据和地址 信息中增加与当前时间片编号相同的编号, 写入緩存, 使得在緩存中保存 与当前时间片编号相同的编号、 待写入数据和地址信息。

需要说明的是, 存储设备 60 中也可以包含有一个当前时间片编号管 理器 603 , 所述当前时间片编号管理器 603中保存有当前时间片编号, 当 前时间片编号可以用数值表示, 例如 0、 1、 2, 可以用字母表示, 例如 a、 b、 c, 在此不做限定。 这里的当前时间片编号可以和存储设备 50 中的当 前时间片编号没有联系。

查找模块 602, 用于当确定所述存储设备 50故障时, 所述存储设备 60根据所述地址信息, 获取第一编号对应的待写入数据, 所述第一编号对 应的地址信息与所述接收到的地址信息相同, 所述第一编号为当前时间片 编号之前的编号。

通常情况下, 若存储设备 50和存储设备 60均运行正常, 那么存储设备 50发送多少条写数据请求携带的信息, 存储设备 60就可以接收多少条写数 据请求携带的信息, 并且将每个写数据请求携带的信息都加上与当 前时间 片编号相同的编号, 保存在緩存中。 然而, 如果存储设备 50发生故障, 那 么存储设备 60可能只接收到了存储设备 50的当前时间片编号的对应的部 分待写入数据, 在这种情况下, 存储设备 60保存的数据可能是不真实的数 据, 如果直接接替存储设备 50工作, 数据一致性就不能得到保证。 举例来 说, 若此时主机向存储设备 60发送一个读数据请求, 要求读取所述地址信 息 (例如, LBA )上保存的数据, 存储设备 60会查找与所述地址信息对应 的最新的编号, 然后将当前时间片编号对应的待写入发送给主 机, 然而该 数据是不真实的。 因此, 此时需要将存储设备 60的緩存中的数据恢复成存 储设备 60的当前时间片编号之前的编号对应的数据。

具体的, 确定存储设备 50发生故障的方式可以是控制中心向存储设备

60发送一个信号, 该信号用于指示存储设备 50故障, 存储设备 60需接替存 储设备 50处理主机业务。

通常情况下, 当一个复制任务完成时, 控制中心可以分别向存储设备 50和存储设备 60发送复制成功的指示。 如果存储设备 60没有接收该指示, 则说明当前复制任务没有完成。 复制任务完成是指, 存储设备 50将当前时 间片编号对应的所有写数据请求携带的信息都 发送给了存储设备 60, 并且 存储设备 60也接收完成。

当存储设备 60确定存储设备 50发生故障时, 若当前的复制任务已完 成, 则存储设备 60可以直接接替存储设备 50工作, 数据一致性可以得到保 证。 这种情况不在本发明实施例的讨论范围之内。

然而, 若当前的复制任务没有完成, 则需要将存储设备 60的緩存中的 数据恢复成其当前时间片编号之前的编号对应 的数据。

具体的恢复方式可以是, 根据接收到的地址信息, 在当前时间片编号 的上一个编号对应的地址信息中查找是否有与 所述地址信息相同的地址 信息, 如果没有, 则继续在再上一个编号对应的地址信息中查找 , 直至找 到所述地址信息, 然后获得该编号对应的待写入数据。

写入模块 604, 用于将所述第一编号对应的待写入数据和地址 信息增 加第二编号, 写入緩存。

其中, 第二编号是对当前时间片编号进行修改后的编 号, 在本实施例 中是緩存中保存的最新的编号。 当主机向存储设备 60发送一个读数据请 求, 要求读取所述地址信息 (例如, LBA )上保存的数据时, 存储设备 60 经过查找得知与所述地址信息对应的最新的编 号是第二编号, 将第二编号 对应的待写入数据发送给主机。 由此, 保证了数据的一致性。

本发明实施例中, 存储设备 60接收存储设备 50发送的地址信息, 在 存储设备 50发生故障时, 根据该地址信息获得当前时间片编号之前的编 号对应的待写入数据, 并且将当前时间片编号之前的编号对应的待写 入数 据和地址信息增加第二编号, 保存在緩存中。 由此, 保证了数据一致性。 请参考图 7, 本发明实施例提供了一种存储设备 700的示意图。 存储设 备 700可以包括当前技术已知的存储设备, 本发明具体实施例并不对存储设 备 700的具体实现做限定。 存储设备 700包括:

处理器 (processor)710, 通信接口(Communications Interface)720, 存储器 (memory)730, 通信总线 740。

处理器 710, 通信接口 720, 存储器 730通过通信总线 740完成相互间的 通信。

通信接口 720, 用于与网元通信, 比如与主机或者交换机等通信。

处理器 710, 用于执行程序 732。

具体地, 程序 732可以包括程序代码, 所述程序代码包括计算机操作指 令。

处理器 710 可能是一个中央处理器 CPU, 或者是特定集成电路 ASIC ( Application Specific Integrated Circuit ) , 或者是被配置成实施本发明实施例 的一个或多个集成电路。

存储器 730,用于存放程序 732。存储器 730可能包含高速 RAM存储器, 也可能还包括非易失性存储器(non-volatile memory ) , 例如至少一个磁盘存 储器。

程序 732具体可以包括:

接收模块 501 ,用于接收主机发送的第一写数据请求, 所述第一写数据 请求携带待写入数据和地址信息。

读写模块 502, 用于将所述待写入数据和地址信息增加第一编 号, 写 入緩存, 其中所述第一编号为当前时间片编号; 从所述緩存中读取所述第 一编号对应的所述待写入数据和地址信息。

当前时间片编号管理器 503 , 用于修改所述当前时间片编号以标识后 续写数据请求携带的信息。

发送模块 504, 用于将所述待写入数据和地址信息发送给灾备 中心的 存储设备。

程序 732中各模块的具体实现可以参见图 5所示实施例中的相应模块, 在此不赞述。 请参考图 8, 本发明实施例提供了一种存储设备 800的示意图。 存储设 备 800可以包括当前技术已知的存储设备, 本发明具体实施例并不对存储设 备 800的具体实现做限定。 存储设备 800包括:

处理器 (processor)810, 通信接口(Communications Interface)720, 存储器 (memory)830, 通信总线 840。

处理器 810, 通信接口 820, 存储器 830通过通信总线 840完成相互间的 通信。

通信接口 820, 用于与网元通信, 比如与主机或者交换机等通信。

处理器 810, 用于执行程序 832。

具体地, 程序 832可以包括程序代码, 所述程序代码包括计算机操作指 令。

处理器 810 可能是一个中央处理器 CPU, 或者是特定集成电路 ASIC ( Application Specific Integrated Circuit ) , 或者是被配置成实施本发明实施例 的一个或多个集成电路。

存储器 830,用于存放程序 832。存储器 830可能包含高速 RAM存储器, 也可能还包括非易失性存储器(non-volatile memory ) , 例如至少一个磁盘存 储器。

程序 832具体可以包括:

接收模块 601 , 用于接收存储设备 50发送的地址信息。

查找模块 602, 用于当确定所述存储设备 50故障时, 所述存储设备

60根据所述地址信息, 获取第一编号对应的待写入数据, 所述第一编号对 应的地址信息与所述接收到的地址信息相同, 所述第一编号为当前时间片 编号之前的编号。

写入模块 604, 用于将所述第一编号对应的待写入数据和地址 信息增 加第二编号, 写入緩存。

程序 832中各模块的具体实现可以参见图 6所示实施例中的相应模块, 在此不赘述。

所属领域的技术人员可以清楚地了解到, 为描述的方便和筒洁, 上述描 述的设备和模块的具体工作过程, 可以参考前述方法实施例中的对应过程描 述, 在此不再赘述。

在本申请所提供的几个实施例中, 应该理解到, 所揭露的设备和方法, 可以通过其它的方式实现。 例如, 以上所描述的装置实施例仅仅是示意性的, 例如, 所述模块的划分, 仅仅为一种逻辑功能划分, 实际实现时可以有另外 的划分方式, 例如多个模块或组件可以结合或者可以集成到 另一个设备中, 或一些特征可以忽略, 或不执行。 另一点, 所显示或讨论的相互之间的耦合 或直接耦合或通信连接可以是通过一些通信接 口, 装置或模块的间接耦合或 通信连接, 可以是电性, 机械或其它的形式。

所述作为分离部件说明的模块可以是或者也可 以不是物理上分开的, 作 为模块显示的部件可以是或者也可以不是物理 子模块,即可以位于一个地方, 或者也可以分布到多个网络子模块上。 可以根据实际的需要选择其中的部分 或者全部, 模块来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可 以集成在一个处理模块中, 也可以是各个模块单独物理存在, 也可以两个或两个以上模块集成在一个模 块中。

本领域普通技术人员可以理解实现上述实施例 的全部或部分步骤可 以通过硬件来完成, 也可以通过程序来指令相关的硬件完成, 所述的程序 可以存储于一种计算机可读存储介质中, 上述提到的存储介质可以是只读 存储器, 磁盘或光盘等。

最后应说明的是: 以上各实施例仅用以说明本发明的技术方案, 而非对 其限制; 尽管参照前述各实施例对本发明进行了详细的 说明, 本领域的普通 技术人员应当理解:其依然可以对前述各实施 例所记载的技术方案进行修改, 或者对其中部分或者全部技术特征进行等同替 换; 而这些修改或者替换, 并 不使相应技术方案的本质脱离本发明各实施例 技术方案的范围。