在 FC SAN 环境中配置多路径软件(Multipathing)的核心目标是聚合多条物理链路(如双 HBA 卡连接双交换机),将其映射为单一逻辑设备,从而实现 I/O 负载均衡和链路故障自动切换。Linux 系统通常使用开源的 device-mapper-multipath,而 VMware 和 AIX 则使用各自内置的多路径模块 。
一、Linux 环境配置实战 (CentOS/RHEL)
Linux 下最通用的方案是使用 multipath-tools。配置流程涵盖安装、识别设备、生成配置及策略优化。
- 安装与启动服务
首先确保系统已安装多路径软件包,并启动守护进程以扫描 FC 链路 。
bash
# 安装多路径工具 (基于 yum/dnf)
yum install -y device-mapper-multipath
# 加载多路径内核模块
modprobe dm-multipath
# 启动服务并设置开机自启
systemctl start multipathd
systemctl enable multipathd
- 发现与识别 FC 设备
FC SAN 连通后,操作系统会将同一条存储 LUN 的不同物理路径识别为多个块设备(如 /dev/sdb, /dev/sdc)。需通过 WWID (World Wide Identifier) 确认它们属于同一逻辑卷 。
bash
# 查看多路径拓扑,确认路径状态
multipath -ll
# 输出示例解析:
# mpathb (3600508b400105e230000f00000c30000) dm-2 IBM,2145
# size=2.0T features='1 queue_if_no_path' hwhandler='0' wp=rw
# |-+- policy='round-robin 0' prio=1 status=active
# | `- 2:0:0:1 sdb 8:16 active ready running
# `-+- policy='round-robin 0' prio=1 status=enabled
# `- 3:0:0:1 sdc 8:32 active ready running
# 说明:mpathb 是逻辑设备,sdb 和 sdc 是两条物理 FC 路径,均处于 active 状态 。
- 生成与优化配置文件
编辑 /etc/multipath.conf 定义负载均衡策略。默认配置通常位于 /usr/share/doc/device-mapper-multipath-*/multipath.conf.example 。
yaml
# /etc/multipath.conf 核心配置片段
defaults {
user_friendly_names yes # 使用友好名称 (如 mpatha) 而非长 WWID
find_multipaths yes # 自动合并相同 WWID 的设备
max_fds 0 # 关闭未纳管设备的文件描述符,避免日志噪音
}
devices {
device {
vendor "IBM" # 根据存储厂商调整,也可使用 "DELL", "HPE"等
product "2145"
path_checker tur # 使用 Test Unit Ready 命令检查路径状态
path_selector "round-robin 0" # 关键:轮询算法实现负载均衡
hardware_handler "0"
failback immediate # 主路径恢复后立即切回
rr_min_io 100 # 每100 个 IO 切换一次路径,细化负载粒度
}
}
multipaths {
multipath {
wwid "3600508b400105e230000f00000c30000" # 指定特定 LUN 的策略
alias "DB_DATA_LUN01" # 自定义业务别名
path_selector "round-robin 0" # 强制该 LUN 使用轮询负载均衡
}
}
配置生效后重启服务:
bash
systemctl restart multipathd
- 格式化与挂载
注意 :必须对逻辑设备(如 /dev/mapper/DB_DATA_LUN01)进行格式化,严禁对物理路径(如 /dev/sdb)操作,否则会导致文件系统损坏 。
bash
# 创建文件系统 (以 XFS 为例)
mkfs.xfs /dev/mapper/DB_DATA_LUN01
# 挂载使用
mkdir -p /mnt/fc_storage
mount /dev/mapper/DB_DATA_LUN01 /mnt/fc_storage
# 写入 /etc/fstab实现持久化
echo "/dev/mapper/DB_DATA_LUN01 /mnt/fc_storage xfs defaults,_netdev 0 0" >> /etc/fstab
二、VMware vSphere 环境配置
在虚拟化场景中,ESXi 主机通过 NMP (Native Multipathing Plugin) 管理 FC 路径。负载均衡策略需在 vCenter 或 ESXi 主机层面针对数据存储进行设置 。
| 策略名称 | 代码标识 | 工作原理 | 适用场景 |
|---|---|---|---|
| 最近使用 (MRU) | VMW_PSP_MRU |
仅使用当前首选路径,故障时切换,恢复后不切回。 | 主动 - 被动阵列 (Active-Passive),避免不必要的路径切换开销 。 |
| 固定 (Fixed) | VMW_PSP_FIXED |
优先使用指定首选路径,故障切换,恢复后自动切回首选。 | 需要明确主路径规划的场景 。 |
| 循环 (Round Robin) | VMW_PSP_RR |
在所有活跃路径间轮流发送 I/O 请求。 | 主动 - 主动阵列 (Active-Active),实现真正的 FC 链路负载均衡,最大化吞吐量 。 |
PowerCLI 配置示例 (启用 Round Robin):
powershell
# 获取指定数据存储的路径信息
$ds = Get-Datastore -Name "FC_Datastore_01"
$lun = $ds | Get-ScsiLun
# 设置多路径策略为 Round Robin (RR)
SetScsiLun -ScsiLun $lun -MultipathPolicy "RoundRobin"
# 可选:调整每次切换前的 IO 数量 (默认为 1000,调小可更均匀)
$lun | Get-ScsiLunPath | Set-ScsiLunPath -BytesPerSwitch 1024
三、AIX 环境配置 (IBM 专有)
AIX 系统内置 MPIO (Multi-Path Input/Output),配合 IBM 存储需安装 SDDPCM 驱动模块以支持高级功能 。
- 验证安装 :使用
lspv查看磁盘,同一 LUN 的多条路径应显示相同的 PVID。 - 查看状态 :运行
manage_disk_drivers或lsmap -all检查多路径状态及算法。 - 算法选择 :
- failover:默认模式,主路径故障才切换。
- load_balance :启用负载均衡,需在
chdev命令中修改algorithm属性 。
bash
# 示例:将 hdisk5 的多路径算法改为负载均衡
chdev -l hdisk5 -a algorithm=load_balance
###四、关键机制原理解析
多路径软件实现负载均衡并非简单的流量平分,而是依赖于底层策略与存储阵列特性的匹配:
- I/O 调度粒度 :在 Linux 的
round-robin模式下,rr_min_io参数决定了切换频率。若设置过大,可能导致某条 FC 链路拥塞而另一条空闲;若过小,可能增加 CPU 上下文切换开销。通常建议值为 100-1000 之间,需根据业务 IO 大小(Block Size)测试调优 。 - 路径检测机制 :多路径守护进程(如
multipathd)会定期向所有路径发送探测指令(如 SCSI TUR 命令)。一旦某条 FC 链路因光模块故障或交换机端口错误导致无响应,软件会在毫秒级内将该路径标记为failed并将 IO 重路由至健康路径,上层应用无感知 。 - 主动 - 主动 vs 主动 - 被动:配置前必须确认存储阵列类型。若在主动 - 被动阵列上强行配置 Round Robin,会导致控制器频繁交接所有权(LUN Ownership Transfer),反而严重降低性能。FC SAN 高端存储通常为主动 - 主动架构,适合 RR 策略 。