首页
登录 | 注册

网络存储导论第七章:同步传输数据复制

7.2.1 同步传输的数据复制

    有关同步数据容灾,在传统意义上讲,就是通过容灾软件(可以含在硬件系统内),将本地生产数据通过某种机制复制到异地。从广义上讲,同步数据容灾是指在异地建立起一套与本地数据实时同步的异地数据。  

    从图7-1可以看出,采用同步传输方式进行异地数据容灾的过程包括:

    1. 本地主机系统发出第一个I/O 请求A;

    2. 主机会对本地磁盘系统发出I/O 请求;

    3. 本地磁盘系统完成I/O 操作,并通知本地主机“I/O 完成”;

    4. 在往本地I/O 的同时,本地系统(主机或磁盘系统)会向异地系统发出I/O 请求A;

    5. 异地系统完全I/O 操作,并通知本地系统“I/O 完成”

    6. 本地主机系统得到“I/O 完成”的确认,然后,发出第二个I/O 请求B。


图 7-1 同步数据的一个实例

    不同的异地数据复制技术的实现方式是不同的,包括:

      基于主机逻辑卷层的同步数据复制方式(软件复制方式);

      基于磁盘系统I/O 控制器的同步数据复制方式(硬件复制方式);

    首先,描述基于主机逻辑卷的同步数据复制方式。

    基于主机逻辑卷的同步数据复制方式以VERITAS Volume Replicator(VVR)为代表,VVR是集成于VERITAS Volume Manager(逻辑卷管理)的远程数据复制软件,它可以运行于同步模式和异步模式。在同步模式下,其实现原理如下图:


图7-2 基于逻辑卷的数据复制实例

    当主机发起一个I/O 请求A 之后,必然通过逻辑卷层,逻辑卷管理层在向本地硬盘发出I/O请求的同时,将同时通过TCP/IP 网络向异地系统发出I/O 请求。其实现过程如下:

    1. 本地主机系统发出第一个I/O 请求A;

    2. 主机逻辑卷层会对本地磁盘系统发出I/O 请求;

    3. 本地磁盘系统完成I/O 操作,并通知本地逻辑卷“I/O 完成”;

    4. 在往本地磁盘系统I/O 的同时,本地主机系统逻辑卷会向异地系统发出I/O 请求A;

    5. 异地系统完成I/O 操作,并通知本地主机系统“I/O 完成”

    6. 本地主机系统得到“I/O 完成”的确认,然后,发出第二个I/O 请求B。

    其次,考察基于磁盘系统的同步数据复制功能

    基于磁盘系统的同步数据复制功能实现异地数据容灾,如SRDF 和PPRC。这两个软件运行的平台是磁盘系统,部署这样的系统必须要求在两端采用相同种类的磁盘系统。

    其同步数据复制的实现原理如下图:

    当主机发出一个I/O 请求A 之后,I/O 进入磁盘控制器。该控制器在接到I/O 请求后,一方面会写入本地磁盘,同时利用另一个控制器(或称通道),通过专用通道(如:ESCON)、FC光纤通道(IP over FC)或者租用线路,将数据从本地磁盘系统同步的复制到异地磁盘系统。其实现过程如下:

    1. 本地主机系统发出第一个I/O 请求A;

    2. 主机对本地磁盘系统发出I/O 请求;

    3. 在往本地磁盘系统I/O 的同时,本地磁盘系统会向异地磁盘系统发出I/O 请求A;

    4. 本地磁盘系统完成I/O 操作;

    5. 异地系统完成I/O 操作,并通知本地磁盘系统“I/O 完成”

    6. 本地次盘系统向主机确认“I/O 完成”,然后,主机系统发出第二个I/O 请求B。


相关文章

  • CCNA学习指南  第七章  下载
    访问列表提供了另一个控制网络的有力工具,它增加了过滤数据流的灵活性,在不妨碍合法通信连接的同时阻止了非法或不必要的流量经过,保护了网络资源. 07.pdf
  • 一.HZ.jiffies         HZ值是一个与体系结构有关的常数.其值表示每秒有多少次时钟中断.         每次当时钟中断发生时,内核内部计数器的值就增加1,这个计数器的值在系统引导时被初始化为0,因此,它的值就是自上次操作 ...
  • 原文地址:Linux内核对per-cpu变量的实现 作者:MagicBoy2010 在Linux中,per-cpu变量用在多处理器系统中,用来为系统中的每个cpu都生成一个变量的副本,以避开多处理器互斥中的加锁问题,另一个是cpu本地的变量 ...
  • 终身会员卡上线三重大优惠!
    今天是最值得庆贺的一个好日子,因为许多朋友热切期待的,我在51CTO学院上的终身会员卡终于正式上线了!! 终身会员卡地址:http://edu.51cto.com/member/id-9.html 视频课程主心:http://edu.51c ...
  • 目前,容器存储是容器离不开的一个话题,对于无状态的Docker容器,容器重启时容器数据会自动清除,一些静态的数据我们可以通过配置文件或者在容器build时直接写死.但是对于数据库.日志文件等可以实时变化的数据,我们不能够通过这种方法存取,容 ...
  • 顾名思义,零长度数组就是长度为0的数组. int a[10]; int len; int a[len]; 在这个程序中,我们定义一个变量 len,作为数组的长度.程序运行后,我们可以通过输入指定数组的长度并初始化,最后再将数组的元素打印出来 ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.012 s.
京ICP备10005923号