VPLEX 运维及异构存储双活使用实例技术手册 | 资料
【作者】陈萍春,现就职于某省农信社信息科技部,主要负责行内小型机及存储系统的管理与规划工作,拥有多年的系统、存储以及数据备份等运维工作经验。
1. VPLEX技术概述
DellEMC VPLEX是一种基于存储网络的联合解决方案,提供了异构存储卷管理的功能以及存储双活的技术。本文将着重介绍VPLEX运维相关技术以及分享银行异构存储双活案例。
1.1 VPLEX高可用的硬件架构
如上图所示,VPLEX一般只能集中到同一个机柜内部部署,可以分为小型(1引擎2控制器),中型(2引擎4控制器)以及大型(4引擎8控制器)这三种集群配置。
VPLEX集群组件都会预安装在DellEMC机架上,其硬件架构的高可用性体现在以下的方面:
1)引擎:每个引擎都包含两个独立的控制器。
2)I/O模块:每个控制器安装了四个FC I/O模块,分为两个前端模块(连接主机)和两个后端模块(连接存储);另外还有两个I/O扩展模块,用于控制器间的数据路径和通信
3)备用电源:每个引擎由一个SPS提供后备电源,在电源故障时允许进行写缓存,防止数据丢失。
4)SAN交换机:配置了两个SAN交换机用于集群内部控制器之间的连接。
5)UPS:配备了UPS以避免短暂断电带来的业务停顿风险
1.2 VPLEX的逻辑对象配置
有别于一般的存储管理,VPLEX的逻辑管理过程是:先将后端的存储进行多层的逻辑封装,再将封装的虚拟卷分配给已注册的主机。逻辑关系如下图所示:
在VPLEX管理流程中,涉及了多个逻辑对象,下面将逐一介绍:
1)Storage Volume:其是通过claim存储阵列中的LUN生成的。
2)Extent:Extent可以对Storage Volume进行裁剪划分,也可以直接将Storage Volume封装为Extent。
3)Device:Device是通过Extent封装而来,可以选择1:1封装,也可以根据需要将多个Extent按照不同RAID方式组成更复杂的Device。另外Device 还有一种Distributed方式,它是由不同集群的Device组成的。
4)Virtual Volume:Virtual Volume是从Device创建的,属于VPLEX存储结构的顶层。只有Virtual Volume才可以被给前端主机访问。
5)Port:Port对应的是VPLEX连接主机HBA的前端口
6)Initiator:Initiator对应的则是主机的HBA。
7)Storage View:Storage View翻译为存储视图,它是上面提到的Port,Initiator以及Virtual Volume这些逻辑元素的集合,用于描述前端主机与VPLEX的映射关系。
1.3 VPLEX双活技术
VPLEX的存储虚拟化包括了Local、Metro和Geo三种不同应用场景的方案,Local对应可以实现本地站点的存储双活,Metro则实现的是同城双站点的存储双活,而Geo则是实现了远距离的存储异步复制。本节将重点介绍VPLEX的本地与同城双活技术。
1.3.1 VPLEX缓存技术概述
VPLEX的缓存技术可以总结为两点:分布式缓存一致性和缓存透写模式。
如上图所示为VPLEX分布式缓存一致性的技术原理图。依靠其缓存一致性技术,VPLEX所有引擎当做一个统一的引擎来对外服务,所有引擎的缓存可以整合成一个统一的内存,所以单一控制器或引擎出现故障时,其负载会转移到其他引擎和控制器中。
无论是同城双活还是本地双活,VPLEX都是采用了“write-through”(透写)的缓存模式,即VPLEX并没有实际意义上的写缓存,数据不并在VPLEX缓存,而是写到后端存储。只有后端存储返回写确认后,主机端的本次写操作才算完成。
1.3.2 本地双活
VPLEXLocal 集群最多扩展到4个引擎8个控制器的配置,Local Mirror技术是在Local集群下对异构存储卷进行虚拟化封装并实施镜像的技术,可以有效防范存储单点故障的风险。Local 镜像卷的创建有两种方式,可以通过使用两个extent来创建镜像的device,也可以先创建一个device,然后再附加一个extent。
主机对VPLEX Local 镜像卷的访问过程是:读操作是先访问VPLEX的缓存,如果缓存未命中,则会随机访问底层存储;写操作则是缓存透写模式,需要底层双活存储都返回写确认后才完成写操作。
1.3.3 同城双活
VPLEX同城双活是采用分布式镜像技术来实现的,相比于本地双活,Metro Mirror组建了跨站点的VPLEX集群,能有效防范站点失效风险。VPLEX同城双活有一定的距离限制,要求网络往返延迟(RTT)小于5ms,站点之间约小于100km。类似于Local镜像卷的创建,Metro Mirror卷也有两种创建方式:可以通过两个不同cluster的device创建镜像device,也可以先创建一个device,然后再附加一个device作为镜像。
VPLEX Metro镜像卷是跨站点的,不管哪个站点的主机访问VPLEX Metro镜像卷的方式都是一样的:读操作是先访问VPLEX的缓存,如果缓存未命中,则会访问底层存储,再返回数据给读缓存;写操作还是透写模式,需要底层的双活存储都返回写操作确认后才完成写操作。
2. VPLEX运维管理
2.1 管理工具
2.1.1 Web界面
VPLEX可以通过Web界面来管理。Web页面已经可以完成大部分的功能,包括:VPLEX状态信息、监控、存储配置、数据迁移以及监控。
2.1.2 CLI命令行
VPLEX还提供了命令行的管理方式,通过SSH登录到管理服务器上,并执行vplexcli命令可以进入CLI界面。如下图所示:
VPLEX的命令行依赖于树状层次的目录结构,除了一些全局命令外,很多命令都需要进入到特定的目录中去执行。CLI命令行可以完成所有的配置和管理工作,而且通过CLI可以完成大多数的跨集群的配置。常用的CLI命令参考如下:
巡检与状态监控命令:health-check(用于检查vplex软硬件健康状态信息),rebuild status(用于查看数据拷贝速度)
配置信息查看:VPLEX的大部分配置信息都依赖于树状层次的目录,通过ls或者ll结合目录就可以查看配置信息,如llclusters/*/exports/storage-views/*可以查看所有storage view的信息,ll clusters/*/virtual-volumes/*可以用来查看所有虚拟卷的信息,
VPLEX逻辑配置命令:这部分的命令较多,比如extentcreate,local-device create等用于逻辑元素的创建;export storage-view命令可以用来配置storage view中的元素信息;device attach-mirror或者detach-mirror用来添加或者去除镜像。
2.1.3 管理API接口
VPLEX提供了RESTful规范的API,可以通过该API接口去调用CLI命令,并且API支持所有的CLI命令。
2.1.4 其他方式
VPLEX还支持SNMP协议,通过导入VPLEX的MIB库,可以从管理服务器上获取设备的硬件信息和性能数据。另外VPLEX还提供轻量级目录访问协议(LDAP)。
2.2 逻辑配置管理
由于VPLEX做了多层抽象和封装,基于VPLEX的存储管理的复杂性要更加复杂。VPLEX的逻辑配置管理工作主要需要完成三部分的工作:数据建模、数据抽取和数据展示
2.2.1 配置数据建模
定义数据对象:主机(storageview),HBA卡(initiator),虚拟存储卷(virtualvolume),存储卷(storagevolume),存储阵列(array)
定义对象关系:主机和HBA卡之间的从属关系(belong),主机和虚拟存储卷之间的映射关系(map),虚拟存储卷和存储卷之间的支撑关系(support),存储卷和存储阵列之间的包含关系(contain),模型图如下图所示:
2.2.2 配置数据抽取
VPLEX的配置数据可以通过调用CLI命令来获取,比如在VPLEXCLI的特定目下,通过ll命令就可以获取这些配置信息,也可以借助于编程语言通过VPLEX提供的RESTful API来获取相关配置数据。
2.2.3 配置数据展示
配置数据展示方式主要是配置表,可以尝试通过Neo4J为代表的图数据库来实现。实现效果图如下:
其中橙色点代表存储阵列,蓝色点代表存储卷,红色点代表虚拟存储器,灰色点代表主机,绿色点代表HBA卡
2.3 性能与状态监控
VPLEX性能和状态监控在Web界面中就有集成,如下图所示:
另外可以通过配置SNMP的方式来实现,另外通过API方式可以更好地定制化开发。
3.VPLEX异构存储双活案例
3.1 案例背景介绍
本案例采用双台VPLEX组成VPLEX-Metro集群配置,每台VPLEX包含2个引擎4个控制器。本案例重点介绍异构存储双活的配置,不再赘述VPLEX-Metro集群配置工作。
在本案例中涉及到了IBM DS8870、HDS VSP_F1500以及EMC VMAX三种品牌型号的存储,其中VMAX接入VPLEX cluster1,而DS8870、VSP_F1500则接入VPLEXcluster2中。存储阵列间的双活关系是:DS8870与VSP_F1500的存储卷组成VPLEX Local Mirror,VSP_F1500与VMAX的存储卷组成跨集群的VPLEX Metro Mirror。
3.2 SAN 组网
3.2.1 SAN 规划原则
VPLEX的端口规划原则最重要的是要高可用方面,需要满足如下的规则:
所有VPLEX端口(前端、后端、内部级联)都需要均分到两台SAN交换机
主机的HBA需要与VPLEX不同引擎和控制器的前端端口相连接,且不能全部连接控制器A或者控制器B
存储的HBA需要连接到VPLEX上的所有引擎和控制器
无论是lun到单个VPLEX控制器的路径,还是主机访问VPLEX分配的存储路径,4条访问路径都是优化后的选择。
3.2.1 SAN 端口规划
每台VPLEX共有4个控制器,每个控制器分别使用四个前端口和四个后端口接入SAN交换机,共计32个SAN端口;另外每个控制器还需要两个WAN口,用于内部互联,共计8个端口。这样每台VPLEX有40个端口平均接入两台SAN交换机。
考虑到VPLEX单个控制器到存储端4条路径的原则,即每个控制器提供两个端口连接存储上的两个端口。以单台SAN交换机来计算:
VPLEX:20个端口(8个前端,8个后端,4个内部链接),
存储:考虑到VPLEX是四控制器的配置,每台存储也只需要8个端口与VPLEX的后端口连接。
3.3 存储映射VPLEX的配置
3.3.1 DS8870配置
按照VPLEX的最佳实践,DS8870上创建映射关系时,hostconnect需要选择“Intel-Window 2003”profile,volgrp需要设置为“scsi map 256”类型,如下所示:
尤其需要注意的是volgrp作为卷组的集合,“scsi map 256”类型会限制该volgrp中存储卷数量最大只能255个。针对这种情况,只能通过增加存储端口与VPLEX的映射并且再新建一个volgrp来应对。
3.3.2 VMAX配置
为应用性能考虑,采用VP冗余方式划分磁盘,通过VP方式分配可用LUN,LUN Size根据应用系统需求划分大小,然后创建磁盘组(SG),创建主机端口(IG)和存储端口(PG),最后创建masking view。实现如图:
3.3.3 VSP_F1500配置
VSP_F1500采用端口映射方式,将lun映射给VPLEX的后端口。实现如图:
3.4 VPLEX上异构存储纳管
在完成SAN配置和存储映射之后,就可以在VPLEX上扫描识别到存储。首先是storage-volume claim。由于VPLEX对于异构存储uuid的识别能力不同,除了EMC的VMAX存储可以通过Web界面直接完成配置外,DS8870和VSP_F1500都需要通过命令行来完成。配置命令参考如下:
3.4.1 逻辑封装操作流程
在VPLEX存储纳管之后,还需要需要按照特定的逻辑封装流程来完成:
1)第一步是创建extent。extent是VPLEX对存储卷的第一层封装,具有由于需要实现存储双活镜像,在这一步就需要确保镜像卷的大小要保持一致。本案例中的三种存储虽然都是划分了63G的lun,但是底层大小并不完全一致,其中VMAX存储的lun略大一些,而DS8870C和VSP_F1500的lun比较标准是67645734912,这就需要在extent层裁减VMAX的存储卷大小。配置命令参考如下:
2)第二步是创建device。这里只是对extent卷做一个1:1的封装,后续可以在这个层次添加镜像。配置命令参考如下:
3)第三步是创建virtual volume。这里也是在之前device基础上直接创建,配置命令参考如下:
3.4.2 本地双活配置
上文已将DS8870C上的210B这个lun的虚拟化封装为虚拟卷,按照本地双活规划,还需要配置VSP_F1500上的一个lun,来组成本地双活卷。本地双活卷是在由两个相同大小的extent组成了device,所有只需要再创建一个extent_HDS_F1500_10bd,并将该extent添加为device层的镜像卷。配置命令参考如下:
可以通过web页面查看该存储卷的map信息如下:
3.4.3 同城双活配置
同城双活的配置也需要添加镜像卷,不同的是通过两个device组成了distributed device。以VMAX与VSP_F1500组成的分布式镜像卷为例,需要分别将这两台阵列的lun封装为device,再添加mirror,参考配置命令如下:
通过web页面查看该存储卷的map信息如下:
3.4.4 一致性组的创建
除了镜像卷的配置外,还需要完成一致性组的策略(consistency-group)的策略配置,并将该镜像卷添加到一致性组中。其配置步骤如下:
1)创建一致性组
一致性组给组内的虚拟卷提供了相同的公共属性集,一般将相同数据库或服务器使用的虚拟卷单独放入一致性组,其创建命令参考如下:
2)配置一致性组集群属性
配置一致性组的属性,需要先进入到新创建的一致性组的目录中,再设置一致性组集群相关属性。参考配置命令如下:
3)配置分离规则
分离规则是VPLEX的远距离集群间出现中断时,确保一致性组I/O处理的预定义规则。VPLEX中可以设置winner:cluster-1,winner:cluster-2,或者No Automatic Winner等规则,即定义哪个集群是优先站点。而且将一般分离计时器设为5秒,参考配置命令如下:
另外还需要设置“auto-resume-at-loser”属性,即失效后的自动恢复,参考配置命令如下:
4)一致性组中添加创建的双活虚拟卷
配置完一致性组策略后,就可以在一致性组中添加已创建的虚拟卷,参考配置命令如下:
3.5 VPLEX上主机映射
完成了上述的异构存储纳管的配置后,就可以将虚拟存储卷分配给主机。VPLEX主机映射分为三个步骤:
1)VPLEX上注册主机HBA卡(注册initiator)
查看主机HBA卡的WWN信息,在确认SAN配置完成后,在VPLEX上通过exportinitiator-port命令可以完成注册,参考配置命令如下:
2)VPLEX上创建Storage View
每个主机可创建一个Storage View,分别添加对应的VPLEX前端Port和主机的initiator。参考配置命令如下:
3)Storage View添加虚拟卷
再将之前创建的双活虚拟卷,分配给新创建的Storage View,参考配置命令如下:
3.6 异构存储双活方案总结
上文详细的介绍了三种异构存储阵列实施双活的步骤,可以很明显的看出,该方案最关键的还是在于VPLEX对于异构的存储的纳管的过程。而异构存储被封装成extent之后,VPLEX即能无差别化的管理这些存储卷。
异构存储双活方案解决了两个方面的问题:一是满足了存储双活的需求,而是对于双活存储避免了同一品牌的限制。但是凡事有利有弊,异构存储的存储双活方案本身也存在着一些弊端,比如说存储层面的复杂度变高,比如是异构存储的兼容性问题,比如说异构存储间的性能差异导致的木桶效应等等。
4.VPLEX相关故障场景及异常处理
4.1 双活架构下存储故障场景
存储双活架构能有效防范存储单点故障风险,单存储节点失效依然能保证主机访问存储的可用性。但依然会有一些极端场景,比如笔者遇到过单台存储触发bug,存储控制器不停出现warm start。在这种场景下,VPLEX会持续去判定存储的失效情况,造成主机业务系统无法正常运行。VPLEX会不停地重建镜像卷设备,这种情况也是无法实施断开镜像的操作。最简单有效的解决方法只有断开存储的SAN连接。
4.2 VPLEX故障场景
VPLEXMetro镜像卷都会设置优先站点,如果是非优先站点失效,则优先站点可以访问镜像卷;而如果是优先站点的VPLEX失效,非优先站点是无法访问镜像卷,需要修改镜像卷的优先站点属性。当站点恢复后,镜像卷会开始自动重建。一般来说,VPLEX集群的高可用程度较高,即使发生VPLEX集群整体失效的情况,也可以通过将存储卷重新映射给主机来恢复生产。
4.3 同城链路故障场景
同城之间存储链路的故障包括闪断、部分中断、中断等场景,一般来说链路故障场景都不会影响到主站点的主机层应用的运行,但也可能在链路故障后的极短时间内出现存储写延迟较高的情况,这是因为VPLEX对于故障有个判定时间。对于同城链路完全中断的情况,VPLEX会在链路恢复后自动开始同城镜像卷的重建。当然镜像卷的重建也会一定程度地消耗前端的I/O,增加存储的响应时间。
4.4 LUNZ盘的影响及处理
LUNZ盘又戏称为“鬼盘”,在VPLEX里提前默认分配给主机的lun ID为0的设备。在VPLEX给主机映射了存储卷之前,需要先删除LUNZ盘。如果没有即使删除LUNZ盘,AIX系统中会出现第一块存储卷的存储路径缺失,Linux系统则可能会无法访问第一块存储卷。LUNZ盘需要删除,但是lun ID为0的盘也是需要的,特别是VPLEX移除磁盘的映射关系的过程中容易丢失lun 0盘。lun 0盘缺失会使得VPLEX微码升级过程中存在数据丢失风险。
参考资料
h7139 EMC VPLEX实施和规划最佳做法技术说明 h7113 EMC VPLEX Metro Witness Technology and HighAvailability h8232 EMC VPLEX 5.0体系结构指南
点击文末阅读原文,可到社区原文下提问交流,或下载原文文档 觉得本文有用,请转发或点击“在看”,让更多同行看到
资料/文章推荐:
欢迎关注社区 "存储双活"技术主题 ,将会不断更新优质资料、文章。地址:
http://www.talkwithtrend.com/Topic/1431
下载 twt 社区客户端 APP
长按识别二维码即可下载
或到应用商店搜索“twt”
长按二维码关注公众号
*本公众号所发布内容仅代表作者观点,不代表社区立场