服务器通过双HBA光纤卡/双网卡连接外置存储,同一块存储逻辑盘被系统识别成/dev/sdb、/dev/sdc多块盘符。多盘符容易分区错乱、挂载错误;单根光纤断线,磁盘直接离线业务宕机。Multipath把多条物理链路聚合为1个逻辑设备,链路故障自动切换,保障存储高可用。
一、多路径底层原理
1. SCSI层识别机制
存储LUN通过多条物理链路上报系统,内核SCSI子系统按链路数量生成多个独立sd设备,实际指向同一个存储卷,这就是盘符重复的根源。
2. Device-Mapper内核框架
multipath依托Linux内核dm(设备映射器)驱动,在块设备上层做虚拟化:接收上层IO,根据负载策略分发到多条物理链路;某链路故障,自动切至剩余可用通道。
3. 三大核心工作模块
- dm-multipath:内核驱动,实现链路聚合、故障切换;
- multipathd:后台守护进程,定时巡检链路健康状态;
- multipath命令:用户层管理工具,生成映射、刷新配置。
4. IO调度策略
- round-robin轮询:IO轮流分发所有链路,负载均衡(最常用);
- group_by_prio:按ALUA优先级选路径,高端存储标配。
二、离线搭建本地YUM源(机房无外网)
mount -o loop /系统镜像.iso /mnt
vim /etc/yum.repos.d/local.repo
[local]
name=LocalOS
baseurl=file:///mnt
gpgcheck=0
enable=1
yum makecache
三、安装软件、加载内核模块
#安装多路径全套组件
yum install device-mapper-multipath* -y
#加载多路径、轮询调度内核模块
modprobe dm-multipath
modprobe dm-round-robin
#验证内核模块载入
lsmod |grep multipath
四、生成配置文件+详解配置项
mpathconf --enable #自动生成/etc/multipath.conf
vim /etc/multipath.conf
通用标准配置(华为/浪潮/HP/宏杉存储通用)
defaults {
polling_interval 30 #每30秒探测一次链路状态
failback immediate #故障链路恢复后立即切回
no_path_retry 5 #链路异常重试5次后禁用路径
rr_min_io 100 #累计100个IO再切换下一条链路
path_checker tur #tur协议检测链路在线状态
user_friendly_names yes #自动生成mpath别名/dev/mapper/mpathN
}
blacklist {
devnode "^sda" #黑名单,排除本地系统盘,防止误聚合
}
devices {
device {
vendor "HP" #存储厂商,multipath -v3查看
product "P9500" #存储型号
path_grouping_policy group_by_prio
prio_callout "/sbin/mpath_prio_alua /dev/%n" #ALUA优先级
}
}
自定义别名(固定盘符,生产常用)
multipaths {
multipath {
wwid 36000c29xxxxxxx #multipath -v3查询WWID
alias storage-data #自定义映射名称/dev/mapper/storage-data
path_selector "round-robin 0"
}
}
五、启动服务并开机自启
systemctl restart multipathd
systemctl enable multipathd
六、在线扫盘、生成多路径映射
#FC HBA卡在线刷新存储,host序号看/sys/class/fc_host/
echo "1" > /sys/class/fc_host/host0/issue_lip
echo "1" > /sys/class/fc_host/host1/issue_lip
multipath -v2 #扫描链路,生成mpath映射
multipath -ll #查看链路状态,active为在用链路,ready备用链路
成功后:多块sd盘聚合为 /dev/mapper/mpath0 ,直接挂载使用。
七、日常运维常用命令
multipath -r #修改配置后重载生效
multipath -v3 #查询WWID、厂商型号、黑名单详情
multipath -F #清空全部多路径映射
multipathd -k #进入交互,show conf查看当前生效配置
注意事项
搭建本地YUM→安装包→内核加载→编写conf配置→启动multipathd→在线刷新FC磁盘→生成多路径→multipath -ll验收→格式化挂载使用
1. 本地系统盘sda务必加入黑名单,否则会被多路径接管导致系统异常;
2. 更换存储只需要修改devices里vendor、product字段,整体配置结构不变;
3. 改完配置必须 multipath -r 重载,不用重启服务;
4. 拔掉一根光纤测试:一条链路离线不影响mpath设备读写,自动切换备用链路。