Linux配置iSCSI挂载必须严格按发现→登录→设备识别→分区格式化→挂载顺序执行,任一环节缺失会导致/dev/sdX不出现或mount失败;服务端需target就绪、3260端口监听且防火墙放行,客户端须iscsiadm发现后显式login才能生成设备,裸设备须分区格式化后方可挂载。

Linux 实现远程存储挂载,iSCSI 是最成熟、最通用的块级协议方案。它不是“配个地址就能 mount”,而是必须走通发现→登录→设备识别→分区格式化→挂载这一完整链路,任一环节缺失都会导致 /dev/sdX 不出现或 mount: unknown filesystem type 报错。
iSCSI 挂载前必须确认服务端就绪
客户端所有操作的前提是服务端已正确发布目标(target)且网络可达。常见失败根源不在客户端命令,而在服务端未监听或被拦截:
- 在服务端运行
targetcli ls(LIO)或tgtadm --mode target --op show(tgtd),确认有 active target 和已绑定的 LUN - 执行
ss -tlnp | grep :3260,确保进程正在监听 TCP 3260 端口 - 检查防火墙(
firewalld或iptables)是否放行 3260 端口;云环境还需核对安全组规则 - 若启用 CHAP 认证,需确认客户端 initiator name 已加入服务端 ACL 白名单
客户端标准操作流程不能跳步
发现(discovery)只是获取 target 列表,不建立连接;只有 login 才触发内核生成块设备。顺序错误或遗漏 login,lsblk 就看不到新磁盘:
- 安装工具:
yum install -y iscsi-initiator-utils(RHEL/CentOS)或apt install -y open-iscsi(Debian/Ubuntu) - 可选但推荐:编辑
/etc/iscsi/initiatorname.iscsi,设置唯一 initiator name(如iqn.2026-06.com.example:client01) - 发现目标:
iscsiadm -m discovery -t st -p 192.168.1.100:3260 - 登录目标:
iscsiadm -m node -T iqn.2026-04.com.example:storage1 -p 192.168.1.100:3260 -l(注意是-l,不是-I) - 验证会话:
iscsiadm -m session -P 3查看连接状态;lsblk应显示新增的sdb(或类似)设备
裸设备必须初始化才能挂载
刚登录的 iSCSI 设备是原始块设备,等同于一块新硬盘——没有分区表、没有文件系统,不能直接 mount /dev/sdb:
- 若用作 LVM 物理卷:直接
pvcreate /dev/sdb,后续建 VG/LV - 若作普通挂载点:先
fdisk /dev/sdb创建主分区(如/dev/sdb1),再mkfs.xfs /dev/sdb1(推荐 XFS)或mkfs.ext4 - 创建挂载目录:
mkdir -p /mnt/iscsi,然后mount /dev/sdb1 /mnt/iscsi
实现开机自动挂载需两层保障
仅靠 /etc/fstab 不可靠,因为 iSCSI 设备可能在 fstab 加载时还未就绪。必须配合 systemd 依赖管理:
- 确保
iscsid服务开机启动:systemctl enable iscsid - 在
/etc/fstab中使用 _netdev 选项,例如:/dev/sdb1 /mnt/iscsi xfs _netdev,defaults 0 0 - 更稳妥做法:用 systemd unit 文件定义挂载单元,明确依赖
iscsi.service,避免 race condition


















