服务器iSCSI多路径(Multipath)是指服务器与存储阵列之间通过多条物理链路(如多块网卡或多根光纤)同时连接,并将这些链路虚拟成一个逻辑设备供系统使用,从而实现链路冗余和负载均衡的技术。简单说,就是给服务器和存储之间多修几条路,一条堵了或断了,数据自动走另一条,业务不中断。
iSCSI多路径的核心作用:不只是冗余,更是性能
很多刚接触存储的朋友会把多路径简单理解为”双网卡绑定的高可用版”,这个理解只对了一半,iSCSI多路径解决的不仅是”链路断了怎么办”,还解决了”链路怎么用更高效”的问题。
从工作原理上看,多路径技术做的事情有三件:
- 故障切换:检测到某条物理链路断开,自动将IO请求切换到健康链路上,应用无感知
- 负载均衡:将大量IO请求分散到多条链路上,避免单条链路成为性能瓶颈
- 路径管理:将多个物理设备映射为同一个逻辑设备,避免操作系统识别出多个重复磁盘
实际操作中,你在服务器上执行fdisk -l时,如果配置了多路径,你会看到一个整的磁盘设备(如/dev/mapper/mpatha),而不是看到sdb、sdc、sdd等多个重复磁盘,如果没有多路径软件,系统会把这多个物理路径识别成多个独立磁盘,直接写入会导致数据损坏。
iSCSI多路径的适用场景有哪些
不是所有iSCSI环境都必须上多路径,但如果你的业务属于以下类型,建议你部署:
- 数据库核心业务:Oracle、MySQL等数据库对IO连续性和数据一致性要求极高,突然断链可能引发数据文件损坏
- 虚拟化平台:vSphere、Hyper-V等宿主机挂载共享存储,所有虚拟机的磁盘都在上面,链路故障意味着大规模业务中断
- 生产环境关键应用:ERP、CRM等系统,停机一小时损失远超多路径方案的部署成本
行业共识认为,生产环境中存储链路故障的概率远高于存储设备本身故障的概率,网卡松动、交换机端口老化、光纤模块故障都是常见诱因,多路径是抵御这类风险最直接的手段。
iSCSI多路径和单路径的真实性能差异
用一场实际场景来对比:
假设你的存储有一台双控阵列,每台控制器配了两个千兆网口用于业务,服务器侧配置了两块千兆网卡,在单路径配置下,服务器只能用一个网口连一台控制器的业务口,可用带宽是

1Gbps,控制器的第二个网口和服务器第二块网卡完全是摆设。
配置多路径后,四条链路同时工作,可用带宽理论上达到4Gbps,虽然iSCSI协议开销和存储控制器处理能力会打折扣,实测顺序读性能可能只有2.5-3Gbps,但相比单路径已经是质的提升。
下表能让你更直观地理解多路径在不同场景的价值:
| 对比维度 | 单路径 | 多路径 |
|---|---|---|
| 链路冗余 | 无,断链即停机 | 有,断一条不影响业务 |
| 性能扩展 | 固定上限 | 随链路数量提升 |
| 配置复杂度 | 极低 | 中等,需专业配置 |
| 适用场景 | 测试环境、非关键业务 | 生产环境、关键应用 |
如何在Linux服务器上配置iSCSI多路径
以最常见的CentOS/RHEL 7/8/9环境为例,完整配置路径如下:
第一步:安装所需软件包
yum install -y iscsi-initiator-utils device-mapper-multipath
第二步:配置iSCSI Initiator名称
编辑/etc/iscsi/initiatorname.iscsi,将InitiatorName设为你在存储侧登记的IQN字符串,
InitiatorName=iqn.2024-06.com.example:server01
第三步:发现存储端的iSCSI目标
iscsiadm -m discovery -t sendtargets -p 192.168.1.100 iscsiadm -m discovery -t sendtargets -p 192.168.1.101
第四步:登录所有发现的Target
iscsiadm -m node -L all
登录后不要急着格式化,先确认系统识别到了多少条路径:
ls -l /sys/class/scsi_device/
或者使用lsscsi查看,你会看到同一存储LUN出现了4次,代表4条路径。
第五步:配置multipath.conf文件
这是最关键的一步,生成默认配置:
mpathconf --enable --with_multipathd yes
然后编辑/etc/multipath.conf,加入如下关键配置:
defaults {
user_friendly_names yes
find_multipaths yes
path_grouping_policy multibus
failback immediate
no_path_retry 5
}
其中failback immediate表示故障链路恢复后立即自动切回,

no_path_retry 5表示所有路径失效后重试5次再报错,这能有效防止存储阵列重启期间文件系统被强制卸载。
第六步:重启multipathd服务并验证
systemctl restart multipathd multipath -ll
执行multipath -ll后,你会看到类似这样的输出,注意size=100G后面的paths active=4,表示4条路径都正常工作:
mpatha (36001405f4c9e7b8a2c6d1f3e8a9b0c1d) dm-0 SANArray,LUN01
size=100G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active
|- 5:0:0:1 sdb 8:16 active ready running
|- 6:0:0:1 sdc 8:32 active ready running
|- 7:0:0:1 sdd 8:48 active ready running
`- 8:0:0:1 sde 8:64 active ready running
第七步:在/dev/mapper/目录下找到对应的逻辑设备
配置成功后,使用/dev/mapper/mpatha(或者如果你设置了alias,会是/dev/mapper/ YourAlias)进行分区、格式化和挂载,注意不要再用/dev/sdb等原始设备,否则会绕过多路径保护。
iSCSI多路径故障闪断的排查思路
多路径配置完毕不代表一劳永逸,遇到以下问题时按顺序排查:
multipath -ll输出路径全部为”fault”状态
优先检查物理链路和IP配置,在两台存储控制器上确认iSCSI Target绑定的IP是否可达,使用ping验证基础连通性,然后查看dmesg | tail,确认是否有网卡链路抖动提示,最常见的原因是交换机端口协商失败,强制设为千兆全双工往往能解决。
只有部分路径激活,另外的路径显示”failed”
在存储侧查看该LUN是否映射给了服务器的所有iSCSI Initiator IP,很多存储默认只映射了一个启动器IP,导致服务器虽然发了多路径发现请求,但存储拒绝了部分路径的访问权限,在存储管理界面,将initiator组里添加全部IP地址即可。
重启服务器后多路径设备消失
检查/etc/multipath.conf中的设备黑名单设置,确认你的设备没有被黑名单规则过滤,另外确认iscsi服务已启用开机自启(systemctl enable iscsid iscsi),并且Login状态为persistent(持久化登录),使用iscsiadm -m node -o update -n node.startup -v automatic设置。
iSCSI多路径配置里的常见误区
不少运维人员踩过这些坑,你需要注意回避:
- 认为多路径配置后网络性能会自动翻倍

,多路径需要存储阵列端的ALUA或者RoundRobin策略配合,如果存储侧配置的是failover_only模式,那么同时只有一条路径在传输数据
- 忽略存储控制器的端口角色,部分存储阵列的业务口和复制口分离,如果误将复制口用于iSCSI业务,处理性能会明显受限
- 多条路径挂在同一个交换机上,如果服务器两端网卡接在同一个TOR交换机上,交换机故障依然是单点,多路径的价值大打折扣,让不同路径跨接入交换机、甚至跨机房,才是真正的冗余
- Windows环境下忘了安装MPIO功能,Windows Server默认不开启MPIO,在”服务器管理器-功能和功能”中添加”多路径I/O”之后,还要在”MPIO-发现多路径”中勾选”添加对iSCSI设备的支持”
关于iSCSI多路径配置你需要知道的最后一点
多路径技术的核心价值在于,它让你能在不改变上层应用逻辑的情况下,同时获得链路冗余和性能叠加两个好处,对于预算充足且运维能力较强的企业,FC SAN仍然是性能和稳定性上限更高的选择,但对于中小规模应用场景,完善的iSCSI多路径方案已经能够满足绝大多数业务的可用性要求。
Q&A:iSCSI多路径的常见疑问解答
Q1:iSCSI多路径的链路数量和性能提升是线性关系吗?
不是,iSCSI多路径的性能提升受限于存储控制器本身的处理能力,当链路数达到4条以上时,性能增长曲线趋平,多数情况下,2到4条链路就能达到存储控制器的性能上限,继续增加链路只是增加冗余度,不会带来明显的性能增长。
Q2:配置iSCSI多路径后,原有的磁盘分区数据会丢失吗?
如果你在单路径状态下已经使用了某块裸设备并写入了数据,那么配置多路径后必须使用multipath -r让新设备映射生效,并将数据从原来的/dev/sd设备迁移到新的/dev/mapper设备,原数据不会自动跳到新设备上,直接格式化会丢失全部数据,但如果你初始就在多路径后格式化和挂载使用,则完全不存在此问题。
Q3:linux iscsi多路径和windows MPIO的配置逻辑差别大吗?
核心原理一致,配置入口不一样,Linux环境用iscsiadm管理target登录和multipath.conf控制路径策略;Windows环境用”iSCSI发起程序”建立连接,再在”MPIO”组件中开启设备支持,Windows的MPIO策略通常建议选择”故障转移”或”循环”两种模式,前者偏重冗余,后者偏重负载分担。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/794953.html


评论列表(1条)
这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是多路径部分,给了我很多新的思路。感谢分享这么好的内容!