多路径
Ultrapath介绍
UltraPath是华为自研的多路径软件,可以管理操作系统原生的磁盘创建、删除以及I/O下发等事件并进行处理。
UltraPath主要功能
- 屏蔽冗余LUN
当应用服务器安装了UltraPath以后,UltraPath在操作系统驱动层面将冗余LUN屏蔽,只为应用服务器提供一个可用的LUN,称为虚拟LUN。在这种环境下,应用服务器只需要将数据的读写操作提交给UltraPath,UltraPath就可以为应用服务器屏蔽冗余的LUN,让数据正确写入LUN中并且不破坏其他的数据。
- 选择最优路径
在多路径组网环境下,应用服务器上虚拟LUN对应的存储系统上LUN的归属控制器,称为该LUN的优选控制器。因此,安装UltraPath的应用服务器会优先选择通过优选控制器(归属控制器)来访问存储系统上的LUN,获得最快的I/O速率。故连接到优选控制器的路径就是最优路径。
- 故障切换和故障恢复
故障切换
UltraPath在路径故障时可以自动将I/O转移到其他可用路径。
故障恢复
UltraPath在检测到路径故障恢复后,会自动把I/O重新下发到该路径。
- 负载均衡
UltraPath支持控制器内和控制器间这2种负载均衡工作模式.
控制器内负载均衡是指I/O在当前工作控制器的各条路径上下发。
控制器间负载均衡是指I/O在所有控制器的路径上下发。
- 路径例测
UltraPath对以下两种状态的路径进行例测:
故障路径
UltraPath对于故障路径的测试频度相对较高,以尽可能早地感知路径恢复。
空闲的可用路径
UltraPath对空闲路径也会进行测试以提前发现路径的故障,避免造成无谓的I/O失败重发;对于空闲路径测试的频度相对较低,目的是减小对业务I/O的影响。
Multi-Path IO介绍
Windows MPIO(Microsoft Multi-Path IO)是微软提供的一个框架,该框架允许存储设备厂商开发包含使用存储阵列优化连接所需的硬件特定信息的多路径解决方案。MPIO也可以单独使用,实现存储设备与主机之间的多条路径的负载均衡,优选路径或故障转移等功能。
MPIO主要包含以下六种策略:仅故障转移,轮循机制,带子集的轮循机制,最少队列深度,加权路径和最少块数。下面我们将就每一种策略进行简单的介绍。
仅故障转移
不执行负载平衡的策略。该策略使用一个活动路径并且其余路径都是备用路径。该活动路径用于发送所有I/O。如果该活动路径失败,则使用其中一个备用路径。当重新激活或重新连接失败的路径时,激活的备用路径返回备用状态。
轮循机制
允许设备特定模块(DSM,Device-Specific Module)采用平衡方式使用所有可用于MPIO的路径的负载平衡策略。这是在存储控制器遵循Active-Active模型并且管理应用程序未具体选择某个负载平衡策略时选择的默认策略。
带子集的轮循机制
允许应用程序指定要以轮循机制方式使用的路径集以及备用路径集的负载平衡策略。DSM使用来自主路径池的路径处理请求,只要其中至少有一个路径可用即可。仅当所有主路径发生故障时,DSM才使用备用路径。例如,假设有4条路径:A、B、C和D,路径A、B和C被列为主路径,而D是备用路径。只要A、B和C中至少有一个可用,DSM就会以轮循机制方式从中选择一个路径。如果所有三个路径都发生故障,则DSM就使用备用路径D。如果路径A、B或C变为可用,DSM将停止使用路径D并切换回使用A、B和C之中的可用路径。
最少队列深度
沿着当前未完成的I/O请求最少的路径发送I/O的负载平衡策略。例如,考虑有一个I/O,该I/O发送到路径1上的LUN1,其他I/O发送到路径1上的LUN2。则路径1上累积未完成的I/O为2,在路径2上它为0。因此,任一LUN的下一个I/O将在路径2上处理。
加权路径
为每个路径分配权重的负载平衡策略。权重表示给定路径的相对优先级。数值越大,优先级等级越低。DSM从可用路径中选择权重最小的路径。
最少块数
沿着当前处理的数据块数最少的路径发送I/O的负载平衡策略。例如,如果有两个I/O:一个是10个字节,而另一个是20个字节。这两个都在路径1上进行处理,并且都已完成路径2。则路径1上累积的未完成I/O数量为30个字节。在路径2上为0。因此下一个I/O将在路径2上处理。
Alua介绍
- ALUA定义:
ALUA(Asymmetric Logical Unit Access, 非对称逻辑单元访问),是一种多目标器端口访问模型。在多路径状态下,ALUA标准提供了一种将LUN的Active/Passive模型呈现给主机的方式。同时还提供了端口的可访问状态切换接口,可用来实现LUN工作控制器切换等。例如,LUN在一个控制器故障时,可以将该控制器的端口置为Unavailable,支持ALUA的主机多路径软件收到该状态后,会将I/O切换到另一端控制器。
- 存储系统支持:
老版本存储系统只支持双控场景下的ALUA特性,不支持多控、双活场景下的ALUA特性,新版本存储系统支持双控、多控、双活的ALUA特性。新老版本存储定义如表2-2所示:
存储版本类型 |
详细版本列表 |
备注 |
老版本存储 |
OceanStor T V1/T V2/18000 V1/V300R001/V300R002/V300R003C00/V300R003C10/V300R005/Dorado V300R001C00 |
- |
新版本存储 |
OceanStor V300R003C20/V300R006C00/V500R007C00/Dorado V300R001C01及后续版本 |
V300R003C20只支持SPC200及以后版本 V300R006C00只支持SPC100及以后版本 Dorado V300R001C01只支持SPC100级以后版本 |
- ALUA特性影响:
非对称访问主要适用于,具有LUN优选控制器(有且仅有一个)属性的存储系统,所有的主机I/O可以通过不同的控制器最终路由到工作控制器执行。存储配置ALUA模式,将指导主机优先选择从LUN的工作控制器下发I/O,从而减少非工作控制器的I/O路由消耗。当LUN的工作控制器的所有I/O路径断开,主机I/O将只会从非工作控制器下发并路由到工作控制器执行,因此必须避免此场景发生。
- 华为存储使用ALUA特性建议:
为了避免IO下发到非工作控制器,建议按照以下实践:
- LUN的归属/工作控制器在存储系统上均衡分布,保证主机业务的所有I/O下发到多个控制器,实现负载均衡。
- 当存储系统改变(节点故障、替换)时,可能引起I/O路径切换,尽量保证主机选择最优路径下发I/O。