惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Schneier on Security
The Last Watchdog
The Last Watchdog
Cyberwarzone
Cyberwarzone
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cyber Attacks, Cyber Crime and Cyber Security
L
Lohrmann on Cybersecurity
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
The Cloudflare Blog
V
V2EX
博客园_首页
博客园 - 聂微东
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
G
GRAHAM CLULEY
T
Tenable Blog
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
L
LINUX DO - 最新话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
SecWiki News
SecWiki News
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
N
News | PayPal Newsroom
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
T
Troy Hunt's Blog
博客园 - 【当耐特】
Forbes - Security
Forbes - Security
H
Hacker News: Front Page
A
About on SuperTechFans
B
Blog RSS Feed
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
D
DataBreaches.Net
P
Privacy & Cybersecurity Law Blog
Schneier on Security
Schneier on Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Jina AI
Jina AI
D
Docker
P
Proofpoint News Feed

CHEGVA

十二经脉,子午流注走向图 | CHEGVA 中医阴阳、藏象核心概念解析 | CHEGVA 深入理解CAP理论 | CHEGVA vLLM集成Ray分布式推理部署模型实战 | CHEGVA 达梦数据库备份详解 | CHEGVA 大模型 Temperature 与 Top_p/Top_k 参数详解
多路径磁盘使用场景 | CHEGVA
anzhihe · 2026-05-14 · via CHEGVA

多路径磁盘简介

普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系。如果某一处发生故障,可能导致整个网络瘫痪,我们称这个存储网络中存在单点故障。随着现代信息技术的发展,在IT基础设施运行过程中,对存储网络的安全性和稳定性要求越来越高。在存储网络中,为了避免单点故障,高可靠的存储网络除了对设备和器件做了冗余设计,同时通过多条冗余路径的互联来规避链路的单点故障。而到了有光纤组成的SAN环境,或者由iSCSI组成的IPSAN环境,由于主机和存储通过了光纤交换机或者多块网卡及IP来连接,这样的话,就构成了多对多的关系。也就是说,主机到存储之间的IO有多条路径可以选择,每个主机到所对应的存储可以经过几条不同的路径。利用冗余设计满足存储网络的高可靠性和高性能,就需要通过多路径技术来实现。这种冗余设计既能提高整个存储网络运行的可靠性,又能利用冗余设计达到更高的性能要求。

多路径磁盘(Multipath Disk)的主要作用是提供冗余和负载均衡,以提高存储系统的可靠性和性能。具体来说:

  1. 冗余/高可用性:当服务器和存储设备之间存在多条物理路径(例如,通过多个HBA卡、交换机或控制器连接)时,多路径技术可以确保在一条路径发生故障时,自动切换到另一条可用路径,从而避免单点故障,保证业务连续性。

  2. 负载均衡:多路径软件可以将I/O流量分散到多条路径上,从而提高整体的带宽和性能。有些多路径实现还支持动态负载均衡,根据路径的当前负载情况调整流量分配。

  3. 路径管理:多路径软件可以检测路径的状态,并自动处理路径故障和恢复。当一条路径恢复后,它可以被重新加入使用。

  4. 设备统一命名:通过多路径软件,操作系统可以看到一个统一的设备名(如/dev/mapper/mpathb),而不是多个独立的设备节点(如/dev/sdj、/dev/sdk等)。这简化了管理,因为无论使用哪条路径,都访问同一个存储设备。

  5. 提高性能:通过并发使用多条路径,可以增加存储访问的带宽,特别是对于高I/O需求的应用程序。

在Linux中,多路径功能通常由device-mapper-multipath包提供,它创建了一个虚拟设备(在/dev/mapper下)来代表多路径磁盘。这样,上层应用(如LVM、文件系统等)就可以像使用普通磁盘一样使用多路径设备,而不必关心底层路径的变化。

在配置LVM时,必须使用多路径设备(如/dev/mapper/mpathb)作为物理卷,而不是使用单个路径的设备节点(如/dev/sdj)。这是因为如果使用单个路径设备,当该路径故障时,LVM将无法访问该物理卷,即使还有其他路径可用。而使用多路径设备,即使一条路径故障,多路径软件会自动切换到其他路径,LVM不会受到影响。因此,多路径磁盘在需要高可用性和高性能的企业级存储环境中非常重要。

多路径磁盘(Multipath I/O)的作用详解

一、核心作用:提高存储可用性和性能

1. 高可用性(故障切换):以华为UltraPath为例

主要作用:防止单点故障
物理拓扑:
   服务器
     ├── HBA卡1 → 光纤交换机1 → 存储控制器A
     └── HBA卡2 → 光纤交换机2 → 存储控制器B
                  ↓
               同一存储LUN
  • 路径冗余:提供多条物理路径访问同一存储设备

多路径磁盘使用场景

  • 自动故障切换:当某条路径故障时,自动切换到正常路径

在单路径组网中,主机HBA或iSCSI启动器在链路断开时会进行一段时间的尝试重连(即防闪断机制,一般30秒或60秒),如果重连成功则I/O能够继续执行;而在多路径组网中,由于存在备用路径,所以通常会设置缩短HBA或iSCSI的重连时间,以使多路径软件能够快速感知I/O失败并切换路径,从而减小上层应用I/O阻塞的时间。

多路径磁盘使用场景

  • 零中断访问:应用无感知的路径切换,保证业务连续性

UltraPath在路径故障时可以自动将I/O转移到其他可用路径,流程如下图所示:

1)应用向UltraPath生成的虚拟磁盘下发I/O;

2)UltraPath将I/O转发给一个path 1(即SCSI设备);

3)路径故障导致该path 1上I/O失败;

4)UltraPath将I/O重新下发给另一个path 2;

5)path 2返回I/O成功; 

6)UltraPath向上层应用返回I/O成功。 

多路径磁盘使用场景

2. 负载均衡

I/O流量分发:
读取请求:path1 → path2 → path3 → path1...
写入请求:path2 → path3 → path1 → path2...
  • 带宽聚合:多路径并发传输,提高吞吐量

  • 性能优化:根据算法(RR、队列深度等)分配I/O请求

  • 避免单路径瓶颈:防止单个HBA卡或端口成为性能瓶颈

多路径磁盘使用场景

3. 路径管理

  • 路径检测:持续监控各路径健康状态

  • 自动恢复:故障路径修复后自动重新启用

  • 动态优化:根据路径性能动态调整流量分配

二、具体应用场景

场景1:SAN存储环境

# 典型SAN多路径配置
服务器:2个HBA卡 → 2台光纤交换机 → 存储双控制器
设备映射:
  /dev/sdc (HBA1 → 交换机1 → 控制器A)
  /dev/sdd (HBA1 → 交换机2 → 控制器B) 
  /dev/sde (HBA2 → 交换机1 → 控制器A)
  /dev/sdf (HBA2 → 交换机2 → 控制器B)
  
多路径聚合后:/dev/mapper/mpath0 (包含以上4条路径)

场景2:iSCSI多路径

# iSCSI多路径配置
服务器:2个网卡 → 2台交换机 → 存储双IP端口
路径:
  eth1 → 192.168.1.10 → LUN1
  eth1 → 192.168.2.10 → LUN1
  eth2 → 192.168.1.10 → LUN1
  eth2 → 192.168.2.10 → LUN1

三、技术优势对比

场景无多路径有多路径优势体现
HBA卡故障存储访问中断自动切换到另一HBA卡业务不中断
光纤交换机故障存储不可用使用另一交换机路径高可用性
存储控制器故障存储离线切换到备用控制器持续可用
高并发I/O单路径带宽限制多路径聚合带宽性能提升
维护操作需停机维护可在线更换部件运维便利

四、多路径软件实现

Linux常见多路径软件

  1. DM-Multipath (device-mapper-multipath)

    • RHEL/CentOS默认

    • 配置简单,功能完善

  2. EMC PowerPath

    • 商业软件

    • 高级功能,厂商支持

  3. VMware PSA/NMP

    • 虚拟化环境专用

    • 与vSphere深度集成

工作模式对比

五、实际配置示例

Multipath安装与使用

linux中大多已经默认安装了multipath,只需设置开机启动即可.

systemctl enable multipathd.service

multipath.conf 配置详解

$multipath -T
defaults {
  verbosity 2
  polling_interval 5
  max_polling_interval 20
  reassign_maps "no"
  multipath_dir "//lib/multipath"
  path_selector "service-time 0"  #选择那一条路径进行下次IO操作
  path_grouping_policy "multibus" #路径组策略 
  uid_attribute "ID_SERIAL"
  prio "const"
  prio_args ""
  features "0"
  path_checker "tur"  # 决定路径状态的方法 
  alias_prefix "mpath"
  failback "immediate" #故障恢复的模式 
  rr_min_io 1000   # 在当前的用户组中,在切换到另外一条路径之前的IO请求的数目 
  rr_min_io_rq 1
  max_fds "max"
  rr_weight "uniform"
  no_path_retry "fail" #默认fail,在disable queue之前系统尝试使用失效路径的次数的数值 
  queue_without_daemon "no"
  flush_on_last_del "no"
  user_friendly_names "yes"
  fast_io_fail_tmo 5
  bindings_file "/etc/multipath/bindings"
  wwids_file "/etc/multipath/wwids"
  prkeys_file "/etc/multipath/prkeys"
  log_checker_err always
  all_tg_pt "no"
  retain_attached_hw_handler "yes"
  detect_prio "yes"
  detect_checker "yes"
  force_sync "no"
  strict_timing "no"
  deferred_remove "no"
  config_dir "/etc/multipath/conf.d"
  delay_watch_checks "no"
  delay_wait_checks "no"
  san_path_err_threshold "no"
  san_path_err_forget_rate "no"
  san_path_err_recovery_time "no"
  marginal_path_err_sample_time "no"
  marginal_path_err_rate_threshold "no"
  marginal_path_err_recheck_gap_time "no"
  marginal_path_double_failed_time "no"
  find_multipaths "on"
  uxsock_timeout 4000
  retrigger_tries 0
  retrigger_delay 10
  missing_uev_wait_timeout 30
  skip_kpartx "no"
  disable_changed_wwids ignored
  remove_retries 0
  ghost_delay "no"
  find_multipaths_timeout -10
  enable_foreign ""
  marginal_pathgroups "no"
}
 
# 后端设备(不包含以下设备节点)
blacklist {
  devnode "^sda"
  devnode "^hd[a-z]"
  devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
  devnode "^dcssblk[0-9]*"
  devnode "^(ram|zram|raw|loop|fd|md|dm-|sr|scd|st|dcssblk)[0-9]"
  devnode "^(td|hd|vd)[a-z]"
  devnode "^cciss!c[0-9]d[0-9]*"
}
  device {
    vendor "SGI"  #厂商名称,可通过multipath –v3获取到 
    product "Universal Xport"  #产品型号 
    getuid_callout "/sbin/scsi_id -g -u -s /block/%n" #获得唯一设备号使用的默认程序 
  }
  device {
          vendor "^DGC"
          product "LUNZ"
  }
  device {
          vendor "EMC"
          product "LUNZ"
  }
  device {
          vendor "DELL"
          product "Universal Xport"
  }
  device {
          vendor "IBM"
          product "Universal Xport"
  }
  device {
          vendor "IBM"
          product "S/390"
  }
  device {
          vendor "LENOVO"
          product "Universal Xport"
  }
  device {
          vendor "(NETAPP|LSI|ENGENIO)"
          product "Universal Xport"
  }
  device {
          vendor "STK"
          product "Universal Xport"
  }
  device {
          vendor "SUN"
          product "Universal Xport"
  }
  device {
          vendor "(Intel|INTEL)"
          product "VTrak V-LUN"
  }
  device {
          vendor "Promise"
          product "VTrak V-LUN"
  }
  device {
          vendor "Promise"
          product "Vess V-LUN"
  }
}
blacklist_exceptions {
  property "(SCSI_IDENT_|ID_WWN)"
}
devices {
  device {
    vendor "COMPELNT"
    product "Compellent Vol"
    path_grouping_policy "multibus"
    no_path_retry "queue"
  }
}
 
overrides {
  ...
}
 
multipaths {
  multipath {
    wwid "36000d3100366e6000000000000000021"   #磁盘的WWID 
    alias "k8sapp"
  }
  multipath {
    wwid "36000d3100366e6000000000000000020"
    alias "k8slog"
  }
}

多路径拓扑分析

# 查看详细路径拓扑
multipath -ll

输出示例:
mpathb (3600a0b80001234567890123456789012) dm-1 IBM,2145
size=100G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| |- 2:0:0:1 sdc 8:32  active ready running
| `- 3:0:0:1 sde 8:64  active ready running
`-+- policy='service-time 0' prio=10 status=enabled
  |- 2:0:1:1 sdd 8:48  active ready running
  `- 3:0:1:1 sdf 8:80  active ready running

路径状态解读

  • status=active:当前活动路径

  • status=enabled:备用可用路径

  • prio=50:优先级较高(主路径)

  • prio=10:优先级较低(备路径)

六、企业级应用价值

业务连续性

  • RTO(恢复时间目标)降低:路径切换秒级完成

  • RPO(恢复点目标)保障:数据访问不中断

运维管理

# 在线维护示例
# 1. 更换HBA卡时
multipath -f /dev/mapper/mpath0  # 临时移除设备
# 更换硬件...
multipath -v2                     # 重新扫描识别
# 业务无感知完成维护

性能调优

# 多路径策略配置示例
/etc/multipath.conf:
  defaults:
    polling_interval     10
    path_selector        "round-robin 0"
    path_grouping_policy multibus
    rr_min_io            100
    rr_weight            priorities
    failback             immediate

七、与LVM结合的实践意义

存储虚拟化双层冗余

物理层冗余:多路径(多条物理路径)
逻辑层冗余:LVM镜像(多个PV镜像)
应用层:业务系统

配置最佳实践

  1. 先配置多路径,后配置LVM

  2. LVM只操作多路径设备(/dev/mapper/*)

  3. 定期监控路径状态

总结

多路径磁盘的核心价值在于:

  • 可靠性:消除单点故障,提供存储高可用

  • 性能:聚合带宽,提升I/O吞吐量

  • 可维护性:支持在线维护,降低运维窗口

  • 可管理性:统一设备视图,简化存储管理

在企业级存储环境中,多路径是确保关键业务连续性和性能的基础必备技术,与LVM、RAID等技术协同工作,构建稳定可靠的存储架构。

参考: