iscsi连接常见问题根因是配置顺序与细节错误:需正确安装对应发行版包(如rhel用iscsi-initiator-utils)、严格设置initiatorname.iscsi格式、执行discovery后再login、配置chap时区分单/双向认证并重启iscsid服务,同时确保防火墙放行3260端口及target端acl包含启动器iqn。

能连上,但设备不识别、重启后丢失、CHAP认证失败——这些问题基本都出在配置顺序和配置项的细节上,不是装了包就能用。
确认系统已安装 open-iscsi 并启动服务
不同发行版安装命令不同,open-iscsi 是 Debian/Ubuntu 的包名,RHEL/CentOS 用的是 iscsi-initiator-utils。装错包会导致 iscsiadm 命令不存在或功能残缺。
- Debian/Ubuntu:
sudo apt install open-iscsi - RHEL/CentOS 7+:
sudo yum install iscsi-initiator-utils(或dnf) - 启动并设为开机自启:
sudo systemctl start iscsid&&sudo systemctl enable iscsid - 检查状态:
sudo systemctl status iscsid—— 必须显示active (running),仅iscsid.socket活着不算数
设置正确的 InitiatorName 并验证
/etc/iscsi/initiatorname.iscsi 文件必须存在且格式严格:只有一行 InitiatorName=iqn.yyyy-mm.reversed.domain:name,不能有多余空格、注释或换行。Target 端 ACL 绑定的就是这个字符串,拼错一个字符就拒绝连接。
- 查看当前值:
cat /etc/iscsi/initiatorname.iscsi - 若为空或格式错误,用
sudo vi /etc/iscsi/initiatorname.iscsi编辑,例如:InitiatorName=iqn.2026-09.com.example:client01 - 改完不要重启服务,但必须确保
iscsid进程已重载该文件(通常 restart 即可) - 注意:有些云环境或容器里该文件可能被挂载为只读,需提前处理权限或使用 overlay
发现并登录 Target 的完整命令链
发现(discovery)和登录(login)是两个独立动作,中间不能跳步。很多问题出在 discovery 没成功却直接 login,或者 login 后没确认 session 是否 active。
- 执行发现:
sudo iscsiadm -m discovery -t st -p 192.168.10.50:3260(IP 替换为你的 Target 地址) - 该命令会把找到的 Target 写入
/var/lib/iscsi/nodes/下的子目录,路径含 IQN 和 IP - 登录:
sudo iscsiadm -m node -p 192.168.10.50:3260 -l(必须带-p,否则默认用第一个 node,易错) - 验证登录状态:
sudo iscsiadm -m session—— 应输出类似tcp: [1] 192.168.10.50:3260,3260的行 - 查看新磁盘:
lsblk或cat /proc/scsi/scsi,应看到类似sdb的新设备
启用自动登录与 CHAP 认证配置
默认登录是临时的,重启后失效;CHAP 配置项位置和开关逻辑极易配错,导致反复提示“authentication failed”。
- 设为开机自动登录:
sudo iscsiadm -m node -p 192.168.10.50:3260 -o update -n node.startup -v automatic - 若 Target 启用了 CHAP,必须编辑
/etc/iscsi/iscsid.conf: - 取消注释并设置:
node.session.auth.authmethod = CHAP - 填入 Target 要求的用户名密码:
node.session.auth.username = myuser,node.session.auth.password = mypass - 注意:CHAP 是单向还是双向?如果是双向,还要配
node.session.auth.username_in和node.session.auth.password_in - 改完配置后必须 reload:
sudo systemctl restart iscsid,不是 reload
最关键的遗漏点:防火墙没放行 3260 端口,或 Target 端未将 Initiator 的 IQN 加入 ACL 白名单。这两处错误不会报明确连接失败,而是表现为 discovery 返回空、login 无响应或 timeout——得查 Target 日志才能定位。











