数据复制
数据复制是指将主机产生的业务数据写入到从端存储系统的从LUN中。由于远程复制模式的不同,数据写入从LUN的原理也不同。本节详细介绍了同步远程复制和异步远程复制处理主机写I/O的原理。
同步远程复制写操作
同步远程复制需要将主端存储系统上的数据实时地同步到从端存储系统上。其特点是:
- 主端存储系统接收到主机的写I/O请求后,同时发送写I/O请求至从LUN和主LUN。
- 当主LUN和从LUN都执行完写操作时,才向主机返回写I/O结果。写I/O结果取决于是否成功写入主LUN,和从LUN无关。但如果任意一端写失败,则此端会向远程复制管理模块返回写I/O失败,同时远程复制管理模块将更改双写为单写,远程复制进入异常断开状态。
当主LUN和从LUN建立同步远程复制关系之后,通常需要对远程复制进行一次手动同步,以保证主LUN和从LUN的数据一致。同步完成后,每一次主机向主端存储系统写入数据,都会实时同步到从端存储系统的从LUN中。例如,某一次写入数据块N,同步远程复制处理此次写I/O的原理如图1-3所示。
RM:远程复制管理模块。 |
LOG:记录数据写入操作的日志。 |
DCL:Data change log,数据变化位图。 |
DCL存放在硬盘域的所有硬盘中,使用4盘RAID 1策略进行数据保护,而LOG存放在保险箱盘中。
- 主机下发写I/O请求到RM。
- RM将写I/O请求记录到LOG中。
- 执行双写:RM同时将该写I/O请求写入主端Cache和从端Cache中。
- 主端Cache和从端Cache向RM返回写I/O结果。
- 双写结果处理:等待主从端Cache的写处理结果都返回,向主机返回写I/O结果。如果任意一端Cache写失败,则此端会向RM返回写I/O失败,同时RM将更改双写为单写,远程复制进入异常断开状态。
- 判断双写是否成功:
- 都写成功则删除LOG。
- 任意一端写失败保存LOG到DCL。
异步远程复制写操作
异步远程复制是指将主端存储系统上的数据周期性地拷贝到从端存储系统上。其特点是:
- 异步远程复制依赖于快照技术。快照是指源数据在某个时间点的一致性数据副本。
- 主机对主LUN进行写操作,只要主LUN返回写请求成功,即向主机返回写请求成功。
- 通过用户手动触发或系统定时触发同步,保证主LUN和从LUN数据一致。
当主LUN和从LUN建立异步远程复制关系之后,通常会启动初始同步,将主LUN数据全部复制到从LUN,以保证主LUN和从LUN的数据完全一致。
主端存储系统接收到主机发送的写I/O时,会发送写I/O至主LUN,只要主LUN返回写I/O成功,主端存储系统就会向主机返回写I/O成功。从LUN的数据会在同步周期到达时,再进行主LUN和从LUN的数据同步。例如,某一次同步周期内写入数据块N,异步远程复制处理此次写I/O的原理如图1-4所示。
RM:远程复制管理模块。 |
DCL:Data change log,数据变化位图。 |
DCL存放在硬盘域的所有硬盘中,使用4盘RAID 1策略进行数据保护,而存储系统日志存放在保险箱盘中。
主从LUN快照是在启动同步操作时(手动启动同步或同步周期到达后系统自动触发的同步)创建并激活,其作用分别为:
- 主LUN快照可以保证同步过程中读取到的主LUN数据具备一致性,并使同步过程与主机对主LUN的写过程可以同时进行。
- 从LUN快照用于备份从LUN在同步开始前的数据,避免同步过程发生异常导致从LUN的数据不可用。
停止快照的原因是:快照功能只在同步过程中使用到,同步完成后停止快照,可以减小系统开销,提升性能。
- 主机下发写I/O请求到RM,RM直接将数据下发到主端Cache中。
- 主端Cache向RM返回写I/O结果,RM将写结果返回给主机。
- 主端Cache中数据写入到LUN后,RM在DCL中记录主从端差异。
- 远程复制同步周期启动时,主从LUN快照被激活。
- 基于DCL中的差异将对应位置上的主端Cache数据和LUN数据复制到从端Cache中。
异步远程复制采用多时间片缓存技术,其工作原理如下:
时间片即为在Cache中管理一段时间内写入数据的逻辑空间。
- 当同步周期启动时,在主LUN和从LUN的Cache中分别产生新的时间片T2和P2。
- 主机新写入的数据缓存在主端Cache中,并带有时间片T2的信息。
- 主端返回写I/O完成。
- 远程复制将上一个时间片T1的数据直接复制到从端Cache,写入从LUN的时间片P2中。
- 主从LUN的Cache将各自收到的数据写入到LUN中。
- RM采取边复制边删除的方式删除DCL中的差异。
- 远程复制完成后停止主从LUN快照。