下面这部分是在三台节点上配置 Device Mapper Multipath 多路径访问共享存储

你的目标是:

nodea.private.example.comnodeb.private.example.comnodec.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

nodebnodec 也同样执行。


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