完整指南 连接 步骤 iSCSI Linux 配置与最佳实践

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

常用操作:

  1. 后端存储:/backstores/fileio create disk1 /iscsi/disk1.img 10G
  2. 创建 target:/iscsi create iqn.2024-01.com.example:storage.lun1
  3. 映射 LUN:/iscsi/iqn.../tpg1/luns create /backstores/fileio/disk1
  4. 配置 ACL(允许哪个 initiator 连):/iscsi/iqn.../tpg1/acls create <客户端IQN>
  5. 监听:/iscsi/iqn.../tpg1/portals create 0.0.0.0 3260
  6. 保存: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

十四、速查表

表格

操作命令
发现 Targetiscsiadm -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
喜欢就支持一下吧
点赞9 分享
评论 抢沙发
头像-次元社
欢迎您留下宝贵的见解!
提交
头像-次元社

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容