文章目录
-
- [一、 iSCSI 技术概述](#一、 iSCSI 技术概述)
- [二、 iSCSI 核心架构与概念](#二、 iSCSI 核心架构与概念)
-
- [1. 核心组件定义](#1. 核心组件定义)
- [2. 交互流程](#2. 交互流程)
- [三、 环境规划与基础配置](#三、 环境规划与基础配置)
-
- [1. 节点规划](#1. 节点规划)
- [2. 系统初始化](#2. 系统初始化)
- [四、 iSCSI Target 服务端配置](#四、 iSCSI Target 服务端配置)
-
- [1. 安装与启动服务](#1. 安装与启动服务)
- [2. 配置 Backstore(后端存储)](#2. 配置 Backstore(后端存储))
- [3. 创建 Target 与 IQN](#3. 创建 Target 与 IQN)
- [4. 绑定 LUN 与配置 ACL](#4. 绑定 LUN 与配置 ACL)
- [5. 优化 Portal 监听地址](#5. 优化 Portal 监听地址)
- [6. 保存配置](#6. 保存配置)
- [7. 非交互式管理](#7. 非交互式管理)
- [五、 iSCSI Initiator 客户端配置](#五、 iSCSI Initiator 客户端配置)
-
- [1. 安装与初始化](#1. 安装与初始化)
- [2. 发现与连接 Target](#2. 发现与连接 Target)
- [3. 验证存储设备](#3. 验证存储设备)
- [4. 格式化 iSCSI 设备](#4. 格式化 iSCSI 设备)
- [5. 持久化挂载与系统启动保障](#5. 持久化挂载与系统启动保障)
- [6. 断开目标连接](#6. 断开目标连接)
- 7.故障排查
- 六、构建高可用多路径(Multipath)架构
- [七、 总结](#七、 总结)
一、 iSCSI 技术概述
SCSI (Small Computer System Interface,小型计算机系统接口)是计算机与智能设备(如硬盘、光驱、打印机等)之间通信的经典标准。随着网络技术的发展,IBM 研发了 iSCSI(Internet SCSI)技术,又称 IP-SAN。该技术将传统 SCSI 接口与以太网技术深度融合,基于 TCP/IP 协议栈封装 SCSI 指令,使其能够在 IP 网络中透明传输,从而实现存储资源的网络化共享。
在性能保障方面,iSCSI 通常依托专用的 10 Gb 或更高速率的以太网构建存储网络。由于 SAN 流量通常在数据中心内部封闭传输,且理想状态下与 LAN 业务网络物理隔离,因此默认不进行加密以追求极致性能。若需跨越 WAN 传输,管理员可通过配置 IPsec 来保障数据链路安全。
二、 iSCSI 核心架构与概念
iSCSI 采用经典的 C/S(客户端/服务端)架构。对于 Initiator 而言,远程 iSCSI Target 呈现为本地未格式化的 SCSI 块设备,其使用体验等同于通过 FC 或直连 SAS 连接的本地磁盘。

1. 核心组件定义
- Initiator(发起端):iSCSI 客户端,通常以软件形式部署,也可通过硬件 HBA(Host Bus Adapter)实现。每个 Initiator 必须拥有全局唯一的 IQN 标识。
- Target(目标端):iSCSI 服务器上的存储资源实体。每个 Target 拥有一个唯一的 IQN,并提供一个或多个 LUN(逻辑单元)。单台物理服务器可承载多个 Target。
- IQN(iSCSI Qualified Name) :全局唯一标识符,遵循严格命名规范:
iqn.YYYY-MM.com.reversed.domain:name_string。其中YYYY-MM为注册年月,com.reversed.domain为反向域名,name_string为自定义目标名称。 - Portal(门户) :定义 Target 监听的 IP 地址与端口(如
172.25.250.50:3260),是网络访问的入口。 - LUN(Logical Unit Number):Target 对外暴露的块设备映射。
- ACL(Access Control List):基于 Initiator IQN 的访问控制列表,用于精细化权限管理。
- TPG(Target Portal Group):Target 的完整配置集合,包含 Portal、LUN 和 ACL。常规场景下每个 Target 仅包含一个 TPG。
2. 交互流程
- Discovery(发现):Initiator 查询 Target 端可用的存储资源列表。
- Login(登录):Initiator 向 Target 发起身份验证,验证通过后即可挂载并使用远程块设备。
三、 环境规划与基础配置
1. 节点规划
| 节点角色 | 主机名 | IP 地址 | 存储配置 |
|---|---|---|---|
| iSCSI Target | iscsi-server | 10.1.8.10/24 | 新增 2 块 20G SCSI 磁盘 |
| iSCSI Initiator | iscsi-client | 10.1.8.11/24 | 无额外存储 |
2. 系统初始化
为确保网络连通性与服务正常运行,需在双端执行以下基础配置(以 iscsi-server 为例,iscsi-client 仅需修改对应主机名与 IP):
bash
# 设置主机名
[root@localhost ~]# hostnamectl set-hostname iscsi-server
# 配置静态网络
[root@localhost ~]# nmcli connection modify ens33 ipv4.method manual \
ipv4.addresses 10.1.8.10/24 ipv4.gateway 10.1.8.2 ipv4.dns 10.1.8.2 autoconnect yes
[root@localhost ~]# nmcli connection up ens33
# 关闭防火墙与 SELinux(生产环境建议配置相应规则而非直接关闭)
[root@localhost ~]# systemctl disable firewalld --now
[root@localhost ~]# setenforce 0
四、 iSCSI Target 服务端配置

1. 安装与启动服务
iSCSI Target 的核心组件包括 :
- targetd(服务端守护进程)
- targetcli(配置管理工具)
bash
# 安装软件包
[root@iscsi-server ~]# yum install -y targetd targetcli
# 启用并启动服务
[root@iscsi-server ~]# systemctl enable target --now
# 若开启防火墙,需放行 iSCSI 服务
[root@iscsi-server ~]# firewall-cmd --permanent --add-service=iscsi-target
[root@iscsi-server ~]# firewall-cmd --reload
当您不带任何选项运行targetcli时,该命令将进入交互模式。
在以下示例中,使用ls命令显示当前布局。
bash
[root@iscsi-server ~]# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin. targetcli shell version 2.1.53
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
o- / [...]
o- backstores [...]
| o- block [Storage Objects: 0]
| o- fileio [Storage Objects: 0]
| o- pscsi [Storage Objects: 0]
| o- ramdisk [Storage Objects: 0]
o- iscsi [Targets: 0]
o- loopback [Targets: 0]
2. 配置 Backstore(后端存储)
Backstore 是 Target 的底层存储对象,支持多种类型:
- block:物理块设备(磁盘、分区、LVM),最常用。
- fileio:本地文件系统中的镜像文件。
- pscsi:直接映射物理 SCSI 设备。
- ramdisk:内存盘,重启后数据丢失。
使用 targetcli 进入交互模式,创建 Block 类型的 Backstore:
bash
[root@iscsi-server ~]# targetcli
/> cd /backstores/block
/backstores/block> create myblock1 /dev/sdb
Created block storage object myblock1 using /dev/sdb.
3. 创建 Target 与 IQN
在 /iscsi 目录下创建 Target,系统将自动生成 TPG 及默认 Portal:
bash
/backstores/block> cd /iscsi
/iscsi> create iqn.2026-04.cloud.csh.iscsi-server:disk1
Created target iqn.2026-04.cloud.csh.iscsi-server:disk1.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.

-
iscsi 根目录 Targets:1
当前一共创建了 1 个 iSCSI 目标(Target)
-
iqn.2026-04.cloud.csh.iscsi-server:disk1
iSCSI Target 唯一标识(IQN 名称)
客户端存储发现、连接时,需要填写这一串名称。
-
tpg1(Target Portal Group,目标门户组)
一个 Target 可以有多个 TPG 组,这里只有tpg1。
标记: no-gen-acls, no-auth
no-gen-acls :不会自动生成 ACL 访问策略,必须手动添加客户端白名单
no-auth :未开启 CHAP 账号密码认证
-
acls ACLs: 0
ACL = 客户端 IQN 白名单(访问控制列表)
ACLs:0 → 还没有添加允许接入的客户端
规则:默认拒绝所有客户端,不添加白名单就算客户端能连通 3260 端口也登录失败。
-
luns LUNs: 0 【重点】
LUN 作用:将后端磁盘 backstores 映射给这个 Target 对外共享
LUNs:0 → 没有把硬盘 / 分区挂载进来!
哪怕客户端成功登录 target ,看不到任何共享磁盘。
对应流程:创建 Target 之后,绑定 LUN 这一步尚未执行。
-
portals Portals:1
Portal = 监听地址 + 端口(对外访问入口)
0.0.0.0:32600.0.0.0 :服务器本机所有网卡监听
3260 :iSCSI 标准端口
OK:监听正常,端口已就绪
-
✅ 当前状态总结
✅ Target(iqn 名称)已创建
✅ Portal 监听 0.0.0.0:3260 正常
-
❌ 缺少两大核心配置
1.未绑定 LUN:没有关联后端硬盘
2.未配置 ACL:没有放行客户端
状态解析 :此时 Target 已创建,Portal 监听
0.0.0.0:3260。但尚未绑定 LUN 与配置 ACL,客户端虽能连通端口,但无法获取存储资源或完成登录。
4. 绑定 LUN 与配置 ACL
将 Backstore 映射为 LUN,并添加客户端白名单:
bash
# 绑定 LUN
/iscsi> cd /iscsi/iqn.2026-04.cloud.csh.iscsi-server:disk1/tpg1/luns
/iscsi/.../luns> create /backstores/block/myblock1
Created LUN 0.
# 配置 ACL(允许指定 Initiator 访问)
/iscsi/.../luns> cd ../acls
/iscsi/.../acls> create iqn.2026-04.cloud.csh.iscsi-client
Created Node ACL for iqn.2026-04.cloud.csh.iscsi-client
Created mapped LUN 0.
5. 优化 Portal 监听地址
出于安全考量,建议将默认的全接口监听修改为指定内网 IP:
bash
# 删除默认: 0.0.0.0:3260 (随便本机哪个IP都能连)
# 新建指定: 10.1.8.10:3260 (只允许通过本机10.1.8.10这个网卡连接iscsi共享)
/iscsi/.../acls> cd ../portals
/iscsi/.../portals> delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260
/iscsi/.../portals> create 10.1.8.10 3260
Created network portal 10.1.8.10:3260.
6. 保存配置
退出 targetcli 时,配置将自动保存至 /etc/target/saveconfig.json:
bash
/iscsi/.../portals> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json
7. 非交互式管理
对于自动化运维场景,可直接通过命令行参数操作,但需显式执行 saveconfig:
bash
[root@iscsi-server ~]# targetcli /backstores/block create myblock2 /dev/sdc
[root@iscsi-server ~]# targetcli /iscsi create iqn.2026-04.cloud.csh.iscsi-server:disk2
[root@iscsi-server ~]# targetcli /iscsi/iqn.2026-04...:disk2/tpg1/luns create /backstores/block/myblock2
[root@iscsi-server ~]# targetcli /iscsi/iqn.2026-04...:disk2/tpg1/acls create iqn.2026-04.cloud.csh.iscsi-client
[root@iscsi-server ~]# targetcli /iscsi/iqn.2026-04...:disk2/tpg1/portals create 10.1.8.10 3260
[root@iscsi-server ~]# targetcli saveconfig
提示:与交互式使用targetcli不同,命令行模式必须显式运行saveconfig子命令以保存配置。
五、 iSCSI Initiator 客户端配置
iSCSI 启动器通常以软件方式实现。 使用基于软件的iSCSI启动器需要连接到具有足够带宽的现有以太网网络,以承载存储流量。
您也可以使用硬件启动器-主机总线适配器(HBA),从而减轻了其他系统资源的负担。
1. 安装与初始化
配置iSCSI客户端启动程序需要安装iscsi-initiator-utils软件包,该软件包包括iscsi和iscsid服务以及/etc/iscsi/iscsid.conf和/etc/iscsi/initiatorname.iscsi配置文件。
bash
# 安装 Initiator 工具包
[root@iscsi-client ~]# yum install -y iscsi-initiator-utils
# 配置唯一的 Initiator IQN
[root@iscsi-client ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2026-04.cloud.csh.iscsi-client
# 重启服务使配置生效
[root@iscsi-client ~]# systemctl restart iscsid
作为iSCSI启动器,客户端需要其自己的唯一iSCSI合格名称(IQN)。在安装iscsi-initiator-utils的过程中,该软件包生成唯一的IQN,并存储到/etc/iscsi/initiatorname.iscsi文件中。 管理员通常需要更改该名称。
/etc/iscsi/iscsid.conf文件包含您连接的目标的默认设置。 这些设置包括iSCSI超时,重试以及用于身份验证的用户名和密码参数。
软件包安装会自动配置iscsid服务,以便启动器在系统启动时自动重新连接到任何已发现的目标。 每当您修改启动程序的配置文件时,请重新启动iscsid服务。
2. 发现与连接 Target
在使用远程设备之前,首先需要发现目标。 发现过程使用/etc/iscsi/iscsid.conf中的配置将目标信息和设置存储在/var/lib/iscsi/nodes/目录中。
您可以使用以下命令执行远程目标的发现:
bash
# 发现远程 Target
[root@iscsi-client ~]# iscsiadm -m discovery -t st -p 10.1.8.10
10.1.8.10:3260,1 iqn.2026-04.cloud.csh.iscsi-server:disk1
10.1.8.10:3260,1 iqn.2026-04.cloud.csh.iscsi-server:disk2
# 登录指定 Target
[root@iscsi-client ~]# iscsiadm -m node -T iqn.2026-04.cloud.csh.iscsi-server:disk1 -l
Logging in to [iface: default, target: iqn.2026-04...:disk1, portal: 10.1.8.10,3260]
Login to [iface: default, target: iqn.2026-04...:disk1, portal: 10.1.8.10,3260] successful.
参数说明:
- portal_ip参数是目标门户的IP地址。
- 如果未指定port参数,它将使用默认端口3260。
3. 验证存储设备
此时,系统将检测到新的SCSI块设备,就好像它是本地连接的硬盘驱动器一样。 您可以使用以下命令查看新设备,该命令以打印级别3显示有关当前iSCSI登录会话的信息。
bash
[root@iscsi-client ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 199G 0 part
├─centos-root 253:0 0 50G 0 lvm /
└─centos-home 253:2 0 141.1G 0 lvm /home
sdb 8:16 0 20G 0 disk # iSCSI 远程磁盘
bash
[root@iscsi-client ~]# iscsiadm -m session -P 3 iSCSI Transport Class version 2.0-870
version 6.2.0.874-22
Target: iqn.2026-04.cloud.csh.iscsi-server:disk1 (non-flash)
Current Portal: 10.1.8.10:3260,1
Persistent Portal: 10.1.8.10:3260,1 **********
Interface:
**********
Iface Name: default
Iface Transport: tcp
Iface Initiatorname: iqn.2026-04.cloud.csh.iscsi-client
Iface IPaddress: 10.1.8.11
Iface HWaddress: <empty>
Iface Netdev: <empty>
SID: 1
iSCSI Connection State: LOGGED IN
iSCSI Session State: LOGGED_IN
Internal iscsid Session State: NO CHANGE
*********
Timeouts:
*********
Recovery Timeout: 120
Target Reset Timeout: 30
LUN Reset Timeout: 30
Abort Timeout: 15
*****
CHAP:
*****
username: <empty>
password: ********
username_in: <empty>
password_in: ********
************************
Negotiated iSCSI params:
************************
HeaderDigest: None
DataDigest: None
MaxRecvDataSegmentLength: 262144
MaxXmitDataSegmentLength: 262144
FirstBurstLength: 65536
MaxBurstLength: 262144
ImmediateData: Yes
InitialR2T: Yes
MaxOutstandingR2T: 1
************************
Attached SCSI devices:
************************
Host Number: 3 State: running
scsi3 Channel 00 Id 0 Lun: 0
Attached scsi disk sdb State: running
或者,您可以查看 dmesg , tail /var/log/messages 或 ls -l /dev/disk/by-path/iscsi 命令的输出。 该登录过程在重新启动后将保持不变。 因此,启动后块设备将自动可用。
4. 格式化 iSCSI 设备
如果发现的块设备已经具有分区,文件系统或LVM卷,则可以使用常规命令(如mount)访问该数据。您可以使用lsblk --fs命令检查设备。
bash
[root@iscsi-client ~]# blkid
/dev/sda1: UUID="5fc475dd-3212-46e8-b923-cbbc61cac3ee" TYPE="xfs"
/dev/sda2: UUID="eRXTvj-r4BZ-5Vxe-61w1-Klgv-WgGm-qYTZYc" TYPE="LVM2_member"
/dev/sr0: UUID="2020-11-04-11-36-43-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/centos-root: UUID="21306770-85c2-4c92-8692-0a2ca78922a8" TYPE="xfs"
/dev/mapper/centos-swap: UUID="ff509751-eabd-4b34-ac22-9d65cea06ef1" TYPE="swap"
/dev/mapper/centos-home: UUID="0a51daf5-8540-49f8-ad82-c732d9cbbd45" TYPE="xfs"
多个启动程序同时从同一目标安装同一文件系统,会导致文件系统损坏或尝试读取数据时出现不一致。
本地文件系统(例如ext4或XFS)不支持从多个系统并发安装。如果需要允许从多个系统同时访问基于iSCSI的块设备,请使用群集文件系统(例如GFS2)。
如果磁盘为空,则可以对其进行格式化,创建分区或将其用作LVM物理卷。

5. 持久化挂载与系统启动保障
为确保 iSCSI 设备在系统重启后能够正确、安全地自动挂载,必须严格遵循以下工程规范:
- 强制使用 UUID 标识 :切勿在
/etc/fstab中使用设备名称(如/dev/sd*)。由于 iSCSI 设备的命名依赖于网络响应顺序,设备名可能在引导过程中发生漂移,导致挂载点错乱。 - 启用
_netdev挂载选项:iSCSI 高度依赖网络栈。该选项可确保系统在网络就绪及 iSCSI 启动器初始化完成之前,不会尝试挂载文件系统,从而避免启动失败。
编辑 /etc/fstab 文件,添加如下挂载记录:
bash
[root@iscsi-client ~]# vim /etc/fstab
UUID="0461e240-7743-47fe-876b-6df8b8e7ebf8" /sdb xfs defaults,_netdev 0 0
确保 iscsi 服务已配置为开机自动启动(默认通常为启用状态):
bash
[root@iscsi-client ~]# systemctl enable iscsi
重启系统并验证挂载状态,确认 iSCSI 设备已按预期加载:
bash
[root@iscsi-client ~]# reboot
[root@iscsi-client ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 199G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 7.9G 0 lvm [SWAP]
└─centos-home 253:2 0 141.1G 0 lvm /home
sdb 8:16 0 20G 0 disk /sdb
sdc 8:32 0 20G 0 disk
6. 断开目标连接
要停止使用iSCSI目标,请执行以下步骤:
- 确保没有使用目标提供的任何设备。 例如,卸载文件系统。
- 从/etc/fstab等位置删除对目标的所有持久引用。
- 从iSCSI目标注销。
bash
[root@iscsi-client ~]# umount /sdb
[root@iscsi-client ~]# iscsiadm -m node -T iqn.2026-04.cloud.csh.iscsi-server:disk1 -p 10.1.8.10:3260 -u
Logging out of session [sid: 1, target: iqn.2026-04.cloud.csh.iscsi-server:disk1, portal: 10.1.8.10,3260]
Logout of [sid: 1, target: iqn.2026-04.cloud.csh.iscsi-server:disk1, portal: 10.1.8.10,3260] successful.
bash
[root@iscsi-client ~]# iscsiadm -m session
tcp: [2] 10.1.8.10:3260,1 iqn.2026-04.cloud.csh.iscsi-server:disk2 (non-flash)
[root@iscsi-client ~]# iscsiadm -m node
10.1.8.10:3260,1 iqn.2026-04.cloud.csh.iscsi-server:disk1
10.1.8.10:3260,1 iqn.2026-04.cloud.csh.iscsi-server:disk2
删除 iSCSI目标的本地记录,以使启动器在引导过程中不会自动登录到目标。
bash
# 删除本地记录
[root@iscsi-client ~]# iscsiadm -m node -T iqn.2026-04.cloud.csh.iscsi-server:disk1 -p 10.1.8.10:3260 -o delete
[root@iscsi-client ~]# iscsiadm -m node
10.1.8.10:3260,1 iqn.2026-04.cloud.csh.iscsi-server:disk2
7.故障排查
如果发现成功,但是启动器登录到发现的目标时遇到问题,则该问题很可能与访问控制或身份验证有关。客户端上的IQN与服务器上的IQN不匹配会导致目标登录失败。
可能是客户端上的启动器IQN不正确引起的,请在客户端的/etc/iscsi/initiatorname.iscsi文件中修复IQN,然后重新启动iscsid服务以使更改生效。
bash
[root@iscsi-client ~]# vim /etc/iscsi/initiatorname.iscsi
# 重启 iscsid 服务,释放之前客户端扫描时使用的IQN。
[root@iscsi-client ~]# systemctl restart iscsid
执行重新发现并尝试登录目标:
bash
# 重新发现
[root@iscsi-client ~]# iscsiadm -m discovery -t st -p 10.1.8.10
10.1.8.10:3260,1 iqn.2026-04.cloud.csh.iscsi-server:disk1
10.1.8.10:3260,1 iqn.2026-04.cloud.csh.iscsi-server:disk2
# 重新登录
[root@iscsi-client ~]# iscsiadm -m node -T iqn.2026-04.cloud.csh.iscsi-server:disk1 -l
Logging in to [iface: default, target: iqn.2026-04.cloud.csh.iscsi-server:disk1, portal: 10.1.8.10,3260] (multiple)
Login to [iface: default, target: iqn.2026-04.cloud.csh.iscsi-server:disk1, portal: 10.1.8.10,3260] successful.
六、构建高可用多路径(Multipath)架构
1. 服务端环境准备
在配置多路径前,需确保 iSCSI Target 端正确暴露多网络接口。以下为节点规划:
| 节点名称 | 节点IP | 作用 |
|---|---|---|
| iscsi-server(增加1块20G SCSI硬盘) | 10.1.8.10(vmnet8), 10.1.1.10/24(vmnet1) | iSCSI Target |
| iscsi-client | 10.1.8.11(vmnet8), 10.1.1.11/24(vmnet1) | iSCSI Initiator |
服务端安装与配置示例:
bash
[root@iscsi-server ~]# yum install -y targetd targetcli
[root@iscsi-server ~]# systemctl enable target --now
[root@iscsi-server ~]# firewall-cmd --add-service=iscsi-target
[root@iscsi-server ~]# firewall-cmd --add-service=iscsi-target --permanent
[root@iscsi-server ~]# targetcli /backstores/block create myblock1 /dev/sdb
[root@iscsi-server ~]# targetcli /iscsi create iqn.2026-04.cloud.csh.iscsi-server:disk1
[root@iscsi-server ~]# targetcli /iscsi/iqn.2026-04.cloud.csh.iscsi-server:disk1/tpg1/luns create /backstores/block/myblock1
[root@iscsi-server ~]# targetcli /iscsi/iqn.2026-04.cloud.csh.iscsi-server:disk1/tpg1/acls create iqn.2026-04.cloud.csh.iscsi-client
[root@iscsi-server ~]# targetcli server:disk1/tpg1/portals delete
[root@iscsi-server ~]# targetcli server:disk1/tpg1/portals create
[root@iscsi-server ~]# targetcli server:disk1/tpg1/portals create
[root@iscsi-server ~]# targetcli
/iscsi/iqn.2026-04.cloud.csh.iscsi- 0.0.0.0 3260
/iscsi/iqn.2026-04.cloud.csh.iscsi- 10.1.8.10 3260
/iscsi/iqn.2026-04.cloud.csh.iscsi- 10.1.1.10 3260
saveconfig
验证 Target 配置:
bash
[root@iscsi-server ~]# targetcli
targetcli shell version 2.1.53
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
2. 什么是多路径
多路径是指服务器和存储阵列存在多个物理连接方式使用虚拟设备,这种方式可以提供更加弹性的存储连接(一个路径down掉不会影响连接性),也可以聚合存储带宽提供性能。

多路径由dm-multipath子系统提供,使用内核device mapper系统获得虚拟设备,有multipathd进程和multipath命令行工具管理。
软件包device-mapper-multipath提供必要的binaries daemon和kernel modules。安装、配置、启动后,多路径设备节点会创建在两个位置。
出于管理目的, multipath设备创建在/dev/mapper,如果选择了user-friendly名称,这些设备也可以命名为mpathNpM,或者配置在WorldWide ID(WWID)之后。管理员也可以自定义多路径设备名,这些自定义名称在multipaths配置文件的multipaths部分使用alias选项定义。
多路径设备也会创建在/dev目录,格式/dev/dm-N与/dev/mapper下的文件匹配。这些设备提供给系统内部使用,禁止管理目的直接使用。
重要:多路径提供存储访问路径down情况的保护。如果存储本身不可用,访问访问存储也会不可用。
创建多路径设备,不同的路径将会合并到组中,取决于/etc/multipath.conf配置。典型情况,同一时刻只能激活一个组,一个组可以包含多个路径。当某个组故障,多路径进程将切换流量到不同组中。
3. 客户端多路径配置
安装与启用
安装 device-mapper-multipath 软件包,并使用 mpathconf 工具生成或更新配置文件:
bash
[root@iscsi-client ~]# yum install -y device-mapper-multipath
# 生成配置文件(若文件不存在)
[root@iscsi-client ~]# mpathconf --enable
# 若文件已存在,则修改现有配置
[root@iscsi-client ~]# mpathconf --enable --with_multipathd y --with_chkconfig y
# 启动服务
[root@iscsi-client ~]# systemctl enable multipathd --now
发现设备

设备识别与 WWN 验证
WWN(WorldWide Name) ,全球唯一名称,是由 IEEE 标准化的全球唯一标识符,用于标识存储设备(如硬盘、 RAID 阵列、光纤交换机等),每个设备具有全球唯一名称。
应用场景:在光纤通道(FC)、 iSCSI 等存储网络中,用于识别和定位存储设备。
WWN 是判断多路径设备是否指向同一存储设备的核心依据:所有属于同一多路径设备的物理路径(如sdb 、 sdc ),其对应的存储设备 WWN必然相同。
使用 scsi_id 验证:
bash
[root@iscsi-client ~]# /usr/lib/udev/scsi_id -g -u /dev/sdb
360014052fc732600aa0433fae1758a1a
[root@iscsi-client ~]# /usr/lib/udev/scsi_id -g -u /dev/sdc
360014052fc732600aa0433fae1758a1a
使用 udevadm 验证:
bash
[root@iscsi-client ~]# udevadm info --query=property --name=/dev/sdb | grep ID_WWN_W
ID_WWN_WITH_EXTENSION=0x60014052fc732600aa0433fae1758a1a
[root@iscsi-client ~]# udevadm info --query=property --name=/dev/sdc | grep ID_WWN_W
ID_WWN_WITH_EXTENSION=0x60014052fc732600aa0433fae1758a1a
通过 UUID 或其他标识符辅助判断:
bash
[root@iscsi-client ~]# blkid /dev/sdb
[root@iscsi-client ~]# blkid /dev/sdc
4. 多路径状态监控
multipath 命令提供了强大的状态监控能力:
-l:读取磁盘缓存文件(bindings),不扫描硬件,执行速度快,但信息可能滞后。-ll:实时扫描所有 SCSI 设备并重新计算路径优先级,推荐用于排错和日常检查。
bash
[root@iscsi-client ~]# multipath -ll
mpatha (360014052fc732600aa0433fae1758a1a) dm-3 LIO-ORG,myblock1 size=20G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active # status=active -> 当前活动路径(主路径)
| `- 3:0:0:0 sdb 8:16 active ready running # sdb是主路径(当前I/O走这条)
`-+- policy='service-time 0' prio=1 status=enabled # status=enabled -> 备用可用路径(从路径)
`- 4:0:0:0 sdc 8:32 active ready running # sdc是备路径(冗余备用)
默认策略说明 :
service-time 0属于主备模式(Active-Passive),同一时间仅走一条主路径。主路径故障时自动切换至备用路径,平时备用路径不承载流量。
5. 多路径设备使用与持久化
识别到 /dev/mapper/mpatha 后,即可像普通块设备一样进行分区、格式化与挂载:
bash
[root@iscsi-client ~]# parted /dev/mapper/mpatha mklabel gpt
[root@iscsi-client ~]# parted /dev/mapper/mpatha unit MiB mkpart webapp 1 10241
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? Ignore
[root@iscsi-client ~]# mkdir /mpatha1
[root@iscsi-client ~]# mkfs.xfs /dev/mapper/mpatha1
[root@iscsi-client ~]# mount /dev/mapper/mpatha1 /mpatha1
[root@iscsi-client ~]# df -h /mpatha1/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/mpatha1 10G 33M 10G 1% /mpatha1
在 /etc/fstab 中配置持久化挂载:
bash
[root@iscsi-client ~]# vim /etc/fstab
# 最后增加一条
/dev/mapper/mpatha1 /mpatha1 xfs _netdev 0 0
[root@iscsi-client ~]# umount /mpatha1
[root@iscsi-client ~]# mount -a
[root@iscsi-client ~]# df -h /mpatha1/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/mpatha1 10G 33M 10G 1% /mpatha1
七、 总结
核心价值
iSCSI 通过将存储协议封装于 TCP/IP 之上,打破了传统 SAN 对专用光纤网络的依赖,以极低的成本实现了企业级块存储的网络化共享。其核心价值在于高性价比 、架构灵活性 以及与现有以太网基础设施的无缝兼容。
适用场景
- 虚拟化环境:为 VMware、KVM 等提供共享数据存储。
- 数据库集群:为 Oracle RAC、SQL Server 等提供共享块设备。
- 备份与归档:作为备份目标的网络存储池。
- 开发测试环境:快速部署与回收存储资源。
最佳实践建议
- 网络隔离:务必将 iSCSI 流量与业务 LAN 分离,建议使用独立的物理网卡或 VLAN,并配置 Jumbo Frames(MTU 9000)以减少 CPU 开销。
- 安全加固:生产环境应强制启用 CHAP 认证,并结合 ACL 实现最小权限原则;跨公网传输必须启用 IPsec。
- 高可用设计:配置多路径 I/O(Multipath)以消除单点故障,提升链路冗余与负载均衡能力。
- 监控与告警:定期监控 iSCSI 会话状态、网络延迟及存储 IOPS,建立异常自动恢复机制。
- 配置持久化 :服务端务必确保
saveconfig执行成功,客户端应配置node.startup = automatic以实现开机自动重连。