targetcli iSCSI Target 部署的部署与使用

FengMayou冯马佑 📋在职小初生

什么是targetcli

targetcli 是 Linux 下管理内核 iSCSI Target (LIO) 的交互式命令行工具。
它支持配置:

  • iSCSI Targets
  • 目标 LUN(逻辑单元)
  • ACL(访问控制列表)
  • 网络门户(network portals)
  • 以及后端存储(block、file、RAM 等)

安装targetcli

Debian / Ubuntu 系列

1
2
sudo apt update
sudo apt install targetcli-fb -y

安装后可以运行:

1
sudo targetcli

看到提示符:

1
/>

就说明安装成功。


CentOS / Rocky / AlmaLinux / RHEL 系列

1
sudo dnf install targetcli -y

或者在旧系统上:

1
sudo yum install targetcli -y

Arch Linux / Manjaro

1
sudo pacman -S targetcli-fb

openSUSE

1
sudo zypper install targetcli-fb

配置targetcli

创建后端存储(fileio backstore)

targetcli shell 中:

1
/backstores/fileio create iscsi_disk /srv/iscsi/disk01.img
  • iscsi_disk:backstore 名称(在 targetcli 中引用用)。
  • /srv/iscsi/disk01.img:后端镜像文件或设备路径。

若为块设备(例如 /dev/sdb),使用:

1
/backstores/block create name=iscsi_block dev=/dev/sdb

创建 iSCSI Target(IQN)与 Portal

1
2
/iscsi create iqn.2025-10.com.example:storage01
/iscsi/iqn.2025-10.com.example:storage01/tpg1/portals create 0.0.0.0 3260
  • IQN 示例应修改为与你域名/组织对应的格式(保持唯一性)。
  • 0.0.0.0:3260 表示监听所有网卡上的 3260 端口;也可改为具体 IP。

绑定 LUN(将 backstore 暴露为 LUN)

1
/iscsi/iqn.2025-10.com.example:storage01/tpg1/luns create /backstores/fileio/iscsi_disk
  • 该命令会创建 lun0(或下一个可用 LUN)并指向 iscsi_disk

关闭认证 / 开放访问(测试专用)

若用于内网临时测试,可在 TPG 设置打开“全网可连”模式:

1
/iscsi/iqn.2025-10.com.example:storage01/tpg1 set attribute authentication=0 demo_mode_write_protect=0 generate_node_acls=1 cache_dynamic_acls=1

含义:

  • authentication=0:关闭 CHAP(无认证)
  • demo_mode_write_protect=0:允许写操作
  • generate_node_acls=1:自动处理节点 ACL(便于动态接受 initiator)
  • cache_dynamic_acls=1:缓存动态 ACL(可选)

安全提示:上述设置会允许任何能访问你 3260 端口的主机连接并读写该 LUN,仅用于受信内网或短期调试。


保存配置与退出

targetcli 中执行:

1
2
saveconfig
exit

或在 shell 外:

1
sudo targetcli saveconfig

配置会保存到系统默认路径(例如 /etc/target/saveconfig.json),重启后自动恢复。


启动与检查 target 服务

1
2
sudo systemctl enable --now target
sudo systemctl status target

注意:不同发行版或历史遗留环境可能使用 tgt/tgtd,若 target 无法找到,请根据实际服务名调整。


防火墙(放行端口 3260)

Ubuntu(UFW):

1
sudo ufw allow 3260/tcp

或使用 iptables:

1
2
sudo iptables -I INPUT -p tcp --dport 3260 -j ACCEPT
sudo iptables-save

Linux 客户端(iscsiadm)发现与登录

发现:

1
sudo iscsiadm -m discovery -t sendtargets -p <SERVER_IP>

登录:

1
sudo iscsiadm -m node -T iqn.2025-10.com.example:storage01 -p <SERVER_IP> --login

设置自动重连(开机自动):

1
sudo iscsiadm -m node --targetname iqn.2025-10.com.example:storage01 --portal <SERVER_IP>:3260 --op update -n node.startup -v automatic

Windows 客户端(PowerShell)

删除旧 Portal / 会话:

1
2
Get-IscsiSession | Disconnect-IscsiTarget -Confirm:$false
Get-IscsiTargetPortal | Remove-IscsiTargetPortal -Confirm:$false

添加 Portal、发现并连接:

1
2
3
4
5
New-IscsiTargetPortal -TargetPortalAddress <SERVER_IP>
Get-IscsiTarget
# 注意 IQN 大小写需完全匹配 targetcli 中显示的名称
Connect-IscsiTarget -NodeAddress "iqn.2025-10.com.example:storage01" -IsPersistent $true
Get-IscsiSession

风险与安全建议

  • 绝对不要 在公网或不受信网络上使用“无认证 + 无 ACL”的配置。

  • 生产环境至少应:

    • 使用 CHAP(单向或双向);
    • 仅允许指定 Initiator IQN 与受信 IP 段;
    • 将 iSCSI 服务放在私有网络或通过 VPN/VLAN 隔离;
    • 定期备份重要数据并设置访问审计。
  • CHAP 密码应为强随机字符串,并妥善保管。


  • 标题: targetcli iSCSI Target 部署的部署与使用
  • 作者: FengMayou冯马佑
  • 创建于 : 2025-11-02 22:08:18
  • 更新于 : 2025-11-02 22:27:04
  • 链接: https://blog.fengmayou.top/2025/11/02/targetcli-iSCSI-Target/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论