企业级 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)。复制网卡 [rootlocalhost network-scripts]# cp ifcfg-ens160 ifcfg-ens224 修改网卡 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic DEFROUTEyes IPV4_FAILURE_FATALno IPV6INITyes IPV6_AUTOCONFyes IPV6_DEFROUTEyes IPV6_FAILURE_FATALno IPV6_ADDR_GEN_MODEeui64 NAMEens224 DEVICEens224 ONBOOTyes IPADDR192.168.113.67 PREFIX24 GATEWAY192.168.113.2 DNS1192.168.113.2切记NAME与DEVICE与UUID信息一定不能和ens33信息一样重启网卡[rootlocalhost network-scripts]# systemctl restart NetworkManager二、存储服务器 (Target服务端) 详细部署操作节点仅在【机器 A】上执行。目标使用targetcli将本地的一块磁盘或逻辑卷通过两条网络路径共享出去并只允许【机器 B】访问。1、安装并启动 Target 服务sudo dnf install targetcli -y systemctl enable --now target2、准备底层存储进入targetcli交互命令行3、配置后端存储/ /backstores/block create namedisk01 dev/dev/sda4、创建 Target IQN 与 LUN唯一/ iscsi/ create iqn.2025-05.com.example:storage.target015、进入刚刚创建的 Target 目录TPG1将后备存储disk01映射为 LUN 0/ cd iscsi/iqn.2025-05.com.example:storage.target01/tpg1/luns create /backstores/block/disk016、配置 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.client017、 配置 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 32608、保存/iscsi/iqn.20...target01/tpg1 cd / / saveconfig / exit三、 业务服务器 (Initiator客户端) 详细部署操作节点仅在【机器 B】上执行。目标配置与 Target 端 ACL 匹配的 IQN通过两条网络链路发现并登录存储1、安装客户端组件sudo dnf install iscsi-initiator-utils -y2、配置 Initiator IQN修改客户端的 IQN必须与【机器 A】第 5 步 ACL 中配置的名称完全一致。sudo vi /etc/iscsi/initiatorname.iscsi3、修改为InitiatorNameiqn.2025-05.com.example:app.client014、启动服务并发现 Targetsudo 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.675、登录并设置开机自启动# 登录发现的所有 Target sudo iscsiadm -m node -l # 设置开机自动登录 sudo iscsiadm -m node -o update -n node.startup -v automatic6、确认链路连通lsblk此时你应该看到两个大小相同的新磁盘如sdb和sdc它们实际上是同一个物理 LUN 的两条路径。四、多路径 (DM-Multipath) 详细部署操作节点继续在【机器 B】上执行。目标将刚才看到的sdb和sdc聚合成一个高可用的逻辑设备。1、安装与初始化多路径kylin系统与openEuler系统可能自带multipathsudo dnf install device-mapper-multipath -y # 生成默认配置并启动服务 sudo mpathconf --enable --with_multipathd y2、获取磁盘 WWID[rootzabbix-manager network-scripts]# sudo multipath -v2 [rootzabbix-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[rootzabbix-manager network-scripts]# sudo systemctl restart multipathd [rootzabbix-manager network-scripts]# sudo multipath -ll mpath_data (360014050a30281fbc4043f8a6747b369) dm-3 LIO-ORG,disk01 size200G features2 queue_mode mq hwhandler1 alua wprw |-- policyservice-time 0 prio50 statusactive | - 33:0:0:0 sdc 8:32 active ready running -- policyservice-time 0 prio50 statusenabled - 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网卡进行高可用故障演练业务不会中断。