下面这部分是在三台节点上配置 Device Mapper Multipath 多路径访问共享存储。
你的目标是:
让
nodea.private.example.com、nodeb.private.example.com、nodec.private.example.com都通过 multipath 把前面通过两条 iSCSI 路径看到的同一个共享磁盘聚合成一个多路径设备,并且设备名称为/dev/mapper/mpatha。
1. 什么是 Multipath?
前面你已经配置了 iSCSI,让每台节点通过两个网络地址访问同一个 iSCSI target:
192.168.1.15
192.168.2.15
登录成功后,系统可能会看到两个磁盘设备,例如:
/dev/sdb
/dev/sdc
但这两个设备并不一定是两块不同磁盘。它们很可能是:
同一个后端共享 LUN 的两条访问路径
如果不配置 multipath,系统会把它们当作两个独立磁盘,这样很危险。
Multipath 的作用就是把这些不同路径聚合成一个统一设备,例如:
/dev/mapper/mpatha
这样系统和集群只需要使用:
/dev/mapper/mpatha
而不是直接使用:
/dev/sdb
/dev/sdc
2. 本题要求是什么意思?
题目要求:
在以下节点配置存储多路径,多路径设备名称为 /dev/mapper/mpatha:
nodea.private.example.com
nodeb.private.example.com
nodec.private.example.com
意思是这三台节点都要配置:
device-mapper-multipath
并且最终每台节点上都应该能看到:
/dev/mapper/mpatha
注意:
三台节点访问的是同一个共享存储,所以它们看到的 multipath 设备应该指向同一个后端 LUN。
3. 命令逐条解释
你给出的命令是:
yum install -y device-mapper-multipath
mpathconf --enable
ll /etc/multipath.conf
systemctl enable --now multipathd
fdisk -l
这些命令需要在:
nodea
nodeb
nodec
三台节点上分别执行。
4. 安装 multipath 软件包
yum install -y device-mapper-multipath
作用:
安装 Linux 多路径软件包。
安装后会提供:
multipath
multipathd
mpathconf
常用组件说明:
| 组件 | 作用 |
|---|---|
multipath |
手动扫描和显示多路径设备 |
multipathd |
multipath 守护进程 |
mpathconf |
快速生成和启用 multipath 配置 |
/etc/multipath.conf |
multipath 主配置文件 |
5. 启用 multipath 配置
mpathconf --enable
作用:
启用 multipath,并生成基础配置文件:
/etc/multipath.conf
如果系统之前没有该文件,执行后通常会创建它。
它也可能会设置一些基础内容,例如:
defaults {
user_friendly_names yes
}
user_friendly_names yes 的作用是让 multipath 设备使用类似:
mpatha
mpathb
mpathc
这样的友好名称。
否则设备名可能是很长的 WWID,例如:
36001405xxxxxxxxxxxxxxxxxxxx
6. 查看 /etc/multipath.conf
ll /etc/multipath.conf
ll 通常是:
ls -l
的别名。
这条命令用于确认配置文件是否已经生成。
正常可能看到:
-rw-------. 1 root root ... /etc/multipath.conf
如果文件存在,说明 mpathconf --enable 已经生成了基础配置。
7. 启动并设置 multipathd 开机自启
systemctl enable --now multipathd
这条命令做两件事:
enable
表示设置 multipathd 开机自动启动。
--now
表示立即启动服务。
等价于:
systemctl enable multipathd
systemctl start multipathd
可以检查服务状态:
systemctl status multipathd
如果运行正常,应看到:
active (running)
8. 查看磁盘
fdisk -l
作用:
列出当前系统识别到的磁盘设备。
配置 multipath 后,你可能会看到:
/dev/sdb
/dev/sdc
/dev/mapper/mpatha
其中:
/dev/sdb
/dev/sdc
是底层路径设备。
/dev/mapper/mpatha
是 multipath 聚合后的设备。
后续创建分区、文件系统、LVM 或集群资源时,通常应该使用:
/dev/mapper/mpatha
而不是直接使用:
/dev/sdb
/dev/sdc
9. 仅执行这些命令是否一定会得到 /dev/mapper/mpatha?
不一定。
你给出的命令可以启用 multipath,但如果题目明确要求设备名称为:
/dev/mapper/mpatha
还需要确认 multipath 设备确实叫:
mpatha
如果启用了:
user_friendly_names yes
并且这是系统上的第一个 multipath 设备,通常会自动命名为:
mpatha
但是在某些情况下,设备名可能不是 mpatha,比如:
mpathb
mpathc
或者是 WWID 名称。
所以建议配置后一定要检查:
multipath -ll
10. 推荐检查命令:multipath -ll
配置完成后,在每台节点上执行:
multipath -ll
正常输出可能类似:
mpatha (36001405xxxxxxxxxxxxxxxxxxxx) dm-2 LIO-ORG,store1
size=... features='...' hwhandler='...' wp=rw
|-+- policy='service-time 0' prio=... status=active
| `- 3:0:0:0 sdb 8:16 active ready running
`-+- policy='service-time 0' prio=... status=enabled
`- 4:0:0:0 sdc 8:32 active ready running
重点看:
mpatha
以及下面是否有两条路径:
sdb
sdc
这表示:
/dev/sdb 和 /dev/sdc 被聚合成 /dev/mapper/mpatha
11. 如果没有出现 /dev/mapper/mpatha 怎么办?
可以尝试手动重新扫描 multipath:
multipath -r
或者:
multipath
再查看:
multipath -ll
ls -l /dev/mapper/
确认是否出现:
mpatha
12. 更完整的推荐配置流程
建议在每台节点上执行以下步骤。
12.1 确认 iSCSI 已登录两条路径
先确认前一步 iSCSI 登录成功:
iscsiadm -m session
应该看到两条 session:
192.168.1.15:3260 ... iqn.2021-04.com.example:store1
192.168.2.15:3260 ... iqn.2021-04.com.example:store1
如果这里只看到一条,multipath 就无法形成双路径。
12.2 安装 multipath
yum install -y device-mapper-multipath
12.3 启用 multipath
mpathconf --enable
12.4 检查配置文件
cat /etc/multipath.conf
建议确认里面有类似:
defaults {
user_friendly_names yes
}
如果没有,可以编辑:
vim /etc/multipath.conf
加入:
defaults {
user_friendly_names yes
}
12.5 启动服务
systemctl enable --now multipathd
12.6 重新加载 multipath
multipath -r
12.7 查看结果
multipath -ll
ls -l /dev/mapper/mpatha
fdisk -l /dev/mapper/mpatha
13. 如果必须强制名称为 mpatha
如果系统没有自动生成 mpatha,或者你希望明确指定别名,可以在 /etc/multipath.conf 中使用 multipaths 配置。
步骤如下。
13.1 找到 WWID
执行:
multipath -ll
可能看到:
mpatha (36001405xxxxxxxxxxxxxxxxxxxx) dm-2 LIO-ORG,store1
括号里的:
36001405xxxxxxxxxxxxxxxxxxxx
就是 WWID。
也可以用:
/lib/udev/scsi_id --whitelisted --device=/dev/sdb
或者:
scsi_id -g -u -d /dev/sdb
具体命令路径取决于系统版本。
13.2 编辑 /etc/multipath.conf
vim /etc/multipath.conf
加入类似内容:
defaults {
user_friendly_names yes
}
multipaths {
multipath {
wwid 36001405xxxxxxxxxxxxxxxxxxxx
alias mpatha
}
}
注意把:
36001405xxxxxxxxxxxxxxxxxxxx
替换成你实际查到的 WWID。
13.3 重启 multipathd
systemctl restart multipathd
multipath -r
再检查:
multipath -ll
ls -l /dev/mapper/mpatha
14. 为什么三台节点都要配置成同样的 multipath 名称?
因为这是共享存储,后续如果要在集群中创建资源,比如文件系统资源,可能会引用设备路径:
/dev/mapper/mpatha
如果三台节点设备名不一致,例如:
nodea: /dev/mapper/mpatha
nodeb: /dev/mapper/mpathb
nodec: /dev/mapper/mpathc
那么集群资源迁移到不同节点时就可能找不到设备。
所以题目明确要求:
多路径设备名称为 /dev/mapper/mpatha
就是为了保证三台节点设备路径一致。
15. 每台节点的完整示例
下面以 nodea 为例:
ssh root@nodea.private.example.com
yum install -y device-mapper-multipath
mpathconf --enable
systemctl enable --now multipathd
iscsiadm -m session
multipath -r
multipath -ll
ls -l /dev/mapper/mpatha
fdisk -l /dev/mapper/mpatha
nodeb 和 nodec 也同样执行。
16. 验证结果应该是什么?
在每台节点上执行:
multipath -ll
应该能看到类似:
mpatha (...)
在每台节点上执行:
ls -l /dev/mapper/mpatha
应该存在该设备。
执行:
fdisk -l /dev/mapper/mpatha
应该能看到磁盘容量信息。
17. 常见问题排查
问题 1:multipath -ll 没有输出
可能原因:
- iSCSI 没有登录;
- 系统没有看到多条路径;
- multipathd 没启动;
- 设备被 blacklist 了。
检查:
iscsiadm -m session
lsblk
systemctl status multipathd
问题 2:只有一条路径
检查 iSCSI 是否通过两个 portal 都登录:
iscsiadm -m session
应该有:
192.168.1.15
192.168.2.15
如果少一条,重新登录:
iscsiadm -m discovery -t st -p 192.168.1.15
iscsiadm -m discovery -t st -p 192.168.2.15
iscsiadm -m node -T iqn.2021-04.com.example:store1 -p 192.168.1.15 -l
iscsiadm -m node -T iqn.2021-04.com.example:store1 -p 192.168.2.15 -l
问题 3:设备名不是 mpatha
查看当前设备:
multipath -ll
ls -l /dev/mapper/
如果是:
mpathb
或 WWID 名称,需要在 /etc/multipath.conf 中为该 WWID 指定:
alias mpatha
问题 4:/etc/multipath.conf 不存在
执行:
mpathconf --enable
或者手动创建:
cat > /etc/multipath.conf << 'EOF'
defaults {
user_friendly_names yes
}
EOF
然后:
systemctl restart multipathd
multipath -r
18. 一句话总结
这组命令的意思是:
在 nodea、nodeb、nodec 三台节点上安装并启用
device-mapper-multipath,生成/etc/multipath.conf配置文件,启动multipathd服务,让系统把通过两条 iSCSI 路径看到的同一个共享磁盘聚合成一个统一设备。最终每台节点都应该能看到/dev/mapper/mpatha,后续集群和文件系统应使用这个 multipath 设备,而不是直接使用/dev/sdb或/dev/sdc。
浙公网安备 33010602011771号