核心是先完成系统安装再部署multipath,立即确认硬件可见、加载dm_multipath模块、安装device-mapper-multipath包;精简配置文件仅保留启用友好名、注释默认黑名单、排除本地盘、指定厂商设备;执行multipath -F && multipath -v2扫描并用multipath -ll验证路径状态。

服务器系统安装时配置多路径(Multipath),核心不是“边装系统边配 multipath”,而是先完成基础系统安装,再立即部署并验证 multipath,确保后续所有存储操作(如根文件系统、LVM 或数据库盘)都基于稳定逻辑设备。关键在于避免把本地盘误纳入多路径,也别让默认黑名单把所有设备拦在门外。
安装后立刻做三件事:确认硬件可见、加载模块、装包
系统装完重启进新环境,先检查底层是否就绪:
- 运行 lsscsi -s 或 lsblk,确认已识别出多个路径指向同一 LUN(例如 /dev/sdb、/dev/sdc 都显示相同容量和 WWID)
- 执行 lsmod | grep dm_multipath;若无输出,立即运行 modprobe dm_multipath,并写入 /etc/modules-load.d/multipath.conf 保证开机加载
- RHEL/CentOS 执行 yum install -y device-mapper-multipath;Ubuntu/Debian 用 apt install -y multipath-tools
精简配置文件:只留四行,绕过黑名单陷阱
默认 /etc/multipath.conf 含大量注释和残缺黑名单,新手照搬必失败。直接清空或备份原文件,写入以下四行(其余全删或注释):
- defaults { user_friendly_names yes } —— 启用易读名(如 mpatha),否则全是长串 WWID,无法用于 fstab 或 LVM
- # devnode_blacklist { devnode "*" } —— 必须注释掉整段!这是 90% 首次失败的根源,它会屏蔽所有 SCSI 设备
- blacklist { devnode "^sda" } —— 明确排除系统盘(根据实际盘符调整,如 sdb 是系统盘就写 ^sdb)
- devices { vendor "YOUR_VENDOR"; product "YOUR_PRODUCT"; } —— 从 scsi_id -g -u -d /dev/sdb 输出中复制 vendor/product(大小写敏感,如浪潮是 "INSUR" "MCS",NetApp 是 "NETAPP" "LUN")
强制重载并验证映射结果
改完配置不重启服务,multipathd 不会自动重读规则:
- 执行 multipath -F 清除旧映射(防止 ghost 设备干扰)
- 立即运行 multipath -v2(不是 -v3)—— 它会逐行打印扫描过程,重点看是否出现 skip: no path 或 blacklisted;成功则输出类似 mpatha (3600a09803830437a00003e5b5c6d7e8f) dm-2 INSUR,MCS
- 最后用 multipath -ll 查看详细路径状态,确认 active/ready 路径数 ≥2,且状态为 running
挂载或建 LVM 前必须确认路径稳定性
不要直接对 /dev/sdb 操作。所有后续动作必须基于 /dev/mapper/mpatha:
- 格式化:mkfs.xfs /dev/mapper/mpatha
- 挂载:mount /dev/mapper/mpatha /data,并写入 /etc/fstab(用 UUID 更稳妥,可通过 blkid /dev/mapper/mpatha 获取)
- 若需 LVM:pvcreate /dev/mapper/mpatha → vgcreate vg_data /dev/mapper/mpatha

















