企业级 iSCSI 端到端与多路径存储详细实施方案 (RHEL / openEuler)
本方案涵盖了从存储服务端(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 网卡进行高可用故障演练,业务不会中断。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)