- 发现并登录 iSCSI 目标:让 Linux 客户端找到并连接到存储服务器上的 LUN(Logical Unit Number,逻辑单元号)。
- 挂载文件系统:像挂载普通硬盘一样,将连接上的 iSCSC 设备挂载到指定的目录。
下面我将提供一个完整、详细的步骤指南,并包含一些常见问题的排查。

准备工作
- 网络连通性:确保你的 Linux 客户端能够通过 IP 地址访问到 iSCSI 存储服务器(Target)。
- 必要信息:你需要从存储管理员那里获取以下信息:
- iSCSI Target 的 IP 地址。
- iSCSI Target 的门户端口:通常是
3260。 - iSCSI Initiator 名称:你的 Linux 客户端的唯一标识符,格式通常是
iqn.yyyy-mm.<reverse-domain>:[unique-name]。iqn.2025-10.com.example:storage-client-01,如果不确定,可以按下面步骤生成一个。 - iSCSI Target 的 IQN 名称:存储服务器的标识符。
- CHAP 认证信息(如果需要):用户名和密码。
第一步:安装和配置 iSCSI 客户端工具
在大多数现代 Linux 发行版中,可以使用 open-iscsi 包。
对于基于 RHEL/CentOS/Fedora 的系统:
# 安装 open-iscsi 包 sudo yum install -y iscsi-initiator-utils # 或者使用 dnf (新版本) sudo dnf install -y iscsi-initiator-utils
对于基于 Debian/Ubuntu 的系统:
# 更新软件包列表 sudo apt update # 安装 open-iscsi 包 sudo apt install -y open-iscsi
第二步:配置 iSCSI Initiator 名称
/etc/iscsi/initiatorname.iscsi 文件包含了你的 Initiator 的 IQN 名称。
-
查看或编辑文件:
sudo nano /etc/iscsi/initiatorname.iscsi
应该类似这样:
(图片来源网络,侵删)InitiatorName=iqn.1994-05.com.redhat:4c4f6c79-0c8f-4b3f-8f1e-3d5a7b1c9e3d你可以保留默认的,或者根据需要修改,确保这个名称在存储服务器上是允许访问的。
-
重启或重载服务(如果修改了名称):
# 重启 iscsid 服务 sudo systemctl restart iscsid
在较新的系统上,
iscsid服务通常是自动管理的,重启客户端系统也能确保配置生效。
第三步:发现并登录 iSCSI Target
这是核心步骤,我们使用 iscsiadm 命令行工具。
发现目标
使用 iscsiadm 的 discovery 功能来查找存储服务器上可用的 Target。
# 语法: iscsiadm -m discovery -t st -p <Target_IP_Address>:<Port> # st 代表 "sendtargets",这是最常用的发现方式。 # 示例: sudo iscsiadm -m discovery -t st -p 192.168.1.100:3260
执行成功后,你会在 /var/lib/iscsi/nodes/ 目录下看到发现的 Target 信息,并且命令会返回 Target 的 IQN 名称,
168.1.100:3260,1 iqn.2025-10.com.example:storage-server.target-01
登录目标
发现目标后,你需要登录它来建立会话并挂载 LUN。
# 语法: iscsiadm -m node -T <Target_IQN> -p <Target_IP_Address>:<Port> --login # 示例: sudo iscsiadm -m node -T iqn.2025-10.com.example:storage-server.target-01 -p 192.168.1.100:3260 --login
如果存储服务器配置了 CHAP 认证(用户名和密码),你需要先在 /etc/iscsi/iscsid.conf 中配置好,然后再执行登录命令,配置 CHAP 比较复杂,通常建议联系存储管理员。
登录成功后,你可以使用以下命令查看会话状态:
sudo iscsiadm -m session
输出会显示类似 tcp: [1] 192.168.1.100:3260,1 iqn.2025-10.com.example:storage-server.target-01 的信息,表示会话已建立。
第四步:查找并挂载 iSCSC 设备
登录成功后,Linux 内核会识别到新的块设备(LUN)。
查找新设备
使用 lsblk 或 fdisk 命令来查看所有磁盘设备,找到刚刚挂载上的 iSCSI 设备。
# lsblk 会清晰地显示设备大小和类型 lsblk # 或者使用 dmesg 查看内核日志,可以看到新设备的识别过程 dmesg | grep -i scsi
假设你看到的设备是 /dev/sdb,并且它有一个分区 /dev/sdb1。
创建挂载点
创建一个目录作为挂载点。
sudo mkdir -p /mnt/iscsi_storage
挂载设备
使用 mount 命令将设备挂载到创建的目录。
# 语法: mount <设备路径> <挂载点> # 示例 (挂载整个设备,如 /dev/sdb): sudo mount /dev/sdb /mnt/iscsi_storage # 示例 (如果设备有分区,如 /dev/sdb1): sudo mount /dev/sdb1 /mnt/iscsi_storage
验证挂载
检查 /mnt/iscsi_storage 目录下是否有数据,并用 df -h 确认挂载状态。
df -h | grep /dev/sdb
你应该能看到类似下面的输出,证明挂载成功:
/dev/sdb 916G 33G 884G 4% /mnt/iscsi_storage
第五步:配置开机自动挂载(重要)
为了让 iSCSI 设备在系统重启后能自动挂载,你需要修改 /etc/fstab 文件。
警告: 错误地编辑 /etc/fstab 会导致系统无法启动!请务必小心。
-
获取设备 UUID(推荐方式,比直接使用
/dev/sdb更稳定):sudo blkid /dev/sdb
输出类似:
/dev/sdb: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" TYPE="xfs" -
编辑
/etc/fstab:sudo nano /etc/fstab
-
添加新行: 在文件末尾添加以下内容,使用你自己的 UUID 和挂载点。
UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /mnt/iscsi_storage xfs defaults,_netdev 0 0UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890:替换为你的设备 UUID。/mnt/iscsi_storage:你的挂载点。xfs:替换为你的文件系统类型(如ext4)。defaults:标准的挂载选项。_netdev:这个选项非常重要! 它告诉系统这是一个网络设备,应该在网络启动之后再尝试挂载,避免网络未就绪时挂载失败导致系统启动卡住。0 0:表示dump和fsck选项,对于网络文件系统通常设为 0。
-
保存并退出。
第六步:断开和删除连接(可选)
如果你需要暂时断开连接或完全移除配置。
卸载设备
sudo umount /mnt/iscsi_storage
退出 iSCSI 会话
# 语法: iscsiadm -m node -T <Target_IQN> -p <Target_IP_Address>:<Port> --logout sudo iscsiadm -m node -T iqn.2025-10.com.example:storage-server.target-01 -p 192.168.1.100:3260 --logout
删除节点信息(彻底移除配置)
# 语法: iscsiadm -m node -T <Target_IQN> -p <Target_IP_Address>:<Port> -o delete sudo iscsiadm -m node -T iqn.2025-10.com.example:storage-server.target-01 -p 192.168.1.100:3260 -o delete
常见问题排查
-
iscsiadm: Could not login to [iface: default].- 原因:网络不通、防火墙阻止了端口
3260、Target IQN 或认证信息错误。 - 排查:
ping <Target_IP_Address>检查网络。- 在存储服务器和客户端上检查防火墙(
firewall-cmd,ufw,iptables)是否允许3260端口。 - 再次确认 Target IQN 和 Initiator IQN 是否正确。
- 检查 CHAP 用户名和密码是否配置正确。
- 原因:网络不通、防火墙阻止了端口
-
mount: /mnt/iscsi_storage: special device /dev/sdb does not exist.- 原因:iSCSI 会话未成功建立,内核没有识别到设备。
- 排查:
- 运行
sudo iscsiadm -m session查看是否有活动的会话。 - 如果没有,重新执行
iscsiadm ... --login。 - 检查
dmesg | grep -i scsi查看内核识别设备时的日志,看是否有错误信息。
- 运行
-
系统启动时挂载失败,进入紧急模式
- 原因:通常是因为 iSCSI 设备在网络就绪之前就被
/etc/fstab尝试挂载了。 - 排查:
- 确保
/etc/fstab中对应 iSCSI 设备的挂载选项包含了_netdev。 - 如果没有,添加它并重启。
- 确保
- 原因:通常是因为 iSCSI 设备在网络就绪之前就被
-
性能问题
- 原因:网络延迟、MTU 设置不当、存储服务器负载高等。
- 排查:
- 检查网络链路是否为全双工、速率是否匹配。
- 尝试调整 iSCSI 会话的参数(如
isid,tpgt),但这通常需要高级知识。 - 联系存储管理员检查后端存储性能。
