使用targetcli交互命令,按顺序删除会话、逻辑单元、目标及门户,最后执行
saveconfig
确保配置彻底清除无残留。
targetcli
是一个功能强大的命令行工具,用于配置和管理 Linux 内核中的 SCSI 目标子系统(LIO),常用于搭建 iSCSI 存储服务器,在管理存储环境时,经常需要删除不再需要的配置项,如存储对象、LUN、ACL 或整个目标。正确且谨慎地执行删除操作至关重要,因为错误的删除可能导致数据丢失或服务中断。 本指南将详细介绍如何使用 targetcli
命令安全、有效地删除各种配置元素。
重要警告与前提条件
-
备份配置: 在执行任何删除操作之前,强烈建议备份当前的
targetcli
配置,这可以在出现错误时快速恢复。targetcli / saveconfig my_backup.json
这将把当前配置保存为
my_backup.json
文件(文件名可自定义),恢复时使用:targetcli / restoreconfig my_backup.json
-
理解层级结构:
targetcli
使用类似文件系统的层级结构,你需要导航到要删除对象所在的正确路径,使用ls
命令查看当前路径下的对象,使用cd
命令切换路径(cd /backstores/block
)。 -
确认依赖关系: 删除一个对象(如存储后端)可能会影响依赖于它的对象(如 LUN)。
targetcli
通常不允许删除仍有依赖项的对象,但明确检查更安全,尝试删除时,如果存在依赖,命令会报错提示。 -
生产环境谨慎操作: 在生产环境中执行删除操作前,务必在测试环境验证,并选择维护窗口进行,确保没有客户端正在访问即将被删除的资源。
-
权限要求: 执行
targetcli
命令通常需要root
权限 (sudo targetcli
)。
删除操作详解 (按层级和对象类型)
-
删除 LUN 映射 (LUN)
- 路径:
/iscsi/<target_iqn>/tpg1/luns
- 操作: 删除 LUN 会将其从特定的目标门户组 (TPG) 中移除,客户端将无法再通过该目标访问这个 LUN 对应的存储。这不会删除底层的存储对象(如块设备或文件)本身。
- 命令:
# 进入 LUNs 目录 cd /iscsi/<target_iqn>/tpg1/luns # 查看当前 LUN 列表,记下要删除的 LUN 编号 (lunX) ls # 删除指定的 LUN (lun0) delete lun0 # 或者,使用完整路径一次性删除 targetcli /iscsi/<target_iqn>/tpg1/luns delete lun0
- 替换说明: 将
<target_iqn>
替换为你的具体 iSCSI 目标 IQN (iqn.2025-08.com.example:server
),将lun0
替换为你要删除的实际 LUN 编号。
- 路径:
-
删除 ACL (访问控制列表 – 通常指 Initiator 名称)
- 路径:
/iscsi/<target_iqn>/tpg1/acls
- 操作: 删除 ACL 会撤销特定 Initiator (客户端) 访问该 TPG 的权限,该客户端将无法登录此目标。
- 命令:
# 进入 ACLs 目录 cd /iscsi/<target_iqn>/tpg1/acls # 查看当前 ACL 列表 (显示为 Initiator IQNs) ls # 删除指定的 ACL (iqn.2025-08.com.example:client) delete iqn.2025-08.com.example:client # 或者,使用完整路径 targetcli /iscsi/<target_iqn>/tpg1/acls delete iqn.2025-08.com.example:client
- 替换说明: 替换
<target_iqn>
和iqn.2025-08.com.example:client
为实际值。
- 路径:
-
删除目标门户 (Portals – IP:Port 组合)
- 路径:
/iscsi/<target_iqn>/tpg1/portals
- 操作: 删除目标门户会停止在该特定 IP 地址和端口上监听 iSCSI 连接请求。
- 命令:
# 进入 Portals 目录 cd /iscsi/<target_iqn>/tpg1/portals # 查看当前 Portal 列表 (通常是 IP 地址) ls # 删除指定的 Portal (192.168.1.100:3260) delete 192.168.1.100:3260 # 或者,使用完整路径 targetcli /iscsi/<target_iqn>/tpg1/portals delete 192.168.1.100:3260
- 注意: 一个 TPG 必须至少有一个 Portal,如果这是最后一个 Portal,删除操作可能会失败或导致目标不可访问,通常不需要删除默认的
0.0.0:3260
(监听所有 IP)。
- 路径:
-
删除目标门户组 (TPG – Target Portal Group)
- 路径:
/iscsi/<target_iqn>
- 操作: 删除整个 TPG (通常是
tpg1
),这会移除该 TPG 下的所有配置:LUNs、ACLs、Portals 等。这是对特定目标 IQN 下配置的彻底清理。 - 命令:
# 进入目标 IQN 目录 cd /iscsi/<target_iqn> # 查看 TPG 列表 (通常是 tpg1) ls # 删除指定的 TPG (tpg1) delete tpg1 # 或者,使用完整路径 targetcli /iscsi/<target_iqn> delete tpg1
- 替换说明: 替换
<target_iqn>
为实际值。
- 路径:
-
删除整个 iSCSI 目标 (Target IQN)
- 路径:
/iscsi
- 操作: 删除整个 iSCSI 目标及其下的所有 TPGs 和相关配置,客户端将无法再发现或登录此目标。
- 命令:
# 进入 iscsi 目录 cd /iscsi # 查看当前目标 IQN 列表 ls # 删除指定的目标 IQN (iqn.2025-08.com.example:server) delete iqn.2025-08.com.example:server # 或者,使用完整路径 targetcli /iscsi delete iqn.2025-08.com.example:server
- 替换说明: 替换
iqn.2025-08.com.example:server
为实际要删除的目标 IQN。
- 路径:
-
删除存储后端对象 (Backstores)
- 路径:
/backstores/<type>
(如/backstores/block
,/backstores/fileio
,/backstores/pscsi
,/backstores/ramdisk
) - 操作: 删除存储后端对象会将其从
targetcli
的配置中移除。这不会删除底层的物理块设备、文件或内存! 它只是移除了 LIO 对该存储的引用,确保该对象没有被任何 LUN 映射引用后才能删除。 - 命令:
# 进入对应的后端类型目录 (block) cd /backstores/block # 查看当前该类型下的对象列表 ls # 删除指定的后端对象 (mydisk) delete mydisk # 或者,使用完整路径 targetcli /backstores/block delete mydisk
- 替换说明: 将
block
替换为实际的后端类型 (block
,fileio
,pscsi
,ramdisk
),将mydisk
替换为要删除的对象名称。 - 重要:
mydisk
仍被某个 LUN 映射引用,删除操作会失败并提示存在依赖关系,你必须先删除引用它的 LUN (参见步骤 1)。
- 路径:
通用操作与技巧
- 导航与查看: 始终使用
pwd
查看当前路径,ls
查看当前路径下的对象,cd <path>
切换路径,这是定位要删除对象的基础。 - 删除确认:
targetcli
的delete
命令通常是立即执行的,没有二次确认提示,务必在敲回车前仔细检查路径和对象名称。 - 检查操作结果: 执行
delete
命令后,再次使用ls
命令检查对象是否已从列表中消失。 - 保存配置: 所有在
targetcli
shell 内的修改(包括删除)都是临时的,只存在于内存中,要使更改永久生效(写入/etc/target/saveconfig.json
并在重启后依然有效),必须执行保存命令:targetcli / saveconfig
- 退出 targetcli: 完成所有操作后,使用
exit
命令或按Ctrl+D
退出targetcli
shell。 - 验证服务状态 (可选): 删除目标或 TPG 后,可以检查
target
服务状态(具体服务名可能因发行版而异,如target
或scst
):systemctl status target # 或 scst
安全、有效地使用 targetcli
删除配置的关键在于:
- 备份配置。
- 理解层级结构,准确导航到目标对象路径。
- 仔细检查要删除对象的名称。
- 确认没有依赖关系(特别是删除存储后端对象时)。
- 操作后使用
ls
验证删除结果。 - 最后执行
saveconfig
保存更改。 - 生产环境务必极度谨慎。
遵循这些步骤和注意事项,你可以自信地使用 targetcli
命令清理和管理你的 iSCSI 或 LIO 存储目标配置。
引用说明:
- 本指南基于 Linux SCSI Target (LIO) 子系统的标准
targetcli
工具的操作逻辑和官方文档精神编写。 targetcli
的通用操作和层级结构参考了 Linux 发行版(如 RHEL/CentOS, Ubuntu, Debian, openSUSE)中targetcli
的通用实现和帮助信息 (targetcli help
或man targetcli
)。- LIO 架构和概念的更深入理解,可参考内核文档 (https://www.kernel.org/doc/html/latest/target/index.html) 或特定发行版的存储管理文档 (Red Hat Storage Administration Guide)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6600.html