双活特性中的两个数据中心互为备份,且都处于运行状态。当一个数据中心发生设备故障,甚至数据中心总体故障时,业务自动切换到另外一个数据中心,解决了传统灾备业务没法自动切换的问题。提供给用户高级别的数据可靠性以及业务连续性的同时,提升存储系统的资源利用率。 html
存储系统为基础的存储双活架构,为客户建设业务不间断运行的解决方案,包括本地数据中心部署逻辑架构和跨数据中心部署逻辑架构。 数据库
数据I/O处理机制
经过数据双写和DCL机制实现存储层数据的双活,两个数据中心同时对主机提供数据读写能力。 ci
写I/O流程
实现两台存储设备数据一致的核心就是高效的锁分配机制和高效的数据双写机制。 资源
- 在业务运行中,数据变动可经过双写和DCL来完成同步。双写可使得应用服务器的I/O请求同时下发到本端Cache和远端Cache,从而保证本端Cache与远端Cache的变动数据一致性。在一个数据中心故障时,DCL能够记录业务运行中数据中心的数据变动。待故障恢复后,同时跟踪变动数据同步到该数据中心的存储设备中,以防止变动的数据在同步过程当中出现遗漏。
- 具有双活特性的两台存储系统,可以同时处理主机的I/O请求。为了防止两台存储系统同一时间收到主机写请求修改同一个数据块,而发生数据冲突,须要设计锁分配机制来避免冲突,只有获取锁分配机制容许的存储系统才能写入数据。没有获取该数据库块锁分配机制容许的存储系统,须要等待待锁分配机制释放以后才能从新获取锁分配机制容许写。
在业务运行中,当应用服务器下发I/O请求并引发数据变动时,双活I/O的写处理流程如图1所示。 部署
说明: get
以本次写I/O访问本端存储系统,经过本端存储系统对远端存储系统进行双写为例进行说明。
图1 写I/O流程
- 主机下发写I/O到双活管理模块。
- 系统记录LOG。
- 执行双写:双活管理模块同时将该写I/O写入本端Cache和远端Cache。
- 本端Cache和远端Cache向双活管理模块返回写I/O结果。
- 根据4的结果进行处理:
- 若是两端存储系统都返回写成功,则清除Log。
- 若是任意一端返回写失败,则进行如下处理:
- 将Log转换成DCL,转换成功后清除Log,记录本端LUN和远端LUN的差别数据。
- 双活Pair关系断开,双活Pair的运行状态变为待同步。I/O变成单写,写成功的一端继续提供主机业务,写失败的一端中止主机业务。
说明:
根据存储系统记录的DCL,进行后台数据同步,待本端LUN和远端LUN的数据一致时,双活业务恢复。
- 返回主机I/O相应成功。
读I/O流程
两端的LUN数据实时同步,且都能提供主机读写访问。当任何一端存储系统故障的状况下主机将切换访问路径到正常的一端继续业务访问。
双活读I/O流程如图2所示:
图2 读I/O流程
- 应用服务器向双活管理模块申请读权限。
- 双活管理模块先从本端存储系统响应应用服务器的请求。
- 若是本端存储系统正常,则本端存储系统将数据返回给双活管理模块。
- 若是本端存储系统处于非正常状态,则经过双活管理模块去读远端存储系统的数据。远端存储系统将数据返回给双活管理模块。
- 应用服务器读I/O成功。