multipaths配置多路径

一、什么是多路径?

​ **多路径(Multipath)**通常指的是数据在网络或存储系统中从源到目的地之间存在多个可能的传输路径。这个概念可以应用于不同的技术领域,但最常见的是在计算机网络和存储区域网络(SAN, Storage Area Network)中。

  1. 计算机网络中的多路径: 在计算机网络中,多路径路由允许数据包通过多个不同路径到达目的地。这可以通过动态路由协议来实现,这些协议能够根据当前网络状况选择最佳路径。多路径路由可以提高网络的可靠性和性能,因为它可以在一条路径失败时自动切换到另一条路径,并且可以通过负载均衡来优化带宽使用。
  2. 存储系统中的多路径: 在存储系统中,特别是对于SAN环境,多路径是指服务器和存储设备之间的多个连接路径。它提供了冗余,以防止单点故障导致的数据访问中断。例如,如果一个HBA(主机总线适配器)、交换机端口或电缆发生故障,数据仍然可以通过其他路径进行访问。此外,多路径软件还可以提供负载均衡功能,将I/O请求分散到多个可用路径上,从而提高性能。

二、多路径该如何配置?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#!/bin/bash

# 1.安装程序
yum install device-mapper-multipath -y

# 2.将多路径软件添加至内核模块中
modprobe dm-multipath
modprode dm-round-robin

# 3.检查内核添加情况
lsmod | grep multipath
显示如下类似即可:
# dm_multipath 27427 3 dm_round_robin,dm_service_time
# dm_mod 123303 13 dm_round_robin,dm_multipath,dm_log,dm_mirror,dm_service_time

# 4.启动服务
systemctl enable multipathd --now

# 5.备份并编辑配置文件
# 先查看存储设备的WWID(以下两条命令均可)
sudo udevadm info --query=all --name=/dev/sdX | grep ID_SERIAL
multipath -ll

cp /etc/multipath.conf /etc/multipath.conf.bak
vim /etc/multipath.conf

"""
blacklist {
wwid 3600508b1001c044c39717726236c68d5
}

defaults {
user_friendly_names yes
polling_interval 10
queue_without_daemon no
flush_on_last_del yes
checker_timeout 120
}


devices {
device {
vendor "3par8400"
product "HP"
path_grouping_policy asmdisk
no_path_retry 30
prio hp_sw
path_checker tur
path_selector "round-robin 0"
hardware_handler "0"
failback 15
}
}

# 多路径设备信息
multipaths {
multipath {

wwid 360002ac0000000000000000300023867
alias mpathdisk01
}
}

如果有两个或者多个就再加一条即可。
multipaths {
multipath {
# 多路径设备的wwid放在这里
wwid 360002ac0000000000000000300023867
# 设置多路径设备的别名
# 例如:mpathdisk01
alias mpathdisk01
}
multipath {
wwid 360002ac0000000000000000400023867
alias mpathdisk02
}
}
"""

# 6.重启服务
systemctl restart multipathd

# 7.查看是否成功
lsblk
#结果类似
[root@test ~]# lsblk
"""
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 557G 0 disk
├─sda1 8:1 0 4G 0 part /boot
└─sda2 8:2 0 553G 0 part
├─centos-root 253:0 0 488.9G 0 lvm /
└─centos-swap 253:1 0 64G 0 lvm [SWAP]
sdb 8:16 0 2T 0 disk
└─mpathdisk01 253:2 0 2T 0 mpath
sdc 8:32 0 2T 0 disk
└─mpathdisk01 253:2 0 2T 0 mpath
sdd 8:48 0 2T 0 disk
└─mpathdisk01 253:2 0 2T 0 mpath
sde 8:64 0 2T 0 disk
└─mpathdisk01 253:2 0 2T 0 mpath
"""

# 查看状态
multipath -d -l

# 配置文件解析
"""
blacklist:定义了一些被禁用的设备,只要 WWID 匹配了列表中的任何一个,它就会被黑名单所拒绝。
wwid:唯一标识多路径设备的 32 位十六进制字符串。
defaults:定义了一些默认设置,这些设置可以在其他部分被重写。
user_friendly_names:使多路径设备更易于理解和使用。
polling_interval:检查路径状态的频率(以秒为单位)。
queue_without_daemon:定义了当 multipathd 守护程序处于未运行状态时处理 I/O 请求的行为。
flush_on_last_del:在删除最后一个路径时是否刷新 IO 缓存。
checker_timeout:指定检查器超时的时间。
devices:包含一个或多个
device 块,每个块都描述了一个特定的多路径设备。
device:描述了一个多路径设备及其属性。
vendor、product:设备的制造商和产品名称。
path_grouping_policy:指定将路径分组到哪个组中。
no_path_retry:当无法访问某个路径时进行重试的次数。
prio:指定优先级算法,如 alua、emc、hp_sw 等。
path_checker:指定 IO 路径检查器的类型。
path_selector:指定选择路径的算法。例如,“round-robin 0” 表示依次将请求分发到每个路径上。
hardware_handler:指定用于处理硬件错误的脚本或程序。
failback:指定多长时间后进行故障切换。
multipaths:包含一个或多个
multipath 块,每个块都描述了一个设备的多个路径。
alias:为指定的多路径设备定义别名。

prio 是 multipath.conf 配置文件中的一个关键字,表示优先级算法。它可以指定多路径设备使用哪种算法来选择 I/O 请求路径。例如:

prio alua

以上配置指定了使用 Asymmetric Logical Unit Access(ALUA) 算法进行路径选择。这个算法主要用于 SAN 存储环境下,能够更好地处理存储阵列并发访问的问题。
除了 ALUA,还有其他一些可用的优先级算法,如:
emc:用于与 EMC 存储阵列配合使用。
hp_sw:用于与 HP 存储阵列配合使用。
rdac:用于与 LSI 存储阵列配合使用。
如果没有指定 prio 设置,则默认为 const(优先选择第一个路径)算法,或者是上层应用程序自己控制路径选择。
"""

multipaths配置多路径
https://bote798.top/2025/01/05/multipaths配置多路径/
作者
bote798
发布于
2025年1月5日
许可协议