Linux接入iSCSI远程存储需完成服务端共享、客户端发现登录、本地挂载三步闭环,关键在IQN命名一致、ACL绑定准确及网络连通性保障。

Linux 接入 iSCSI 远程存储,核心是“服务端共享 + 客户端发现登录 + 本地挂载”三步闭环。关键不在命令数量,而在顺序和配置一致性——尤其是 IQN 命名、ACL 绑定、网络连通性这三点出错,90% 的连接失败都源于此。
服务端:用 targetcli 快速发布一块存储
推荐使用 targetcli(现代主流方案),比旧版 tgt 更直观稳定:
- 准备一块可用块设备(如
/dev/vdb1或 LVM 逻辑卷),确保已分区并同步(partprobe) - 安装并启动服务:
sudo yum install targetcli -y && sudo systemctl enable --now target - 进入交互式配置:
sudo targetcli,依次执行:-
/backstores/block create mydisk /dev/vdb1(定义后备存储) -
/iscsi create iqn.2025-12.com.example:storage(创建唯一 IQN) -
/iscsi/iqn.2025-12.com.example:storage/tpg1/acls create iqn.2025-12.com.example:client01(绑定客户端 initiator 名) -
/iscsi/iqn.2025-12.com.example:storage/tpg1/luns create /backstores/block/mydisk(挂载 LUN) -
/iscsi/iqn.2025-12.com.example:storage/tpg1/portals create 0.0.0.0(监听所有 IP,默认端口 3260)
-
- 保存退出:
saveconfig→exit;检查防火墙:firewall-cmd --add-port=3260/tcp --permanent && firewall-cmd --reload
客户端:正确设置 initiator 名并完成登录
客户端必须使用和服务端 ACL 中完全一致的 IQN,否则拒绝访问:
- 安装客户端工具:
sudo yum install iscsi-initiator-utils(RHEL/CentOS)或sudo apt install open-iscsi(Debian/Ubuntu) - 编辑
/etc/iscsi/initiatorname.iscsi,只保留一行(不可注释,不可多行):InitiatorName=iqn.2025-12.com.example:client01 - 重启服务使生效:
sudo systemctl restart iscsid - 发现目标:
sudo iscsiadm -m discovery -t st -p 192.168.1.100(替换为服务端实际 IP) - 登录目标:
sudo iscsiadm -m node -T iqn.2025-12.com.example:storage -p 192.168.1.100 --login - 验证连接:
sudo iscsiadm -m session -P 3 | grep "Attached scsi disk",应看到类似sdb的新磁盘
挂载与持久化:像本地磁盘一样使用
iSCSI 设备登录后表现为标准块设备(如 /dev/sdb),后续操作与本地磁盘无异:
- 查看识别结果:
lsblk或fdisk -l | grep "^/dev/sd" - 首次使用需格式化(跳过已有文件系统):
sudo mkfs.xfs /dev/sdb(推荐 XFS,大文件性能好) - 创建挂载点并挂载:
sudo mkdir /mnt/iscsi && sudo mount /dev/sdb /mnt/iscsi - 实现开机自动挂载:在
/etc/fstab中添加一行:/dev/sdb /mnt/iscsi xfs defaults,_netdev 0 0
_netdev 是关键参数,确保网络就绪后再尝试挂载
排错要点:三类高频问题快速定位
连接不成功?优先检查以下三项:
-
网络层:客户端能否
ping通服务端?telnet 192.168.1.100 3260是否通?防火墙是否放行 TCP 3260? -
IQN 匹配:客户端
/etc/iscsi/initiatorname.iscsi内容,是否与服务端acls create xxx中的 IQN 完全一致(含大小写、标点)? -
服务状态:服务端运行
sudo targetcli ls是否显示完整结构?客户端运行sudo iscsiadm -m discovery ...是否返回目标 IQN?无返回说明发现失败,先查网络和端口










