felo
作者felo2021-08-30 22:33
技术支持, IPS

AIX MPIO介绍和使用建议

字数 2835阅读 3423评论 0赞 1

MPIO 是 AIX 6.1 以后的默认多路径软件,跟 Linux 的 Multipath 一样,现在很多第三方的存储厂商也会使用操作系统默认的多路径软件。当然,也会有类似 EMC powerpath 等需要单独安装的多路径软件。本文主要介绍 AIX MPIO 的一些基本内容和使用的建议,具体的参数配置最好结合第三方存储厂商给出的文档进行配置。

使用 AIX 的服务器通常作为核心或关键业务服务器,后端多采用中高端存储系统提供存储空间,服务器与存储之间往往部署冗余的光纤交换机。为了保证服务器和存储系统的高性能和高可用,一般服务器和存储均会配置 2 个以上 HBA 卡或至少 2 个端口,因此,存储中每个 LUN 总会有多条路径连接到服务器上。 AIX MPIO 就是解决 LUN 映射到 AIX 中有多条路径的管理问题的软件,它可以指定路径的优先级,让 IO 数据流从优先级更高的路径通过,也可指定 IO 数据流通过路径的算法, IO 路径出现错误如何切换或者恢复等。

一、查看 MPIO 信息

通常,每个 LUN 在 AIX 中有多条路径,如果不进行合并处理的话,每个路径将会被识别为一个 hdisk ,且不能被当成常规的 hdisk 来处理。如果使用了 MPIO ,那么这些路径 hdisk 就会自动合并成 1 个 hdisk ,在管理中也不会造成困扰。采用第三方如 EMC Powerpath 多路径软件,会合并出类似 hdiskpower0 的磁盘标识。

使用 MPIO 时,因为存储厂商会提供默认的磁盘配置信息,不同存储提供的 hdisk 配置是有差异的,一般 hdisk 应该保持默认的保留值,不要随意进行修改。在 AIX 中可以使用 lsattr 查看磁盘属性,修改属性可使用 chdev 。要查看 LUN 的路径属性使用 lspath 、 lsmpio ,修改属性可以使用 chpath 。当然,必要的情况下,还需要查看和修改 HBA 卡的属性。

二、 MPIO 的算法和路径优先级

一次 IO 操作只能在一条路径上执行,使用合适的算法可以让 IO 流在所有路径上合理分布,大多数情况默认使用的算法是 “fail_over” ,它把所有的可用路径按照一定路径优先级的设计排成一个列表。没发生错误时只在一条路径上传输数据,当一次 IO 失败后,就在列表中寻找下一条路径。可以通过修改路径的优先级 “path_priority” 来修改修改这个路径的列表。

另外一种算法叫做 “round_robin” ,简单来说就是循环算法,每次 IO 循环使用不同的路径,每条路径根据优先级获得不同比例的 IO 。如果路径失效了,就重新计算各条路径的权重。还有一个叫做 “shortest_queue” 的算法,并不适用所有第三方存储,可根据负载情况,自动选择负载较轻的路径进行 IO 数据的传输,这种算法不再需要设置路径的优先级。

在实际应用中,采用 vSCSI 磁盘的情况下采用 fail_over 算法,其他情况建议使用 round_robin 或者 shortest_queue 算法。

三、 MPIO 路径健康检查参数的设置

在 MPIO 的运行过程中,需要知道每条路径当前状态,以便确定是否向该路径发送 IO 数据流。 MPIO 有三种路径健康检查的模式 “ nonactive ” 、 “ enabled ” 和 “ failed ” ,一般只是用默认的 “ nonactive ” 模式,该模式下会向没有活动 IO 的路径发送健康检查, 1 )如果使用 fail_over 算法,会向备用的路径发送健康检查, 2 )如果使用另外 2 种算法,仅发送给有错误状态的路径。一般情况下,不建议修改这个默认选项。

另外一个参数叫做 “hheck_interval” ,是健康检查时间间隔,如果设置为 0 ,则表示禁用路径健康检查。一般这个参数要大于磁盘读写超时时间( “rw_timeout” ),比如 rw_timeout=30 , hcheck_interval=60 。建议不要改小 hcheck_interval 值,可能会得不偿失。原因如下 1 )检查间隔太小会占用太多 SAN 带宽; 2 )检查操作会占用磁盘队列深度(“ queue_depth ”),发生问题的路径检查往往需要等待超时,因此会长时间占用队列,影响 IO 性能; 3 )如果存在间歇性链路问题,检查间隔太短反而会产生间歇性 IO 错误。因此,出现路径失败时,较大的 hcheck_interval 设置会有更好的性能。

四、超时策略

当 IO 发生超时的时,需要超时策略“ timeout_policy ”来处理该 IO 如何处理。有三个选项,是“ retry_path ”、“ fail_path ”和“ disable_path ”,分别表示在原路径重试、切换其他路径重试和禁用原路径。推荐方式是“ fail_path ”,可以快速在超时中恢复,如果所有路径都失效了它也能最快发现。

五、 MPIO 路径的数量

虽然 MPIO 支持一个 LUN 配置很多条路径,但实际应用中,路径太多也不好,发生 SAN 故障时可能导致操作系统或应用性能严重下降。在 MPIO 环境中,建议每个 LUN 配置 4 到 8 条路径,特殊情况下可以配置 16 条路径。

路径太多的情况下,需要确认每条路径都超时才能判定整个磁盘超时了,因此超时时间就变得特别长。如果多个磁盘同时遇到这类问题,性能将会发生严重的下降。另外,每条路径都需要在内存中保存数据结构,大量路径也会消耗额外的内存。

在服务器和存储连接的链路中,要尽量确保建议的 4 条或 8 条路径是没有单点故障的。当然,如果用户使用类似 IBM 高端存储的 Peer-to-Peer Remote Copy (PPRC) 功能、或者使用高端存储控制器集群的时候可以配置 16 条路径,其余情况并不建议超过 8 条路径。

参考链接:

1) https://www.ibm.com/docs/en/aix/7.2?topic=l-lsmpio-command

2) https://www.ibm.com/docs/en/aix/7.2?topic=l-lspath-command

3) https://www.ibm.com/support/pages/ibm-aix-mpio-best-practices-and-considerations

4) https://www.cnblogs.com/mfrbuaa/p/4739327.html

5) https://www.ibm.com/docs/zh/power7?topic=scenarios-scenario-configuring-multi-path-io-aix-client-logical-partitions

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广