iscsi挂载核心是让远程lun稳定呈现为/dev/sdx设备,必须严格按发现→登录→扫描识别→分区/格式化→挂载顺序执行;跳过任一环节会导致设备不可见或挂载失败。

挂载 iSCSI 实现块设备映射,核心不是“直接 mount”,而是让远程 LUN 在本地稳定呈现为可识别、可格式化、可持久使用的 /dev/sdX 设备。整个过程必须严格遵循发现 → 登录 → 扫描识别 → 分区/格式化 → 挂载的顺序,跳过任意环节都会导致设备不可见或挂载失败。
iSCSI 连接前必须确认的三件事
没验证这三项,后续所有命令大概率白做:
-
服务端 target 已发布且监听正常:在服务端执行
targetcli ls或tgtadm --mode target --op show,确认有 active target 和已绑定的 LUN;再运行ss -tlnp | grep :3260,确保 3260 端口处于 LISTEN 状态 -
客户端 IQN 名称与服务端 ACL 完全一致:检查
/etc/iscsi/initiatorname.iscsi内容是否只有一行、无空格、无注释,格式如InitiatorName=iqn.2026-06.com.example:client01;改完后必须执行systemctl restart iscsid -
网络与认证通路畅通:确认客户端能 ping 通服务端 IP;若启用 CHAP 认证,需在
/etc/iscsi/iscsid.conf中正确填写node.session.auth.username和node.session.auth.password,并确保服务端白名单中已添加该 IQN
发现与登录:两步缺一不可
发现(discovery)只是获取目标列表,不建立连接;登录(login)才真正激活会话并触发内核生成设备节点:
- 执行发现:
iscsiadm -m discovery -t st -p 192.168.1.100:3260(-t st表示 sendtargets 模式) - 显式登录目标:
iscsiadm -m node -T iqn.2026-04.com.example:storage1 -p 192.168.1.100:3260 -l(-l是 login,不是-I) - 验证登录成功:
iscsiadm -m session应有输出;lsblk应出现新盘(如sdb);若无,先执行iscsiadm -m session --rescan强制重扫 LUN
设备识别与挂载:别直接 mount /dev/sdb
刚登录的 iSCSI 设备是裸块设备,没有分区表也没有文件系统。直接 mount /dev/sdb /mnt 必报错 wrong fs type:
- 如用于数据库裸设备或 LVM 物理卷,可跳过分区,直接
pvcreate /dev/sdb - 如需普通挂载,先分区:
fdisk /dev/sdb创建主分区(如/dev/sdb1),再格式化:mkfs.xfs /dev/sdb1(推荐 XFS)或mkfs.ext4 /dev/sdb1 - 挂载时禁止使用 /dev/sdb1,应改用 UUID:
blkid /dev/sdb1查出 UUID,写入/etc/fstab,格式为:UUID=xxxx-xxxx /mnt/iscsi xfs defaults,_netdev 0 0
其中_netdev是关键,防止网络未就绪时挂载卡死开机流程
开机自动连接与设备名稳定性
iSCSI 设备名(如 sdb)可能随重启漂移,靠设备名写 fstab 极易出错:
- 确保
/etc/iscsi/iscsid.conf中node.startup = automatic - 对每个已发现的目标,执行:
iscsiadm -m node -o update -n node.startup -v automatic - 更稳妥的方式是使用
/dev/disk/by-path/下的路径(含 IP 和 IQN),例如:/dev/disk/by-path/ip-192.168.1.100:3260-iscsi-iqn.2026-04.com.example:storage1-lun-0,该路径唯一且稳定











