linux配置iscsi存储必须严格按发现→登录→分区格式化→挂载顺序执行,漏掉任一环节会导致设备不可见或挂载失败;服务端需确认target已发布、lun可用且3260端口监听正常,客户端须先iscsiadm发现并显式login才能生成/dev/sdx设备。

Linux 上配置 iSCSI 存储不是“挂载一下就行”的事,必须先发现、登录、再分区/格式化/挂载,漏掉任一环节都会导致 mount: unknown filesystem type 'iscsi' 或设备根本不出现在 /dev/ 下。
怎么确认目标 iSCSI 服务端已就绪?
客户端操作前,得先知道服务端(target)是否在线、LUN 是否已发布。常见错误是客户端反复执行 iscsiadm -m discovery 却无返回——大概率是服务端没开或防火墙拦了 3260 端口。
你应该在服务端(如 Linux + tgt / LIO)验证:
- 运行
tgtadm --mode target --op show(tgt)或targetcli ls(LIO),确认有 active target 和可用 LUN - 检查
ss -tlnp | grep :3260,确保监听正常 - 若服务端在云环境(如 AWS EBS via iSCSI gateway),确认安全组放行 TCP 3260,且 initiator 名称已在白名单中
iscsiadm 发现并登录 target 的关键步骤
发现(discovery)只是获取 target 列表,不等于建立连接;登录(login)才真正建立会话、让内核生成 /dev/sdX 设备。跳过 login 或 login 失败后未检查状态,会导致后续挂载找不到设备。
实操顺序不能乱:
- 安装客户端:
yum install -y iscsi-initiator-utils(CentOS/RHEL)或apt install -y open-iscsi(Debian/Ubuntu) - 设置 initiator 名称(可选但建议):
echo "InitiatorName=iqn.1994-05.com.redhat:client1" > /etc/iscsi/initiatorname.iscsi - 发现 target:
iscsiadm -m discovery -t st -p 192.168.1.100:3260(-t st表示 sendtargets 模式) - 登录 target:
iscsiadm -m node -T iqn.2026-04.com.example:storage1 -p 192.168.1.100:3260 -l(-l是 login,不是-I) - 验证登录成功:
iscsiadm -m session -P 3查看详细会话;lsblk应出现新sdX设备(如sdb)
登录后的设备能直接挂载吗?
不能默认直接挂载。刚登录的 iSCSI 设备是裸块设备,和新插的 SATA 硬盘一样:没有分区表、没有文件系统。直接 mount /dev/sdb /mnt 会报 mount: /mnt: wrong fs type。
你需要判断使用场景再决定下一步:
- 如果这是专用存储(如数据库裸设备、LVM PV),跳过分区和格式化,直接用于
pvcreate /dev/sdb - 如果要当普通目录用,必须先
fdisk /dev/sdb创建分区(如/dev/sdb1),再mkfs.xfs /dev/sdb1(推荐 XFS)或mkfs.ext4 /dev/sdb1 - 注意:iSCSI 链路不稳定时,
/dev/sdX名称可能漂移(如重启后变成sdc)。生产环境务必用/dev/disk/by-path/或 UUID(blkid查)做持久引用
如何让 iSCSI 设备开机自动登录并挂载?
自动登录靠 iscsid 服务,自动挂载靠 /etc/fstab,二者缺一不可。只配 fstab 不启 iscsid,系统启动时 /dev/sdX 根本不存在,挂载必然失败。
必须完成三件事:
- 启用 iscsid 服务:
systemctl enable --now iscsid(RHEL8+/CentOS8+)或systemctl enable --now iscsi(旧版) - 标记节点为自动登录:
iscsiadm -m node -T iqn.2026-04.com.example:storage1 -p 192.168.1.100:3260 --op update -n node.startup -v automatic - fstab 中避免写死
/dev/sdb1,改用 UUID:UUID="a1b2c3d4..." /mnt/iscsi xfs _netdev,defaults 0 0(_netdev告诉 systemd 等网络就绪后再挂载)
最易被忽略的是 _netdev 选项——没它,系统可能在网卡还没 up 时就尝试挂载,超时失败后整个启动流程卡住或降级为 emergency mode。











