负载均衡策略

MPxIO 还为 I/O 提供负载平衡功能。
基本上有 3 个选项来配置负载平衡:

策略说明
Round Robin以循环方式选择所有路径。
Logical Blockrange_size 参数指定的范围内的 I/O 将在同一路径上。 提高了某些具有按路径缓存数据的存储数组的性能。
None无负载平衡——仅使用一条路径。

对于Solaris 10 及更早版本,可以在配置文件/kernel/drv/scsi_vhci.conf 中设置负载平衡策略,对于solaris 11 可以在/etc/driver/drv/scsi_vhci.conf 文件中设置。

load-balance="round-robin";

MPxIO 配置文件

对于 Solaris 10 及更早版本

文件说明
/kernel/drv/fp.conf光纤通道端口配置文件(对于光纤通道设备)
/kernel/drv/mpt.confmpt scsi/SAS HBA 控制器驱动程序配置文件(对于 SAS 设备)
/kernel/drv/scsi_vhci.confMPXIO 操作配置文件(用于定义负载均衡和故障恢复模式以及配置 3rd 方设备)
/kernel/drv/iscsi_confiSCSI MPxIO 配置文件(适用于 iSCSI 设备)

对于 Solaris 11

对于 Solaris 11,目录 /kernel/drv/ 和 /etc/driver/drv 中的文件是随操作系统提供的示例默认配置文件(MPxIO 不使用)。
不要编辑这些文件。
配置文件的位置是 /etc/driver/drv/ 。
在 Solaris 11 中使用的 4 个配置文件是相同的,执行相同的任务。
虽然语法可能不同。

/etc/driver/drv/fp.conf
/etc/driver/drv/mpt.conf
/etc/driver/drv/scsi_vhci.conf
/etc/driver/drv/iscsi_conf

最佳做法是使用 stmsboot 实用程序编辑这些文件,而不是手动编辑它们。

验证路径的健康状况

我们可以使用 mpathadm 或者 luxadm 命令检查到存储数组 LUN 的多个路径。
路径的各种状态是:

ONLINE/primary
ONLINE/secondary
STANDBY/secondary
OFFLINE/*
UNAVAILABLE/*

mpathadm(支持 FC/SAS/iSCSI)[适用于 Solaris 10、11]
luxadm(仅在 FC 上受支持)[适用于 Solaris 7、8、9、10、11]

# mpathadm list LU
        /dev/rdsk/c9t60080E50001C0300000006464D8C9044d0s2
                Total Path Count: 2 
                Operational Path Count: 2

要使用 mpathadm 检查路径的健康状况:

# mpathadm show LU  /dev/rdsk/c9t60080E50001C0300000006464D8C9044d0s2
Logical Unit:  /dev/rdsk/c9t60080E50001C0300000006464D8C9044d0s2
        mpath-support:  libmpscsi_vhci.so
        Vendor:  SUN     
        Product:  LCSM100_F
        Revision:  0777
        Name Type:  unknown type
        Name:  60080e50001c0300000006464d8c9044
        Asymmetric:  yes
        Current Load Balance:  round-robin
        Logical Unit Group ID:  NA
        Auto Failback:  on
        Auto Probing:  NA
        Paths:  
                Initiator Port Name:  210000e08b07922c
                Target Port Name:  203d0080e51c2cc4
                Override Path:  NA
                Path State:  OK
                Disabled:  no
                Initiator Port Name:  210000e08b07f32c
                Target Port Name:  203e0080e51c2cc4
                Override Path:  NA
                Path State:  OK
                Disabled:  no
.........

要使用 luxadm 检查路径的健康状况:

# luxadm probe
                Found Fibre Channel device(s):
                  ......
                Logical Path:/dev/rdsk/c6t60060E800561CF00000061CF00000002d0s2
                Node WWN:203e0080e51c2cc4  Device Type:Disk device
                   ......
# luxadm display 203e0080e51c2cc4
DEVICE PROPERTIES for disk: 203e0080e51c2cc4
  Vendor:               SUN     
  Product ID:           LCSM100_F ------------> this is a 2540 or 2540-M2 array
  Revision:             0777
  Serial Num:           SV04720931      
  Unformatted capacity: 5120.000 MBytes
  Write Cache:          Enabled
  Read Cache:           Enabled
    Minimum prefetch:   0x3
    Maximum prefetch:   0x0
  Device Type:          Disk device
  Path(s):
  /dev/rdsk/c9t60080E50001C0300000006464D8C9044d0s2
  /devices/scsi_vhci/ssd@g60080e50001c0300000006464d8c9044:c,raw
   Controller           /devices/pci@1d,700000/SUNW,qlc@1/fp@0,0
    Device Address              203d0080e51c2cc4,0
    Host controller port WWN    210000e08b07922c
    Class                       primary
    State                       ONLINE
   Controller           /devices/pci@1c,600000/SUNW,qlc@1/fp@0,0
    Device Address              203e0080e51c2cc4,0
    Host controller port WWN    210000e08b07f32c
    Class                       secondary
    State                       ONLINE

在Solaris中 启用/禁用 MPxIO

用于启用/禁用 MPxIO 的命令 stmsboot 的语法是:

stmsboot [-D fp|mpt] [-d | -e | -u | -L | -l controller_number]
where:
-D fp|mpt -> to select the protocol where you want to enable/disable mpxio
-e -> to enable STMS on all HBA
-d -> to disable STMS on all HBA
-u -> to update vfstable and dump config after bananaal file configuration
-l or -L unchanged - see the manpage of stms for a full description.

使用 stmsboot 命令的几个例子是:

命令说明
# stmsboot -e启用 MPxIO 或者所有设备(全局)
# stmsboot -D fp -e为光纤通道设备启用 MPxIO
# stmsboot -d禁用所有设备的 MPxIO(全局)
https://onitroad.com 更多教程

验证 scsi_vhci 模块是否已加载

scsi_vhci 是用于管理存储 LUN 路径的虚拟主机控制器互连驱动程序。
如果我们发现未加载 scsi_vhci 模块,则很可能未启用 MPxIO。

Solaris[TM] 7,8,9,10,11
# modinfo -c |grep scsi_vhci
 21          1 scsi_vhci                        LOADED/INSTALLED

自动故障回复策略

自动故障回复策略允许在故障路径从故障中恢复后重新启用故障路径。
默认情况下启用自动故障回复。
有两种方法可以启用自动故障回复:

非持久方式(临时设置)

通过这种方法,自动故障回复选项不会在重新启动后持续存在。

# mpathadm modify mpath-support --autofailback on libmpscsi_vhci.so
# mpathadm modify mpath-support -a on libmpscsi_vhci.so

永久设置

要使更改在重新启动后保持不变,请在 solaris 10 及更早版本的配置文件 /kernel/drv/scsi_vhci.conf 中或者在 solaris 11 的 /etc/driver/drv/scsi_vhci.conf 文件中设置 auto-failback 参数。
这需要重新配置重启。

auto-failback="enable";

验证自动故障回复
要确认启用了自动故障回复,请使用:

# mpathadm show mpath-support libmpscsi_vhci.so | grep -i failback
           Supported Auto Failback Config:  1
           Auto Failback:  on  <---<<<
           Failback Polling Rate (current/max):  0/0

如何确认 MPxIO 已启用

要确保为 LUN 启用 MPxIO,只需运行 format 命令并检查 LUN 逻辑路径中的 /scsi_vhci。

# format
4. c6t60060E800561CF00000061CF00000002d0 
          /scsi_vhci/ssd@g60060e800561cf00000061cf00000002

另一种方法是检查配置文件中的“mpxio-disable”参数:

Solaris 7、8、9

# egrep "^mpxio-disable=" /kernel/drv/*.conf
/kernel/drv/scsi_vhci.conf:mpxio-disable="no";

Solaris 10

# egrep "^mpxio-disable=" /kernel/drv/*.conf
/kernel/drv/fp.conf:mpxio-disable="no";

Solaris 11

# egrep "^mpxio-disable=" /etc/driver/drv/*.conf
/etc/driver/drv/fp.conf:mpxio-disable="no";

对于 Solaris 10 和 11,X86 平台默认启用 MPxIO。

Solaris 多路径软件(MPxIO 或者 STMS)教程

Oracle Solaris 存储多路径 MPxIO 通过将物理路径组合在一起并呈现单个逻辑路径来提供对存储 LUN 的多路径访问。
由于使用的命令和创建的逻辑设备路径,MPxIO 也可以称为 STMS 或者 SCSI_VHCI。

日期:2020-09-17 00:15:23 来源:oir作者:oir