------------------------------------重要说明------------------------------------

以下部分内容来网络,部分自华为存储官方教材

具体教材内容请移步华为存储官网进行教材下载

    网络引用内容无法找到原创,如有侵权请通知

------------------------------------重要说明------------------------------------

卷镜像通过为本地LUN或第三方存储系统的LUN提供两个镜像物理副本,持续对LUN进行冗余备份保护,从而提高LUN的可靠性,降低容灾风险和运维成本。

Oceanstor存储系统的卷镜像软件名称为HyperMirror。通过使用卷镜像,一个LUN可以拥有多个物理副本。

① 定义

卷镜像是一种数据持续保护技术,可以为一个LUN创建两个镜像物理副本,对LUN提供持续的冗余备份保护而主机侧不受任何影响。

卷镜像特性的主要特点包括:

对一个LUN提供两个镜像物理副本,这两个副本中的数据是完全一样的。当其中的一个镜像副本出现故障时, LUN上的业务不受任何影响,主机侧仍然可以毫无感知的正常工作。

这个被持续保护的LUN可以是OceanStor 5300 V3/5500 V3/5600 V3/5800 V3/6800V3/6900 V3存储系统(以下简称为本端存储系统)的LUN,也可以是第三方存储系统(以下简称异构存储系统)的LUN。这样不仅可以提高本端存储系统LUN可靠性,同样可以提高异构存储系统LUN的可靠性。

图片.png 

② 相关概念

数据组织形式

OceanStor 5300 V3/5500 V3/5600 V3/5800 V3/6800 V3/6900 V3存储系统采用虚拟化存储技术。存储池中创建的LUN包含了元数据卷( Meta Volume)和数据卷( DataVolume)两部分组成。

Ø 元数据卷( Meta Volume):记录数据的存放位置。

Ø 数据卷( Data Volume):存放实际的用户数据。

本地LUN

本端存储系统中的LUN。

外部LUN

异构存储系统中的LUN。

镜像LUN

一种由两份同样大小存储空间的副本组成的LUN。当镜像LUN的一个副本不可用时,不影响镜像LUN上的业务运行。

镜像副本

组成镜像LUN的一份副本。镜像副本是一种LUN,但不能映射给主机使用。当移除镜像副本后,镜像副本会释放存储空间到存储池。

双写

将主机对镜像LUN的写I/O请求同步写入镜像副本,所有副本都写完成后再返回主机写完成。

轮询读

主机对镜像LUN读操作时,当镜像副本数据一致时,主机在两个镜像副本之间交替进行读操作。

DCL( Data Change Log)

记录镜像副本的数据变更日志。 DCL存放在镜像副本的元数据卷中。

③ 原理

卷镜像是为一个LUN(本地LUN或外部LUN)创建一个镜像LUN,并为这个镜像LUN提供两个数据一致的镜像副本。如果其中一个镜像副本故障,主机仍然可以正常访问镜像LUN,主机侧业务无任何影响。同时,待故障镜像副本从故障中恢复后,镜像副本会自动同步另一个镜像副本的数据,最终达到两个镜像副本的数据一致,继续给镜像LUN提供持续数据保护。

a.  创建卷镜像

图片.png

1. 创建镜像LUN前

主机对LUN ID为0的LUN进行读写。

图片.png

2. 创建镜像LUN

对这个LUN创建镜像LUN,存储系统会自动生成一个镜像LUN( LUN ID为1),同时该LUN变成镜像副本A。这个镜像LUN的数据卷由镜像副本提供,故不占用新的数据空间。

为了让主机通过镜像LUN去读写镜像副本,同时让主机无感知地对业务数据进行读写,通过LUN信息交换技术,交换镜像LUN和镜像副本A之间的LUN ID信息。如图所示,镜像LUN的LUN ID变为0,镜像副本A的LUN ID变为1。此时对于主机侧来说,主机继续对LUN ID为0的LUN进行读写,即主机对镜像LUN进行读写。

图片.png

3. 添加镜像副本

选择不同的硬盘域,再给镜像LUN添加一个镜像副本B。此镜像副本B是由存储系统自动生成的LUN,与镜像副本A建立数据同步的关系,完全同步镜像副本A的数据。此时卷镜像创建完成。

每个副本的空间可以来源于本地存储池,也可以来源于外部LUN。

当服务器对镜像LUN执行写操作时,系统会将数据同时写入每个副本。当服务器对镜像LUN执行读操作时,系统会选取其中一个副本进行读取。如果其中一个镜像副本暂时不可用(例如:由于提供存储池的存储系统不可用),那么服务器人然可以访问LUN。系统会记住执行写操作的LUN区域,并会在镜像副本恢复后,对这些区域进行再同步。

卷镜像是为一个LUN(本地LUN或外部LUN)创建一个镜像LUN,并为这个镜像LUN提供两个数据一致的镜像副本。如果其中一个镜像副本故障,主机仍然可以正常访问镜像LUN,主机侧业务无任何影响。同时,待故障镜像副本从故障中恢复后,镜像副本会自动同步另一个镜像副本的数据,最终达到两个镜像副本的数据一致,继续给镜像LUN提供持续数据保护。

图片.png

图片.png

1. 创建镜像LUN前,主机对LUN ID为0的LUN进行读写。

2. 创建镜像LUN

对这个LUN创建镜像LUN,存储系统会自动生成一个镜像LUN( LUN ID为1),同时该LUN变成镜像副本A。这个镜像LUN的数据卷由镜像副本提供,故不占用新的数据空间。为了让主机通过镜像LUN去读写镜像副本,同时让主机无感知地对业务数据进行读写,通过LUN信息交换技术,交换镜像LUN和镜像副本A之间的LUN ID信息。如图所示,镜像LUN的LUN ID变为0,镜像副本A的LUN ID变为1。此时对于主机侧来说,主机继续对LUN ID为0的LUN进行读写,即主机对镜像LUN进行读写。

3. 添加镜像副本

选择不同的硬盘域,再给镜像LUN添加一个镜像副本B。此镜像副本B是由存储系统自动生成的LUN,与镜像副本A建立数据同步的关系,完全同步镜像副本A的数据。此时卷镜像创建完成。

图片.png

对一个普通LUN(本地LUN或外部LUN)执行创建镜像LUN操作,此时镜像LUN完全继承普通LUN的存储空间,不占用其它存储空间;同时继承普通LUN的基本属性和业务,保障主机侧业务正常运行。

创建镜像LUN过程中会在本地自动生成一个镜像副本A。此镜像副本也不占用其它存储空间,完全同步镜像LUN的数据。

b.  数据读写流程
1)  数据读流程

如图所示,卷镜像创建完成后,当主机对镜像LUN下发读请求时,镜像LUN会将主机读I/O轮询地转发给两个镜像副本,即对两个镜像副本进行轮询读操作。当从任一镜像副本读取数据成功后,就将读结果先返回给镜像LUN,再由镜像LUN将读结果返回给主机。


图片.png

创建镜像LUN后,将镜像LUN中的数据全部拷贝到两个镜像副本中,将镜像LUN的I/O请求同步写入镜像副本,当镜像LUN与镜像副本数据一致时,主机在镜像LUN和镜像副本之间交替进行读操作。

可以给两个镜像副本设置读优先级。当两个镜像副本读优先级一样时,主机采用轮询读的方式从镜像副本中读取数据。当一个镜像副本读优先级高的时候,主机会直接从中读取数据,当优先级高的镜像副本出现故障无法读取数据时,系统继续对另一个镜像副本进行读操作,保证主机侧业务不受任何影响。

2)  数据写流程


图片.png

 

卷镜像创建完成后,当主机对镜像LUN下发写请求时,镜像LUN会将主机写I/O同时转发给两个镜像副本,即对两个镜像副本进行双写操作。当两个镜像副本都写数据成功后,将写结果先返回给镜像LUN,再由镜像LUN将写结果返回给主机。对两个镜像副本进行双写,保证了两个镜像副本的数据一致性。

当某个镜像副本写失败,该镜像副本的运行状态变为“异常断开”,此后主机读写I/O就不会再通过镜像LUN转发到此镜像副本,但会继续转发到另一个镜像副本,故不影响主机侧的业务正常运行。

c.  分裂

分裂有以下两种场景

如果有一个镜像副本是外部LUN,当需要对该外部LUN对应的存储系统进行升级时,需要在升级前把该外部LUN分裂出来。

如果有一个镜像副本性能较差,影响LUN的整体性能,则需要把该LUN分裂出来。

如图所示,在某一时刻分裂镜像副本,中断镜像副本之间的数据同步。分裂后,镜像LUN的I/O不会再转发到分裂出去的镜像副本A,但镜像LUN的I/O会继续转发到未分裂出去的镜像副本B,故不影响主机侧的业务运行。由于中断了镜像副本A与镜像副本B的数据同步,镜像副本A与镜像副本B的数据变更差异会记录在DCL中,用于以后镜像副本之间再次的数据同步。

图片.png

d.  同步

同步分为初始同步和增量同步

1)  初始同步

当卷镜像创建后,将镜像副本A中的数据完全拷贝到镜像副本B,保障镜像副本之间数据的一致。

如果卷镜像创建前, LUN未进行过任何读写,则可以不进行初始同步。


图片.png

2)  增量同步

当镜像副本A从“分裂”或“异常断开”中恢复“正常”时,存储系统会根据DCL增量拷贝镜像副本B变更的数据到镜像副本A中。同步完成后,存储系统会自动清除DCL中记录的数据变更差异。


图片.png

④ 实现场景

a.  实现异构存储系统数据冗余备份

当前机房环境中存在各种厂商的存储系统,为了便于集中统一管理,会采用华为存储系统的SmartVirtualization特性接管各种厂商的存储系统(异构存储系统),本端存储系统会对外部LUN(在本端存储系统上为eDevLUN)进行统一管控。但由于各种存储系统的多样性,可能出现各种故障问题,导致业务中断甚至数据丢失。那么,可以利用本端存储系统的卷镜像特性,在本端存储系统上为eDevLUN创建一个镜像LUN,将镜像LUN映射给主机读写,而镜像副本来源于本地存储系统,同时将eDevLUN对应的外部LUN的数据完全拷贝给本地存储系统的镜像副本。这样,通过数据冗余提高外部LUN的可靠性,同时保证外部LUN数据的高可用。


图片.png

b.  实现异构存储系统数据相互备份

当机房中存在多个闲置或者旧的异构存储系统,为了提高旧异构存储系统的可靠性并且充分利用旧设备,可以通过华为存储系统的SmartVirtualization特性接管异构存储系统,并通过卷镜像使异构存储系统之间组成冗余备份关系,将镜像LUN映射给主机读写,通过冗余提升异构LUN的可靠性,解决连接异构存储系统的链路故障或异构存储系统自身原因导致的故障,提高单个异构存储系统的可靠性。


图片.png

c.  本地LUN数据持续备份

为了避免存储系统由于本地LUN故障造成的业务中断或数据丢失,可以通过为本地LUN创建一个镜像LUN,冗余提升单个LUN的可靠性。这个过程中,由于镜像副本来源于不同的硬盘域,当本地LUN所在的硬盘域故障时,另一个硬盘域中的镜像副本无影响,主机在本地LUN上的业务由正常硬盘域的镜像副本承接,所以主机侧业务运行正常。

图片.png