iscsiadm discovery失败主因是-t类型或端口不匹配:默认-st可能不响应,需试-isns/-slp;端口非3260时须显式指定如-p ip:port;配合-d 1调试、确认initiatorname与target白名单一致、校验iscsid.conf认证配置并重启服务。

iscsiadm discovery 怎么指定正确 type 和 port
发现远程 Target 失败,八成卡在 iscsiadm -m discovery 这一步——不是 IP 写错,而是 -t 类型或端口不匹配。默认用 -t st(SendTargets),但有些 Target 只响应 -t isns 或 -t slp;而端口不一定是 3260,尤其在防火墙隔离或自定义部署时。
实操建议:
- 先确认目标监听端口:
nc -zv <virtual san ip> 3260</virtual>,不通就查 Target 端配置(如targetcli中的/iscsi/iqn.*/tpg1/portals/路径) - 强制指定端口:把
-p 192.168.1.100改成-p 192.168.1.100:3261(冒号后跟实际端口) - 换 discovery type 尝试:
iscsiadm -m discovery -t isns -p 192.168.1.100,部分企业级 SAN 支持 ISNS 协议 - 加
-d 1开启 debug:iscsiadm -m discovery -t st -p 192.168.1.100 -d 1,看日志里是否报connection refused或no route to host
登录前必须配对的两个文件:initiatorname.iscsi 和 iscsid.conf
/etc/iscsi/initiatorname.iscsi 和 /etc/iscsi/iscsid.conf 不一致,会导致 login 直接被 Target 拒绝,错误信息常是 login failed with 0x02/0x05 或静默失败。
关键点:
-
InitiatorName必须和 Target 端白名单完全一致(大小写、标点、空格都不能差);用iscsi-iname生成最稳妥:iscsi-iname -p iqn.2026-10.org.example:client -
iscsid.conf里若启用了 CHAP,必须取消注释并填对入站用户/密码:node.session.auth.authmethod = CHAP、node.session.auth.username = myuser、node.session.auth.password = mypass - 改完任一文件,都要重启服务:
systemctl restart iscsid(RHEL/CentOS 7+)或/etc/init.d/iscsi restart(旧版)
iscsiadm node login 怎么做到“自动”且“安全”
所谓“自动登录”,不是写个 shell 脚本塞进 /etc/rc.local,而是让 iscsid 守护进程接管——否则 reboot 后 session 丢失,lsblk 看不到设备。
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
操作链必须完整:
- 先执行 discovery:
iscsiadm -m discovery -t st -p 192.168.1.100 - 再设置 startup 模式:
iscsiadm -m node -T iqn.2026-10.org.example:storage -p 192.168.1.100 --op update -n node.startup -v automatic - 最后显式 login 一次:
iscsiadm -m node -T iqn.2026-10.org.example:storage -p 192.168.1.100 --login(这步触发持久化) - 验证是否生效:
iscsiadm -m node -P 1 | grep "Startup:"应显示automatic;systemctl is-enabled iscsid应为enabled
注意:--op update 必须在 --login 前执行,否则 login 产生的节点配置不会被标记为自动启动。
为什么 login 成功了,但 lsblk 不显示新磁盘?
常见于 Target 返回了 LUN,但 initiator 没触发 SCSI 扫描,或者内核没识别到新设备。这不是配置问题,是状态同步延迟或权限缺失。
排查步骤:
- 确认 session 已建立:
iscsiadm -m session应输出类似tcp: [1] 192.168.1.100:3260,1 iqn.2026-10.org.example:storage - 手动触发 SCSI 重扫描:
echo "- - -" > /sys/class/scsi_host/host*/scan(适用于多数 HBA) - 检查 udev 是否阻塞:
dmesg | tail -20看是否有rejecting I/O to dead device或device not ready - 确认 multipath 未干扰:如果系统装了
device-mapper-multipath,lsblk可能只显示 multipath 设备(如mpatha),而非原始sdb
真正容易被忽略的是:Target 端 LUN 映射未绑定到该 InitiatorName,或 ACL 规则限制了 IP 段——此时 iscsiadm -m session 显示已连,但 /dev/sdX 死活不出现在 lsblk 里。










