
Debian iSCSI Target 与 open-iscsiLVM 后端、ACL 与客户端验证1. 服务介绍iSCSI 通过 TCP/IP 网络提供块级存储。存储端创建 Target客户端使用 open-iscsi 作为 Initiator 登录后系统会把远端 LUN 识别为本地块设备可以继续分区、格式化或交给 LVM 使用。本文整理 Debian 上的 iSCSI 实训流程使用额外磁盘创建 LVM 逻辑卷把逻辑卷发布为 Target 后端配置 IQN、LUN、网络门户和 ACL最后在 RouterSrv 客户端发现并登录目标使用客户端命令确认远端磁盘已经出现。2. 准备运行环境• 操作系统Debian Linux使用 systemd 管理服务。• 权限Target 端和 Initiator 端都需要 root 或 sudo 权限。• 角色TargetSrv 提供存储RouterSrv 作为指定客户端不要把两端命令混用。• 存储TargetSrv 准备一块空闲实验磁盘例如 /dev/sdg执行前用 lsblk 确认不能照抄设备名。• 网络两端 IP 可达iSCSI Target 监听 TCP 3260。• 参数使用 TARGET_IP、TARGET_IQN、INITIATOR_IQN 替换现场值ACL 中的 Initiator IQN 必须和客户端 /etc/iscsi/initiatorname.iscsi 完全一致。• 数据风险LVM、Target 后端和客户端文件系统都可能写入真实数据先确认空闲设备和备份。• 认证边界本文按实训要求关闭 TPG 认证仅用 ACL 限制客户端生产环境应评估 CHAP、网络隔离和多路径。3. 相关知识与注意点• Target 是服务端发布的存储目标Initiator 是客户端连接方LUN 是 Target 内部映射出的块设备。• IQN 用于唯一标识 Target 和 Initiator。ACL 只允许指定 Initiator IQN 连接不能用普通主机名代替。• Portal 由 IP 和 TCP 端口组成默认端口为 3260。服务端防火墙、路由和监听地址必须一致。• targetcli 使用 LIO 内核目标框架常见目录依次是 backstores、iscsi、TPG、luns、portals 和 acls。• 后端可以是 LVM 逻辑卷、整块磁盘或文件。使用 LVM 逻辑卷时后端路径必须指向正确的 /dev/VG/LV。• 同一个 LUN 不要被多个普通客户端同时读写除非使用支持集群锁的文件系统否则可能导致文件系统损坏。• 客户端登录后先查看 lsblk、session 和 by-path再决定是否格式化。不要看到新磁盘就直接 mkfs。• Target 配置修改后要保存 targetcli 配置并检查系统启动后目标是否自动恢复。4. 实验步骤4.1 确认 Target 端磁盘在 TargetSrv 上查看磁盘、分区和挂载状态lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,UUID blkid ip -br addr确认 /dev/sdg 是空闲实验盘后再继续4.2 创建 LVM 后端安装 targetcli 和 LVM 工具apt update apt install -y targetcli-fb lvm2创建物理卷、卷组和 5G 逻辑卷pvcreate /dev/sdg vgcreate iscsivg /dev/sdg lvcreate -L 5G -n iscsistore iscsivg pvs vgs lvs -odevices逻辑卷路径应为 /dev/iscsivg/iscsistore。不要在 Target 端对它执行 mkfs后续由客户端决定是否创建文件系统。4.3 创建 Target、LUN 和 Portal启动 targetclitargetcli在 targetcli 交互界面中执行。示例 IQN 使用占位值实际环境按题目或规划替换cd /backstores/block create serverc.iscsistore /dev/iscsivg/iscsistore cd /iscsi create TARGET_IQN cd TARGET_IQN/tpg1/luns create /backstores/block/serverc.iscsistore cd ../portals create TARGET_IP 3260配置完成后查看对象树cd / ls4.4 配置 ACL只允许指定客户端先在 RouterSrv 上读取 Initiator IQNapt install -y open-iscsi cat /etc/iscsi/initiatorname.iscsi回到 TargetSrv在 targetcli 中创建 ACL。INITIATOR_IQN 必须替换为 RouterSrv 实际读取到的值cd /iscsi/TARGET_IQN/tpg1/acls create INITIATOR_IQN检查 ACL 和 LUN 映射cd /iscsi/TARGET_IQN/tpg1 lsTarget 端示例配置和 ACL 结果4.5 按实验要求关闭认证并保存配置如果实验明确要求关闭 TPG 认证在 TargetSrv 执行cd /iscsi/TARGET_IQN/tpg1 set attribute authentication0 saveconfig ls exit关闭认证不等于取消 ACL。仍保留 INITIATOR_IQN ACL只允许指定客户端连接检查配置文件和服务状态test -f /etc/rtslib-fb-target/saveconfig.json systemctl status rtslib-fb-targetctl --no-pager ss -lntp | grep :3260不同 Debian 版本服务单元名称可能不同以 systemctl list-unit-files | grep -E target|rtslib 为准。5. Initiator 客户端连接5.1 安装并设置 open-iscsi在 RouterSrv 上安装客户端apt update apt install -y open-iscsi systemctl enable --now iscsid systemctl enable --now open-iscsi cat /etc/iscsi/initiatorname.iscsi确认客户端 IQN 唯一且与 Target ACL 一致5.2 发现 Target 并登录使用服务端实际地址发现目标iscsiadm -m discovery -t sendtargets -p TARGET_IP:3260 iscsiadm -m session登录发现到的 Targetiscsiadm -m node --login iscsiadm -m session如果环境要求显式设置认证关闭可在确认 Target 端策略后使用对应 node 参数本文不在命令行写入密码或 CHAP 密钥。5.3 查看远端块设备连接成功后检查lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS iscsiadm -m session -P 3 ls -l /dev/disk/by-path/ | grep -i iscsi dmesg | tail -n 50客户端应出现约 5G 的新块设备。首次使用前只确认设备路径不要在未确认设备的情况下格式化系统盘如需在客户端创建文件系统和挂载先确认设备lsblk -f mkfs.ext4 /dev/ISCSI_DEVICE mkdir -p /mnt/iscsi mount /dev/ISCSI_DEVICE /mnt/iscsi findmnt /mnt/iscsi格式化会清除远端 LUN 内容生产环境应先确认业务用途和备份。5.4 连接结果示例6. 验证与排错6.1 Target 端检查pvs vgs lvs -odevices targetcli ls ss -lntp | grep :3260 journalctl -b --no-pager | grep -Ei iscsi|target|lio | tail -n 806.2 Initiator 端检查systemctl is-active iscsid systemctl is-active open-iscsi iscsiadm -m session iscsiadm -m session -P 3 lsblk -f findmnt /mnt/iscsi journalctl -u open-iscsi -n 50 --no-pager6.3 故障定位• discovery 无结果检查 TARGET_IP、TCP 3260、防火墙和 Target portal。• discovery 有结果但 login 失败检查 INITIATOR_IQN 是否与 ACL 完全一致。• login 成功但无磁盘检查 LUN 是否关联 backstore、LVM 逻辑卷是否存在、内核日志是否报错。• Target 重启后配置丢失检查 saveconfig.json 和 targetctl 服务单元。• 客户端识别设备但挂载失败先检查文件系统类型、UUID 和是否被其他主机占用。• 多客户端同时写同一普通文件系统停止继续写入避免文件系统损坏需要共享写入时使用集群文件系统和锁管理。7. 小结iSCSI 配置链路是空闲磁盘、LVM 逻辑卷、Target backstore、Target IQN、LUN、portal、ACL、Initiator discovery/login、客户端块设备识别。每一层都要用对应命令验证不能只看 targetcli 配置成功或客户端出现登录会话。实验中可以按要求关闭认证但仍需保留 ACL。生产环境应增加 CHAP、网络隔离、最小权限、多路径和监控真实 IP、IQN 和设备名使用现场参数替换。