☰
Linux iscsiadm 命令详解:iSCSI 存储连接管理、发现、登录与挂载实战
2026/10/2 8:16:33 网站建设 项目流程
  • 文档
  • 教程

【免费下载链接】linux-command

Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux

项目地址:https://gitcode.com/GitHub_Trending/linux/linux-command
点击查看免费下载

iSCSI(Internet Small Computer System Interface)是一种基于 IP 网络的块级存储协议,它允许客户端(initiator,启动器)通过网络直接访问远端服务器(target,目标器)上的磁盘,把远端磁盘当作本地硬盘使用。本文基于 iscsiadm 命令文档 完整讲解 iscsiadm 的安装配置、语法选项与工作模式,并通过「发现 → 登录 → 查看会话 → 退出 → 分区格式化挂载」的全流程实战,让你掌握在 Linux 上挂载 NAS 或存储阵列 iSCSI 磁盘的完整技能;文中同时结合本仓库中 lsblk、fdisk、mkfs、mount、df 等命令文档,打通从网络存储连接到本地文件系统使用的整条链路。

一、iSCSI 与 iscsiadm 简介

iscsiadm 命令是 open-iscsi 工具集提供的命令行管理工具,用于管理 iSCSI 存储连接。iSCSI 是一种基于网络的存储协议,允许在计算机之间传输块级别的数据(即以磁盘扇区为粒度的读写,而不是文件级别)。iscsiadm 命令提供了与 iSCSI 存储设备进行连接、配置和管理的功能,主要职责包括:

  • 向 iSCSI 目标器(target)发送**发现(discovery)**请求,枚举网络上可用的存储设备;
  • 登录(login)或退出(logout)已发现的 iSCSI 目标;
  • 管理本机已建立的 iSCSI 会话(session)与网络接口(iface);
  • 持久化记录发现的节点信息,便于后续重连与开机自动挂载。

iSCSI 存储连接通常由两个角色组成:

  • Initiator(启动器):发起连接请求的一端,即当前 Linux 主机,通过 iscsiadm 管理;
  • Target(目标器):提供存储资源的一端,通常是 NAS(如 Synology、QNAP)、SAN 存储阵列或软件定义的 iSCSI 目标服务,导出名为iqn.*(iSCSI Qualified Name)的目标标识符。

二、安装与初始化配置

在绝大多数 Linux 发行版上,iscsiadm 由iscsi-initiator-utils(RHEL/CentOS 系列)或open-iscsi(Debian/Ubuntu 系列)软件包提供。安装与基础配置命令如下:

yum install iscsi-initiator-utils #安装iscsiadm(RHEL/CentOS 系列) # Debian/Ubuntu 系列使用: # apt-get install open-iscsi /etc/iscsi/initiatorname.iscsi #iscsi启动器名称配置文件位置 systemctl enable iscsi #设置服务开机启动 systemctl enable iscsid systemctl restart iscsi #重启iscsi服务 systemctl restart iscsid

关键说明:

  • /etc/iscsi/initiatorname.iscsi文件用于配置本机 initiator 的名称(IQN),格式形如InitiatorName=iqn.1994-05.com.redhat:xxxx。部分存储设备(如不少 NAS)会基于 initiator 名称做 ACL 访问控制或 CHAP 认证白名单,因此若目标存储端限制了允许连接的 initiator,需要在此文件中把名称改成存储端注册过的值,然后重启iscsid服务使其生效。
  • iscsi与iscsid是相互关联的两个 systemd 服务:iscsid是后台守护进程(daemon),负责处理登录、会话维护等内核交互;iscsi服务负责按持久化配置自动执行发现与登录。修改配置或首次安装后,通常需要同时重启二者。
  • 服务管理使用的systemctl enable / restart是 systemd 体系的标准操作,详细说明可参考仓库中的 systemctl 命令文档。

三、语法与选项详解

iscsiadm 的基本语法为:

iscsiadm [选项] <命令> <参数>

其核心是-m/--mode指定的工作模式,不同模式下配合不同的选项完成对应操作。各选项说明如下:

-m,--mode # <模式> 指定工作模式,如discovery(发现模式)、node(管理节点)、session(管理会话)、discoverydb、host、iface(管理 iSCSI 网络接口); -t,--type # 指定类型,如sendtargets (或st)、isns、fw,仅用于discovery模式; -T,--targetname # 指定目标名称,仅用于node模式; -p,--portal # <ip:port> 指定目标IP,不带端口默认使用3260,仅用于discovery、node模式; -l,--login # 登录一个iSCSI设备,仅用于discovery、node模式; -u,--logout # 退出一个iSCSI设备,仅用于node、session模式; -I,--interface # 指定用于iSCSI操作的网络接口; -P,--print # <0-4> 打印详细,用于discovery、node、session模式; -s,--stats # 查看会话状态 -h,--help # 显示帮助; -V,--version # 显示版本信息。

逐项展开说明:

  • -m, --mode:iscsiadm 的入口模式开关,决定了后续操作对象。常见取值包括:
    • discovery:发现模式,用于探测目标端导出的 iSCSI 设备;
    • node:节点模式,管理已发现/已记录的目标节点,执行登录、退出、删除等操作;
    • session:会话模式,查看和管理当前已建立的会话;
    • iface:网络接口模式,管理 iSCSI 使用的网络接口(用于多网卡、多路径等场景);
    • discoverydb:管理持久化的发现记录;host:查看主机相关信息。
  • -t, --type:仅用于 discovery 模式,指定发现方式,常用sendtargets(可简写为st)向目标端发送 SendTargets 请求以枚举其导出的 target;此外还有isns(通过 iSNS 服务器发现)与fw(固件发现)。
  • -T, --targetname:仅用于 node 模式,指定要操作的目标名称(IQN),如iqn.2000-01.com.synology:NAS.target.1。
  • -p, --portal:指定目标端 IP(可带端口,格式ip:port)。不带端口时默认使用 iSCSI 标准端口3260;仅用于 discovery、node 模式。
  • -l, --login:登录目标,仅用于 discovery、node 模式。在 discovery 模式下使用会直接登录发现到的目标,在 node 模式下配合-T与-p登录指定目标。
  • -u, --logout:退出(断开)已登录的设备,仅用于 node、session 模式。
  • -I, --interface:指定用于 iSCSI 操作的网络接口,适用于多网卡绑定或需要固定源 IP 的场景,配合iface模式管理。
  • -P, --print:打印详细级别,取值0-4,数值越大输出越详细;用于 discovery、node、session 模式。
  • -s, --stats:查看会话的统计信息(如读写字节数)。
  • -h, --help与-V, --version:分别显示帮助与版本信息。

提示:iscsiadm --help会按模式分组列出完整选项,实际使用时可将-m与-P、-p等组合成一条命令,例如iscsiadm -m session -P 3查看会话的详细参数。

四、实战全流程:从发现目标到挂载使用

以下实战以一台 CentOS 主机(主机名Azroy-s1)连接一台 Synology NAS 导出的 iSCSI 目标为例,覆盖完整生命周期。

4.1 发送发现请求,列出可用的 iSCSI 目标

[root@Azroy-s1 ~]# iscsiadm -m discovery -t st -p 10.10.10.10 10.10.10.10:3260,1 iqn.2000-01.com.synology:NAS.default-target.1

命令解析:-m discovery进入发现模式,-t st使用 sendtargets 方式,-p 10.10.10.10指定目标端 IP(未带端口,默认使用 3260)。输出第一列10.10.10.10:3260,1是 portal(IP、端口与 portal 组号),第二列iqn.2000-01.com.synology:NAS.default-target.1是目标端导出的 target 名称(IQN)。

4.2 登录到发现的 iSCSI 目标

[root@Azroy-s1 ~]# iscsiadm -m node -T iqn.2000-01.com.synology:NAS.target.1 -p 10.10.10.10 -l Logging in to [iface: default, target: iqn.2000-01.com.synology:NAS.target.1, portal: 10.10.10.10,3260] (multiple) Login to [iface: default, target: iqn.2000-01.com.synology:NAS.target.1, portal: 10.10.10.10,3260] successful.

命令解析:-m node进入节点管理模式,-T指定目标 IQN,-p指定 portal,-l执行登录。成功输出中(multiple)表示使用多路径/多连接方式尝试,Login ... successful.表示该条连接登录成功。登录成功后,目标磁盘会以 SCSI 磁盘的形式出现在系统中(通常为/dev/sdX)。

注意:node 模式下使用的 IQN 应与 discovery 结果中的名称保持一致(实例中NAS.target.1即发现到的目标)。若目标端启用了 CHAP 认证,还需要在/etc/iscsi/iscsid.conf或对应节点记录中配置node.session.auth.username与node.session.auth.password,再重新登录。

4.3 查看已登录的会话与设备

[root@Azroy-s1 ~]# iscsiadm -m session tcp: [3] 10.10.10.10:3260,1 iqn.2000-01.com.synology:NAS.target.1 (non-flash)

iscsiadm -m session列出所有已建立的 iSCSI 会话:tcp表示传输协议,[3]为会话编号(sid),随后是 portal 与目标 IQN,括号中的(non-flash)表示目标磁盘为非闪存介质。

会话建立后,可在本地设备层面确认新出现的磁盘。使用 lsblk 查看块设备列表:

[root@Azroy-s1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 1.8T 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 1.8T 0 part ├─centos-root 253:0 0 1.8T 0 lvm / └─centos-swap 253:1 0 5.9G 0 lvm [SWAP] sdb 8:32 0 10G 0 disk

新增的sdb(10G)即为通过 iSCSI 挂载上来的远端磁盘。确认它确实走的是 iSCSI 传输,可用lsblk -S查看磁盘的传输类型(TRAN 列为iscsi):

[root@Azroy-s1 ~]# lsblk -S /dev/sd* #可以查看硬盘传输类型 NAME HCTL TYPE VENDOR MODEL REV TRAN sda 0:1:0:0 disk HP LOGICAL VOLUME 3.00 sas sdb 12:0:0:1 disk SYNOLOGY Storage 4.0 iscsi

从输出可以看到,本地sda的传输类型为sas,而 iSCSI 挂载的sdb其 VENDOR 为SYNOLOGY、TRAN 为iscsi,直观印证了远端存储的身份。lsblk的更多选项(如-a显示所有设备、-m显示权限信息、-nl无标题列表输出等)可参考 lsblk 命令文档。

4.4 退出已登录的设备

[root@Azroy-s1 ~]# iscsiadm -m node -T iqn.2000-01.com.synology:NAS.target.1 -p 10.10.10.10 -u Logging out of session [sid: 11, target: iqn.2000-01.com.synology:NAS.target.1, portal: 10.10.10.10,3260] 或 [root@Azroy-s1 ~]# iscsiadm -m session -u #退出所有iscsi会话

两种退出方式:

  • iscsiadm -m node -T <iqn> -p <portal> -u:退出指定目标的会话;
  • iscsiadm -m session -u:一次退出当前主机上的所有 iSCSI 会话,适合统一清理。

退出后,对应的/dev/sdb设备将从系统中消失,因此执行退出前务必先卸载(umount)其上挂载的文件系统。

4.5 分区、格式化与挂载

登录成功后,目标磁盘在本地表现为一块普通的裸盘,可以像本地磁盘一样分区、格式化并挂载使用。

(1)查看磁盘基本信息:

[root@Azroy-s1 ~]# fdisk -l /dev/sdb 磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节

fdisk -l显示磁盘容量、扇区数与扇区大小等参数。若需要交互式创建分区(输入n新建、p打印分区表、w保存退出),可使用fdisk /dev/sdb,具体交互流程详见 fdisk 命令文档。

(2)创建文件系统(格式化):

mkfs.ext4 /dev/sdb # 或将 sdb 分区为 sdb1 后执行 mkfs.ext4 /dev/sdb1

mkfs本身不直接建立文件系统,而是调用对应的格式化程序(如mkfs.ext4)执行,可通过-t指定文件系统类型,详见 mkfs 命令文档。对 iSCSI 网络盘建议使用 ext4、xfs 等日志型文件系统以增强数据一致性。

(3)挂载目录:

mkdir /iscsi-data mount /dev/sdb /iscsi-data df -h

df -h以易读方式确认挂载结果与容量信息,其选项详见 df 命令文档。临时挂载用mount即可;若需要开机自动挂载,可参照 mount 命令文档 中的方法,把对应行(建议使用 UUID 而非设备名,避免 iSCSI 盘设备号漂移)写入/etc/fstab。

4.6 持久化与会话恢复

iscsiadm 发现并登录过的目标会被持久化记录在/etc/iscsi/下的节点数据库中(/var/lib/iscsi/nodes/等目录),因此:

  • 重启后执行iscsiadm -m node可以查看历史记录的目标;
  • 结合systemctl enable iscsi设置的开机自启,主机重启后iscsi服务会自动按记录重新登录目标,配合/etc/fstab实现整盘自动挂载;
  • 若要彻底移除某条记录,可使用iscsiadm -m node -T <iqn> -p <portal> -o delete。

五、典型应用场景与注意事项

5.1 典型场景

  • NAS 扩容:将 NAS(Synology/QNAP 等)或商用存储阵列导出的 iSCSI LUN 挂载到服务器,扩展数据卷;
  • 服务器迁移/共享存储:多个服务器共享同一块 iSCSI 磁盘(需注意文件系统层面的并发冲突,通常搭配集群文件系统或分布式文件系统使用);
  • 多路径(MPIO):配合-I/--interface与 iface 模式配置多网卡,配合 device-mapper-multipath 实现链路冗余与负载均衡。

5.2 注意事项

  1. 登录前确认认证配置:目标端启用 CHAP 时,需在/etc/iscsi/iscsid.conf(或节点级记录)配置用户名/密码,否则Login会失败;
  2. 先卸载再退出:退出会话前必须umount相关挂载点,否则可能造成数据丢失或设备繁忙报错;
  3. iSCSI 盘是网络设备:性能与稳定性依赖底层网络(建议使用独立存储网络/千兆以上链路),网络抖动可能触发会话超时重连;
  4. 设备名不稳定:重启后 iSCSI 盘对应的/dev/sdX可能变化,持久化配置应尽量使用 UUID 或文件系统标签;
  5. iscsiadm -m session -u会退出所有会话:在有多会话环境执行前应确认影响范围。

六、总结

iscsiadm 是 Linux 下管理 iSCSI 存储连接的核心工具,通过-m模式区分 discovery(发现)、node(节点)、session(会话)、iface(接口)等操作对象,配合-t/-T/-p/-l/-u等选项即可完成「发现目标 → 登录 → 会话管理 → 退出」的完整生命周期管理。将 iscsiadm 与本仓库中的 lsblk、fdisk、mkfs、mount、df、systemctl 命令组合使用,即可在服务器上完成从远端存储发现、登录到本地分区、格式化、挂载、开机自启的整套磁盘接入方案,这也是虚拟化宿主机、数据库服务器与 NAS 扩容场景中必备的运维技能。

  • 文档
  • 教程

【免费下载链接】linux-command

Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux

项目地址:https://gitcode.com/GitHub_Trending/linux/linux-command
点击查看免费下载
上一篇:Mac Mouse Fix 终极上手指南:把普通鼠标调校出苹果触控板的顺滑手感
下一篇:ik_llama.cpp 的 llama-gguf-hash 实战指南:GGUF 模型逐层张量哈希、UUIDv5 生成与 Manifest 校验

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询