Solaris
Solaris 9/10 的原生多路径软件 STMS 支持隐式 ALUA 方式, 其中 Solaris 9 需要安装 StorEdge SAN Foundation 支持 ALUA;Solaris 10 在 Update3 以后版本支持 ALUA.Solaris 主机通过 ALUA 方式连接阵列后, 在相应配置文件中添加产品信息后, STMS 会认为目标器阵列为 A/A-A 模式, 则只会对 Active/Optimized 路径下发 IO, 当 Active/Optimized 路径不可访问时, 会通过 A/N 路径下发 IO.
HP UX
HP UX 11 版本的原生多路径 NMP 支持显式 ALUA.HP UX 主机通过 ALUA 方式连接阵列时, 不需要做任何特殊设置, NMP 在标准查询页中发现 TPGS 支持后, 会下发 RTPG 命令获取路径信息, 生成虚拟设备. HP-UX NMP 多路径生成的虚拟设备为持久设备文件, 通过 scsimgr 命令管理多路径属性, 其中可以通过将设备文件的 "alua_enabled" 属性设置多路径的 ALUA 功能.
NMP 只支持向 Active/Optimized 路径下发 IO, 当 Active/Optimized 路径故障时, NMP 会将 Active/Unoptimized 路径切换为 Active/ Optimized 来进行 LUN Failover 以及 Path Failover. 但 NMP 在不具备 LUN Failback 功能. 所以当故障路径恢复后, 需要在 CLI 模式下手工将工作控制器切换到归属控制器, 保证 LUN 在控制器之间的负载均衡.
VMware ESX
ESX 4.X 以后系统的原生多路径 NMP 支显式以及隐式 ALUA.ESX 主机通过 ALUA 方式连接阵列时, 不需要做任何特殊设置, NMP 在标准查询页中发现 TPGS 支持后, 会下发 RTPG 命令获取路径信息. ESX/ESXi 在 VMkernel 层使用可插入存储架构 (PSA)管理存储多路径, PSA 采用一个开放式模块框架协调多个多路径插件 (MPP) 的同时操作.
ESX/ESXi 默认情况下提供的 VMkernel 多路径插件是 VMware 本机多路径插件 (NMP).NMP 是管理子插件的可扩展模块. NMP 子插件有两种类型, 即存储阵列类型插件 (SATP) 和路径选择插件 (PSP).SATP 和 PSP 可以是 VMware 提供的内置插件, 也可以由第三方提供. ESX 原生 PSP 提供固定模式(FIX), 循环模式(RR) 和最近使用 (MRU) 三种路径选择方式 .
Mac OS X
Mac OS X 通常使用 HBA 卡自带多路径软件, 其中 ATTO FC HBA 卡是苹果主机上最常用的 FC HBA 卡(两者结合较为紧密).ATTO MulitPath Director 就是 ATTO FC HBA 卡提供的多路径驱动, 具备 IO 路径切换和负载均衡功能. ATTO MulitPath Director 同时支持 IALUA 和 EALUA.
主机通过 ALUA 方式连接阵列时, 不需要做任何特殊设置, MulitPath Director 在标准查询页中发现 TPGS 支持后, 会下发 RTPG 命令获取路径信息. MulitPath Director 支持 SCSI 协议定义的四种状态, 其中 Active/Optimized 路径作为优先路径, Active/Unoptimized 以及 Standby 路径作为备选路径, Unavailable 状态处理 Disable 状态. 当 Active/Optimized 路径故障时, Active/ Unoptimized 路径会立即被置为 Active 状态.
ALUA 主要功能和能力
IO 路径选择: 在 ALUA 模式下, 主机只会对 A/O 路径下发 IO, 即对 LUN 工作控制器下发 IO. 只有当 A/O 路径不存在时, IALUA 的主机多路径会对 A/N 路径下发 IO, 阵列将 IO 重定向到 LUN 工作控制器.
内部错误处理: 在某些错误场景下, 单个 LUN 在单边控制器不可访问情况, 这些内部错误可以转化为 ALUA 端口组状态, 隐藏内部错误的差异, 通过统一共用的接口暴露给主机. 这样做的好处在于, 可确保错误不扩散, 提高多路径可靠性.
路径故障和恢复: 路径故障包括光纤, HBA 卡, 交换机等故障, 如果故障发生在 LUN 的 A/O 路径上, 且没有可用 A/O 路径时, IALUA 会通过 A/N 路径下发 IO,EALUA 则将 A/N 路径切换为 A/O 路径. 如果故障发生在 A/N 路径上, IO 行为不受影响.
故障路径恢复后, 对于 EALAU 方式的连接, 需要在 CLI 模式下确认受影响的 LUN 的工作控制器和归属控制器是否一致, 如果不一致, 需要手工将工作控制器切换到归属控制器侧, 以确保 LUN 的负载均衡.
控制器故障和恢复: 如果控制器发生故障时, 阵列内部系统流程会自动将故障端 LUN 的工作控制器 Failover 到对端, 同时会通过 UA 状态知会主机路径状态变化. 控制器故障恢复后, 阵列内部系统流程会自动将受影响的 LUN 进行 Failback.
简单总结: 阵列没有开启或实现 ALUA 之前, 第三方多路径无法知道阵列中 LUN 的工作控制器在哪边, 往往采用随机的方式下发 IO, 这就造成部分 IO 需要向归属控制器转发, 影响 IO 性能(第三方多路径可以选择支持和不支持 ALUA). 支持或实现 ALUA 后, 通过 Active/Optimized 状态标识 LUN 工作控制器, 通过对 Active /Optimized 路径下发 IO, 这样就可以提升 IO 性能.
前面已经介绍过, ALUA 是 SCSI 协议定义的标准多路径接口, 这可以使得存储阵列在不提供自研多路径的情况下, 通过支持标准 ALUA 的第三方多路径实现 IO 优化.
----------------
来源: http://www.bubuko.com/infodetail-3175393.html