本方案涵盖了从存储服务端(Target)提供存储空间,到业务客户端(Initiator)挂载存储,再到配置多路径(Multipath)高可用的完整端到端实施流程。
一、 角色定义与物理拓扑拓扑
在实施前,必须明确两台机器的角色和网络规划。为了实现多路径高可用,必须规划两个独立的存储网段。
1. 机器角色分配
【机器 A】存储服务器 (iSCSI Target 端)
作用:充当存储阵列,提供物理磁盘空间,划分 LUN 并通过网络共享。
网络:存储网卡 1 (
192.168.113.66);存储网卡 2 (192.168.113.67)。
【机器 B】业务服务器 (iSCSI Initiator + Multipath 客户端)
作用:运行核心业务(如数据库),连接存储服务器,配置多路径并格式化使用磁盘。
网络:存储网卡 1 (
192.168.113.11);存储网卡 2 (192.168.113.12)。
复制网卡 [root@localhost network-scripts]# cp ifcfg-ens160 ifcfg-ens224 修改网卡 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=eui64 NAME=ens224 DEVICE=ens224 ONBOOT=yes IPADDR=192.168.113.67 PREFIX=24 GATEWAY=192.168.113.2 DNS1=192.168.113.2
切记:NAME与DEVICE与UUID信息一定不能和ens33信息一样
重启网卡
[root@localhost network-scripts]# systemctl restart NetworkManager
二、存储服务器 (Target服务端) 详细部署
操作节点:仅在【机器 A】上执行。
目标:使用targetcli将本地的一块磁盘(或逻辑卷)通过两条网络路径共享出去,并只允许【机器 B】访问。
1、安装并启动 Target 服务
sudo dnf install targetcli -y systemctl enable --now target
2、准备底层存储
进入targetcli交互命令行
3、配置后端存储
/> /backstores/block create name=disk01 dev=/dev/sda
4、创建 Target IQN 与 LUN(唯一)
/> iscsi/ create iqn.2025-05.com.example:storage.target01
5、进入刚刚创建的 Target 目录(TPG1),将后备存储disk01映射为 LUN 0:
/> cd iscsi/iqn.2025-05.com.example:storage.target01/tpg1/luns create /backstores/block/disk01
6、配置 ACL (访问控制)
定义谁可以连接这个存储。
此处填写【机器 B】(客户端)未来要使用的 IQN 名称(例如iqn.2025-05.com.example:app.client01):
/iscsi/iqn.20...t01/tpg1/luns> cd ../acls /iscsi/iqn.20...t01/tpg1/acls> create iqn.2025-05.com.example:app.client01
7、 配置 Network Portals (网络入口)
为了实现多路径,需要监听【机器 A】的两个存储网卡 IP:
/iscsi/iqn.20...t01/tpg1/acls> cd ../portals/ /iscsi/iqn.20.../tpg1/portals> delete 0.0.0.0 3260 /iscsi/iqn.20.../tpg1/portals> create 192.168.113.66 3260 /iscsi/iqn.20.../tpg1/portals> create 192.168.113.67 3260
8、保存
/iscsi/iqn.20...target01/tpg1> cd / /> saveconfig /> exit
三、 业务服务器 (Initiator客户端) 详细部署
操作节点:仅在【机器 B】上执行。
目标:配置与 Target 端 ACL 匹配的 IQN,通过两条网络链路发现并登录存储
1、安装客户端组件
sudo dnf install iscsi-initiator-utils -y
2、配置 Initiator IQN
修改客户端的 IQN,必须与【机器 A】第 5 步 ACL 中配置的名称完全一致。
sudo vi /etc/iscsi/initiatorname.iscsi
3、修改为
InitiatorName=iqn.2025-05.com.example:app.client01
4、启动服务并发现 Target
sudo systemctl enable --now iscsid sudo iscsiadm -m discovery -t st -p 192.168.113.66 sudo iscsiadm -m discovery -t st -p 192.168.113.67
5、登录并设置开机自启动
# 登录发现的所有 Target sudo iscsiadm -m node -l # 设置开机自动登录 sudo iscsiadm -m node -o update -n node.startup -v automatic
6、确认链路连通
lsblk
此时你应该看到两个大小相同的新磁盘(如sdb和sdc),它们实际上是同一个物理 LUN 的两条路径。
四、多路径 (DM-Multipath) 详细部署
操作节点:继续在【机器 B】上执行。
目标:将刚才看到的sdb和sdc聚合成一个高可用的逻辑设备。
1、安装与初始化多路径(kylin系统与openEuler系统可能自带multipath)
sudo dnf install device-mapper-multipath -y # 生成默认配置并启动服务 sudo mpathconf --enable --with_multipathd y
2、获取磁盘 WWID
[root@zabbix-manager network-scripts]# sudo multipath -v2 [root@zabbix-manager network-scripts]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 100G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 99G 0 part ├─klas-root 253:0 0 63.9G 0 lvm / ├─klas-swap 253:1 0 3.9G 0 lvm [SWAP] └─klas-backup 253:2 0 31.2G 0 lvm sdb 8:16 0 200G 0 disk └─360014050a30281fbc4043f8a6747b369 253:3 0 200G 0 mpath sdc 8:32 0 200G 0 disk └─360014050a30281fbc4043f8a6747b369 253:3 0 200G 0 mpath sr0 11:0 1 1024M 0 rom
3、配置 multipath.conf
编辑配置文件,为其指定别名和高可用策略:
sudo vim /etc/multipath.conf multipaths { multipath { wwid "36001405xxxxxxxxxxxxxxxxxxxxxx" # 替换为实际查到的 WWID alias "mpath_data" # 自定义别名 path_grouping_policy "multibus" # 负载均衡策略,所有路径处于活跃状态 path_selector "round-robin 0" # I/O 轮询算法 failback "immediate" # 链路恢复后立即切回 no_path_retry "fail" } }4、重启生效与验证
输出应显示mpath_data状态为active,下方包含两条active ready running的路径(对应sdb和sdc)
[root@zabbix-manager network-scripts]# sudo systemctl restart multipathd [root@zabbix-manager network-scripts]# sudo multipath -ll mpath_data (360014050a30281fbc4043f8a6747b369) dm-3 LIO-ORG,disk01 size=200G features='2 queue_mode mq' hwhandler='1 alua' wp=rw |-+- policy='service-time 0' prio=50 status=active | `- 33:0:0:0 sdc 8:32 active ready running `-+- policy='service-time 0' prio=50 status=enabled `- 34:0:0:0 sdb 8:16 active ready running
五、 【机器 B】业务使用:格式化与持久化挂载
警告:绝对不能直接格式化/dev/sdb或/dev/sdc,必须操作多路径别名设备。
sudo mkfs.xfs /dev/mapper/mpath_data
配置网络存储开机挂载 (_netdev)
创建挂载点:
sudo mkdir -p /data
编辑/etc/fstab
/dev/mapper/mpath_data /data xfs defaults,_netdev 0 0
挂载测试
sudo mount -a df -h | grep mpath_data
至此,端到端的 iSCSI 服务端提供、客户端挂载、以及多路径容灾部署已全部实施完毕。可以尝试断开【机器 B】的10.0.1.10网卡进行高可用故障演练,业务不会中断。