负载均衡策略
MPxIO 还为 I/O 提供负载平衡功能。
基本上有 3 个选项来配置负载平衡:
策略 | 说明 |
---|---|
Round Robin | 以循环方式选择所有路径。 |
Logical Block | range_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.conf | mpt scsi/SAS HBA 控制器驱动程序配置文件(对于 SAS 设备) |
/kernel/drv/scsi_vhci.conf | MPXIO 操作配置文件(用于定义负载均衡和故障恢复模式以及配置 3rd 方设备) |
/kernel/drv/iscsi_conf | iSCSI 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(全局) |
验证 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。
Oracle Solaris 存储多路径 MPxIO 通过将物理路径组合在一起并呈现单个逻辑路径来提供对存储 LUN 的多路径访问。
由于使用的命令和创建的逻辑设备路径,MPxIO 也可以称为 STMS 或者 SCSI_VHCI。