原理
介绍LUN克隆特性的同步、分裂、反向同步等功能原理。
相关概念
概念 |
描述 |
---|---|
主、从LUN |
在LUN克隆中,为生产数据提供存储空间的LUN称为主LUN,保存主LUN数据副本的LUN称为从LUN。 |
Pair |
在LUN克隆中,主LUN和每个从LUN构成一个Pair。Pair主要用于表示主LUN和从LUN之间的镜像关系。 一个LUN克隆中只能有一个主LUN,但可以添加多个从LUN。每添加一个从LUN,就和主LUN构成一个新的Pair。 说明:
从LUN个数的取值范围请参见《产品描述》。 |
同步 |
将数据从主LUN拷贝至从LUN的过程。 |
双写 |
将主LUN的写I/O同步写入从LUN的过程。 |
分裂 |
对于非立即可用克隆,停止主LUN和从LUN之间的双写状态,使从LUN数据成为与主LUN数据在分裂时间点完全一致的可用副本。 对于立即可用克隆,暂停主LUN到从LUN数据同步从而减少对主机性能的影响。 |
反向同步 |
将数据由从LUN拷贝至主LUN的过程。 |
增量拷贝 |
在进行同步或者反向同步时,仅拷贝新增或更改过的数据。 |
COW(Copy-on-write )技术 |
快照实现的核心技术,用于保存主LUN中变化的数据。快照创建并激活后,如果应用服务器对主LUN有写数据请求,存储系统首先将被写入位置的原数据(写前拷贝数据)拷贝到COW数据空间中,然后修改写前拷贝数据的映射关系,记录写前拷贝数据在COW数据空间中的新位置,最后再将新数据写入到主LUN中。 |
写前回滚 |
快照回滚过程中,主机对主LUN/从LUN进行写时,快照会先将快照中的数据块拷贝到主LUN/从LUN后,主机I/O再继续写。没有主机读写时,快照中的数据是依次向主LUN/从LUN回滚。 |
读重定向 |
主机对从LUN下发读请求时,当主LUN数据还未同步到从LUN,则重新定位到即时快照中读数据。 |
V500R007C60SPC200版本及后续版本新增支持立即可用克隆,相对于之前版本的克隆(以下称为非立即可用克隆)的特点为立即可用克隆创建成功后无需等待拷贝完成立即可以对从LUN进行读写。关于非立即可用克隆和立即可用克隆的原理介绍如下。
非立即可用克隆
LUN克隆的主要用途是备份主LUN数据以供日后还原,或者保存一份主LUN在某一时间点的副本,用于单独读写。从这两种用途出发,LUN克隆的实现过程分为三个阶段:同步、分裂和反向同步,如图1-1所示。
- 同步:将数据从主LUN拷贝至从LUN,之后对主、从LUN进行双写。
- 分裂:同步完成后,用户可以在某一时刻分裂Pair,此时从LUN便成为了主LUN的一份可用副本,该副本封存了分裂时刻主LUN的所有数据。
分裂后,从LUN可以提供给主机读写,使主机可以读写和分裂时刻主LUN相同的数据,且主机对从LUN读写不会影响主LUN性能。分裂后可将从LUN和主LUN再次同步或者反向同步。
- 反向同步:当需要恢复主LUN数据时,可将从LUN数据反向同步到主LUN。反向同步后Pair会自动分裂。
同步
同步过程的原理如图1-2所示。
分裂
分裂过程的原理如图1-3所示。
反向同步
反向同步过程的原理如图1-4所示。
立即可用克隆
克隆可以提供主LUN同步时刻的全量的数据副本,从LUN是立即可读写的,不需要等待后台拷贝完成。主LUN和从LUN在物理空间上完全隔离,针对成员LUN的操作互相不影响。对主LUN和从LUN的写入记录差异位图,支撑后面的增量同步。
克隆执行启同步操作,从LUN即为启同步时刻的完整数据并可以被使用,用户可以直接访问从LUN。因此立即可用克隆主要适用于克隆创建完成后,从LUN需要立即使用的场景。
同步
克隆 Pair启动同步时,存储系统对主LUN生成一个即时快照,并将主LUN在该时刻的快照数据全量同步到从LUN,并将后续的写操作记录到差异位图中,后续用户再执行数据同步时,通过查看差异位图,将差异数据同步至从LUN。
再次同步后,从LUN两次同步间修改的数据将被覆盖。用户可以在数据再次同步前通过对从LUN创建快照的方式,保留对从LUN数据的修改。
同步过程的原理如图1-5所示。
分裂
立即可用克隆起同步后主机可以立即对从LUN进行读写,当同步数据较大时,拷贝会持续一段时间,为了减少后台拷贝对主机读写性能的影响,可以先对克隆进行分裂,暂停后台数据同步,分裂过程的原理如图1-6所示。
读写原理
克隆运行状态分为正常、同步、分裂、停止、异常断开等状态。不同的状态对主LUN和从LUN的读写I/O处理不同。
- 正常/停止状态下,克隆的成员LUN数据独立,直接读写(含修改)主LUN或从LUN,并分别记录差异以便于后续增量同步查询变更数据。
正常/停止状态的读写原理如图1-7所示。
- 同步中/分裂/异常断开的读写原理如下:
- 对主LUN的读写操作,
- 读操作,直接读主LUN数据。
- 写操作,采用COW技术,写主LUN前先拷贝数据到COW数据空间,然后将数据直接写到主LUN并在差异位图中记录差异。
- 对从LUN的读写操作,
- 读操作,采用读重定向技术,如果数据在从LUN已同步或不需要同步则直接读取;否则,则重定向到主LUN的快照中读取。
- 写操作,采用写前回滚技术,如果数据已经同步,则进行覆盖写;未同步数据时,优先同步将要写入位置的快照数据拷贝到从LUN,同步完成后覆盖写。
同步中/分裂/异常断开的读写原理如图1-8所示。 - 对主LUN的读写操作,