Linux iSCSI 配置与连接完整指南(CentOS7,客户端 Initiator 视角)
概念:iSCSI 把远端存储(Target,通常是 NAS / 存储服务器 / NFS 服务器)通过 TCP/IP 映射成本地盘(如
/dev/sdb)。
- Initiator:客户端,就是你的 Linux 机器
- Target:服务端,提供块存储(IP + 端口 3260) 适用场景:扩展数据盘、数据库共享存储、虚拟机数据存储。
一、整体流程
安装 initiator 工具
↓
配置 initiatorname(IQN)
↓
discover 发现 Target
↓
login 登录 Target
↓
识别本地磁盘 /dev/sdX
↓
分区 + 格式化 + 挂载
↓
配置开机自动登录 + 自动挂载
二、安装客户端工具
yum install iscsi-initiator-utils -y
关键命令:
iscsiadm:主命令initiatorname.iscsi:本机 IQN 配置文件/etc/iscsi/iscsid.conf:全局参数
启动并自启:
systemctl enable --now iscsid
三、配置 InitiatorName(IQN)
查看本机 IQN:
cat /etc/iscsi/initiatorname.iscsi
输出类似:
InitiatorName=iqn.1994-05.com.redhat:xxxxxxxxxxxx
这个 IQN 要在 Target 服务端加入 “允许访问列表”,否则登录被拒。
四、发现 Target(discover)
假设 Target 服务端 IP 为 192.168.1.100,默认端口 3260。
iscsiadm -m discovery -t st -p 192.168.1.100
输出示例:
192.168.1.100:3260,1 iqn.2024-01.com.example:storage.lun1
这一行表示发现了一个 Target,名字叫
iqn.2024-01.com.example:storage.lun1。
五、登录 Target(login)
iscsiadm -m node -T iqn.2024-01.com.example:storage.lun1 -p 192.168.1.100:3260 -l
参数:
-T:Target 名字(上一步看到的)-p:Target IP: 端口-l:login
如果有多个 Target,全部登录:
iscsiadm -m node --login
六、验证本地设备
登录成功后,系统会识别成一块新磁盘:
lsblk
# 或
fdisk -l
应该看到 /dev/sdb(大小和 LUN 一致)。
查看已登录会话
iscsiadm -m session
# 或详细
iscsiadm -m session -P 3
七、分区、格式化、挂载
方式 A:直接整盘格式化(推荐,单 LUN 单文件系统)
# 格式化 xfs
mkfs.xfs /dev/sdb
# 建挂载点
mkdir -p /mnt/iscsi_data
# 挂载
mount /dev/sdb /mnt/iscsi_data
方式 B:分区后使用
fdisk /dev/sdb
# n -> p -> 回车 -> w
mkfs.xfs /dev/sdb1
mount /dev/sdb1 /mnt/iscsi_data
⚠️ 不要对 iSCSI LUN 直接
mkfs到旧数据!会清空。
八、开机自动登录(关键!)
1. 设置 Target 自动登录
iscsiadm -m node -T iqn.2024-01.com.example:storage.lun1 -p 192.168.1.100:3260 --op update -n node.startup -v automatic
不设置这一步,重启后 iSCSI 不会自动连,挂载点会空。
2. fstab 自动挂载
# 用 UUID 最稳(设备名 /dev/sdb 可能漂移)
blkid /dev/sdb
写入 /etc/fstab:
UUID="xxxx-xxxx" /mnt/iscsi_data xfs defaults,_netdev,noatime 0 0
⚠️ 必须加
_netdev,表示这是网络设备挂载,网络起来后再挂;否则开机可能卡住。
测试:
mount -a
九、常用管理命令
# 查看所有发现的 Target
iscsiadm -m node
# 登出(断开)
iscsiadm -m node -T iqn.xxx -p 192.168.1.100:3260 -u
# 注销(删除记录)
iscsiadm -m node -o delete -T iqn.xxx -p 192.168.1.100:3260
# 查看会话
iscsiadm -m session
# 查看节点详细配置
iscsiadm -m node -T iqn.xxx -P 1
十、最佳实践
1. 网络
- iSCSI 流量走独立网络 / VLAN,不要和业务流量混在一起
- 万兆网络起步,延迟 < 1ms
- 必要时绑定双网卡(bonding)做冗余
2. 多路径 Multipath(生产强烈推荐)
双网卡 / 双路径连存储,一条链路断了自动切换:
yum install device-mapper-multipath -y
mpathconf --enable --with_multipathd y
systemctl restart multipathd
multipath -ll
挂载时用 /dev/mapper/mpatha 而不是 /dev/sdb,避免单路径故障。
3. 超时与重试
编辑 /etc/iscsi/iscsid.conf:
node.session.timeo.replacement_timeout=30
node.conn[0].timeo.login_timeout=15
node.session.err_timeo.abort_timeout=15
4. 文件系统挂载选项
defaults,_netdev,noatime,nodiratime 0 0
_netdev:网络设备noatime:不记录访问时间,提升性能
5. 不要直接对 LUN 做 RAID 或 LVM 跨盘
- LUN 本身在存储端可能已经做了 RAID
- 多路径用 multipath,不要用 mdadm 自己组
6. 安全性
- CHAP 认证(Target 端开启,客户端在 iscsid.conf 配 username/password)
- 存储网络不要暴露公网
- 防火墙只放行发起端 IP 的 3260
十一、Target 服务端简要配置(可选参考)
如果是你自己搭 target(用 targetcli):
yum install targetcli -y
targetcli
常用操作:
- 后端存储:
/backstores/fileio create disk1 /iscsi/disk1.img 10G - 创建 target:
/iscsi create iqn.2024-01.com.example:storage.lun1 - 映射 LUN:
/iscsi/iqn.../tpg1/luns create /backstores/fileio/disk1 - 配置 ACL(允许哪个 initiator 连):
/iscsi/iqn.../tpg1/acls create <客户端IQN> - 监听:
/iscsi/iqn.../tpg1/portals create 0.0.0.0 3260 - 保存:
saveconfig
防火墙:
firewall-cmd --permanent --add-port=3260/tcp
firewall-cmd --reload
十二、常见问题
1. 发现 Target 没反应 / 超时
- 网络不通:
ping 192.168.1.100 - 防火墙没放行 3260
- Target 端 portal 没配对
2. Login 报错 iscsiadm: Could not login to [iface: default]
- Target 端 ACL 没加你的 IQN
- CHAP 用户名 / 密码错
- 服务端未启动 target 服务
3. 登录成功但 /dev 看不到新盘
- 执行
rescan-scsi-bus.sh(sg3_utils 包) - 或
echo "- - -" > /sys/class/scsi_host/host0/scan - dmesg 看内核识别情况
4. 重启后磁盘名变了(sdb 变 sdc)
- 不要用
/dev/sdb挂载,用 UUID 或/dev/mapper/mpatha
5. 重启后挂载失败 / 开机卡住
- fstab 没加
_netdev - iSCSI 没设自动登录
- 解决:进单用户模式注释 fstab 那行,修正后再开
6. 频繁断连
- 检查网络质量、交换机丢包
- 调整
replacement_timeout大一点 - 检查 multipath 状态
十三、完整实操示例
# 1. 安装
yum install iscsi-initiator-utils -y
systemctl enable --now iscsid
# 2. 发现
iscsiadm -m discovery -t st -p 192.168.1.100
# 3. 登录
iscsiadm -m node -T iqn.2024-01.com.example:storage.lun1 -p 192.168.1.100:3260 -l
# 4. 确认磁盘
lsblk
# 5. 格式化+挂载
mkfs.xfs /dev/sdb
mkdir -p /mnt/iscsi_data
mount /dev/sdb /mnt/iscsi_data
# 6. 开机自动登录
iscsiadm -m node -T iqn.2024-01.com.example:storage.lun1 --op update -n node.startup -v automatic
# 7. fstab 自动挂载
echo "UUID=$(blkid -s UUID -o value /dev/sdb) /mnt/iscsi_data xfs defaults,_netdev,noatime 0 0" >> /etc/fstab
mount -a
十四、速查表
表格
| 操作 | 命令 |
|---|---|
| 发现 Target | iscsiadm -m discovery -t st -p IP |
| 登录 | iscsiadm -m node -T IQN -p IP:3260 -l |
| 全部登录 | iscsiadm -m node --login |
| 查看会话 | iscsiadm -m session |
| 登出 | -u |
| 删除记录 | -o delete |
| 自动登录 | --op update -n node.startup -v automatic |
| 查看设备 | lsblk / fdisk -l |
| fstab | 必须加 _netdev |
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END











暂无评论内容