双活存储基础知识

         双活特性中的两个数据中心互为备份,且都处于运行状态。当一个数据中心发生设备故障,甚至数据中心整体故障时,业务自动切换到另一个数据中心,解决了传统灾备业务无法自动切换的问题。提供给用户高级别的数据可靠性以及业务连续性的同时,提高存储系统的资源利用率。

      存储系统为基础的存储双活架构,为客户建设业务不间断运行的解决方案,包括本地数据中心部署逻辑架构和跨数据中心部署逻辑架构。

  • 本地数据中心部署

    通常部署在同园区的不同机房中。

    主机采用集群部署方式。主机与存储间通常通过交换机方式通信,支持FC交换机或IP交换机。同时存储侧部署存储双写镜像通道,保证双活业务的运行。

    方案逻辑示意图如图1所示。

    图1 本地数据中心部署

 

数据I/O处理机制

通过数据双写和DCL机制实现存储层数据的双活,两个数据中心同时对主机提供数据读写能力。

写I/O流程

实现两台存储设备数据一致的核心就是高效的锁分配机制和高效的数据双写机制。

  • 在业务运行中,数据变更可通过双写和DCL来完成同步。双写可以使得应用服务器的I/O请求同时下发到本端Cache和远端Cache,从而保证本端Cache与远端Cache的变更数据一致性。在一个数据中心故障时,DCL可以记录业务运行中数据中心的数据变更。待故障恢复后,同时跟踪变更数据同步到该数据中心的存储设备中,以防止变更的数据在同步过程中出现遗漏。
  • 具备双活特性的两台存储系统,能够同时处理主机的I/O请求。为了防止两台存储系统同一时间收到主机写请求修改同一个数据块,而发生数据冲突,需要设计锁分配机制来避免冲突,只有获取锁分配机制允许的存储系统才能写入数据。没有获取该数据库块锁分配机制允许的存储系统,需要等待待锁分配机制释放之后才能重新获取锁分配机制允许写。

在业务运行中,当应用服务器下发I/O请求并引起数据变更时,双活I/O的写处理流程如图1所示。

说明:

以本次写I/O访问本端存储系统,通过本端存储系统对远端存储系统进行双写为例进行说明。

图1 写I/O流程

  1. 主机下发写I/O到双活管理模块。
  2. 系统记录LOG。
  3. 执行双写:双活管理模块同时将该写I/O写入本端Cache和远端Cache。
  4. 本端Cache和远端Cache向双活管理模块返回写I/O结果。
  5. 根据4的结果进行处理:
    • 如果两端存储系统都返回写成功,则清除Log。
    • 如果任意一端返回写失败,则进行以下处理:
      1. 将Log转换成DCL,转换成功后清除Log,记录本端LUN和远端LUN的差异数据。
      2. 双活Pair关系断开,双活Pair的运行状态变为待同步。I/O变成单写,写成功的一端继续提供主机业务,写失败的一端停止主机业务。

    说明:

    根据存储系统记录的DCL,进行后台数据同步,待本端LUN和远端LUN的数据一致时,双活业务恢复。

  6. 返回主机I/O相应成功。
读I/O流程

两端的LUN数据实时同步,且都能提供主机读写访问。当任何一端存储系统故障的情况下主机将切换访问路径到正常的一端继续业务访问。

双活读I/O流程如图2所示:

图2 读I/O流程

  1. 应用服务器向双活管理模块申请读权限。
  2. 双活管理模块先从本端存储系统响应应用服务器的请求。
  3. 如果本端存储系统正常,则本端存储系统将数据返回给双活管理模块。
  4. 如果本端存储系统处于非正常状态,则通过双活管理模块去读远端存储系统的数据。远端存储系统将数据返回给双活管理模块。
  5. 应用服务器读I/O成功。
posted @ 2019-05-20 22:36  云无止境  阅读(7137)  评论(0编辑  收藏  举报