发起端与目标端的分工
iSCSI 把 SCSI 命令封装进 TCP/IP 传输:发起端(initiator)是主机一侧的客户端,把读写请求封装后发出;目标端(target)是存储一侧的服务端,提供 LUN 并处理这些命令。两者都用自己的唯一名称标识:发起端通常用 IQN(形如 iqn.年份-月份.反向域名:标识),目标端除 IQN 外还有门户地址(IP:端口,默认 3260)。目标端通过 ACL 按发起端名称授予 LUN 访问权,作用与 FC 环境中的 LUN 屏蔽一致。
基本信息
| 发起端角色 | 主机侧,发起会话与 SCSI 命令(软件 initiator、iSCSI HBA、CNA) |
|---|---|
| 目标端角色 | 存储侧,提供 LUN、执行 ACL 与门户监听 |
| 默认端口 | TCP 3260,发现与数据共用 |
| 命名方式 | IQN 或 EUI 格式,全局唯一 |
| 常见实现 | Linux open-iscsi、Windows iSCSI 发起程序、ESXi 软件 iSCSI;目标端有阵列前端与软件目标 |
典型使用场景
- 用标准以太网为主机提供块存储,避免 FC 组网成本
- 虚拟机与容器平台通过软件发起端接入集中式数据存储
- 使用 iSCSI HBA 或 CNA 把协议处理卸载到硬件以降低主机 CPU 开销
- 跨站点场景中作为块级链路复制的承载路径
- 测试与开发环境里用软件目标端快速搭出块设备
两端常见操作对照
两端常见操作对照
# 发起端:查看本机 IQN 与已建立会话
cat /etc/iscsi/initiatorname.iscsi
iscsiadm -m session
# 发起端:发现并登录目标
iscsiadm -m discovery -t st -p 10.0.20.11:3260
iscsiadm -m node -T iqn.2024-01.com.example:storage01 -p 10.0.20.11:3260 -l
# 目标端(LIO 为例):查看已配置的 LUN 与 ACL
targetcli ls /iscsi
# 目标端:确认门户监听地址与端口
ss -lntp | grep 3260职责对照
| 对比项 | 发起端 initiator | 目标端 target |
|---|---|---|
| 所在位置 | 主机 / 虚拟机宿主 | 存储设备或软件目标 |
| 标识 | IQN 或 EUI | 目标 IQN + 门户 IP:端口 |
| 访问控制 | 保存 CHAP 凭据 | 用 ACL 按发起端名称授权 |
| 发现角色 | 主动发起发现请求 | 响应 SendTargets 或提供 iSNS 记录 |
| 故障视角 | 会话与多路径状态 | 门户监听、ACL 与 LUN 映射 |
通过模板克隆虚拟机或批量装机时,极易复制出重复 IQN,目标端会看到两个不同主机使用同一名称,排查表现为设备时有时无、映射混乱;批量部署后应重新生成 IQN。
发起端与目标端之间不做网络隔离时,任意主机都可能尝试发现并登录目标;仅靠 ACL 不够,应同时限制门户监听在存储专用网段并配合认证机制。