前言🤔
很多 Linux 新手学 iSCSI 直接踩一堆致命大坑:
📌统一实验环境:CentOS7 两台虚拟机

iSCSI 架构图

第一部分 iSCSI 底层核心概念
1.1 iSCSI 是什么?诞生背景 & 生产运维价值⚠️
1.1.1 基础定义
iSCSI 全称Internet小型计算机系统接口,俗称 IP-SAN,把本地 SCSI 磁盘指令封装在 TCP/IP 数据包,通过普通以太网传输,实现跨网络共享硬盘。
1.1.2 线上运维核心作用
1.2 iSCSI 五大核心专业名词(实验全程高频,必须吃透)
名词详解对照表
| Target | iSCSI 服务端 | 存储服务器,对外共享磁盘资源 | IQN:iqn.2026-04.cloud.laogao.iscsi-server:disk1 |
| Initiator | iSCSI 客户端 | 业务服务器,远程挂载共享盘 | IQN:iqn.2026-04.cloud.laogao.iscsi-client |
| IQN | 全球唯一标识 | 区分每一台客户端 / 存储服务,ACL 白名单核心匹配依据 | iqn. 年月。反向域名:自定义标识 |
| Portal | 访问门户 | 服务端监听 IP+3260 标准端口 | 10.1.8.10:3260 |
| LUN | 逻辑单元号 | 后端硬盘映射给 Target 对外共享的设备 | LUN 0、LUN1 |
补充关键概念

iSCSI服务端配置流程总图
1.3 iSCSI 完整配置流程总览
第二部分 实验一:iSCSI Target 存储服务端完整搭建
实验目的🤔
线上运维作用⚠️
搭建统一存储池,给多台业务服务器提供远端硬盘,实现存储资源共享、集中备份。
完整实验思路
步骤 1:两台虚拟机初始化配置(主机名 + 静态 IP)
iscsi-server 完整命令(保留提示符 + 逐行注释)
# hostnamectl set-hostname:永久修改系统主机,重启生效
[root@localhost ~]# hostnamectl set-hostname iscsi-server
# nmcli修改网卡配置,关闭DH,手动静态IP 10.1.8.10/24
# ipv4.gateway:内网网关;ipv4.dns:DNS;autoconnect开机自启网卡
[root@localhost ~]# nmcli connection modify ens33 ipv4.method manual ipv4.addresses 10.1.8.10/24 ipv4.gateway 10.1.8.2 ipv4.dns 10.1.8.2 autoconnect yes
# nmcli connection up:重载网卡,配置立即生效,无需重启机器
[root@localhost ~]# nmcli connection up ens33
# systemctl disable firewalld –now:临时关闭防火墙,实验简化操作
[root@localhost ~]# systemctl disable firewalld –now
# setenforce 0:临时关闭SELinux安全拦截,永久修改需改/etc/selinux/config
[root@localhost ~]# setenforce 0
iscsi-client 完整初始化命令
# 修改客户端主机名
[root@localhost ~]# hostnamectl set-hostname iscsi-client
# 配置客户端静态IP 10.1.8.11
[root@localhost ~]# nmcli connection modify ens33 ipv4.method manual ipv4.addresses 10.1.8.11/24 ipv4.gateway 10.1.8.2 ipv4.dns 10.1.8.2 autoconnect yes
[root@localhost ~]# nmcli connection up ens33
# 关闭防火墙与SELinux
[root@localhost ~]# systemctl disable firewalld –now
[root@localhost ~]# setenforce 0
步骤 2:VMware 给 iscsi-server 新增 2 块 20G 虚拟硬盘
VMware添加硬盘操作界面
操作步骤图文指引:







步骤 3:服务端安装 iSCSI 服务套件
实验子思路
targetd:iSCSI 存储后台服务;targetcli:交互式命令管理工具,缺一不可。
# yum install -y:yum在线安装,-y自动确认交互
# targetd:iSCSI后台运行服务
# targetcli:存储交互配置工具
[root@iscsi-server ~]# yum install -y targetd targetcli
# systemctl enable –now:设置开机自启,同时立刻启动target服务
[root@iscsi-server ~]# systemctl enable target –now
# firewall-cmd永久放行iSCSI标准3260端口,生产环境必开
[root@iscsi-server ~]# firewall-cmd –permanent –add-service=iscsi-target
# 重载防火墙永久规则生效
[root@iscsi-server ~]# firewall-cmd –reload
步骤 4:交互式 targetcli 完整配置第一块共享盘 disk1
完整操作思路拆解
# 输入targetcli进入交互式配置界面
[root@iscsi-server ~]# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.53
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
# ls:查看当前所有存储配置树,空白代表无资源
/> ls
o- / ....................................................... [...]
o- backstores ............................................ [...]
| o- block ................................ [Storage Objects: 0]
| o- fileio ............................... [Storage Objects: 0]
| o- pscsi ................................ [Storage Objects: 0]
| o- ramdisk .............................. [Storage Objects: 0]
o- iscsi .......................................... [Targets: 0] o- loopback ....................................... [Targets: 0]
# cd切换目录到块存储后端,create创建myblock1绑定/dev/sdb
/> cd /backstores/block
/backstores/block> create myblock1 /dev/sdb
Created block storage object myblock1 using /dev/sdb.
# 切换到iscsi根目录,创建Target全局IQN
/backstores/block> cd /iscsi
/iscsi> create iqn.2026-04.cloud.laogao.iscsi-server:disk1
Created target iqn.2026-04.cloud.laogao.iscsi-server:disk1.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
# 进入tpg1下luns目录,绑定后端存储为LUN0对外共享
/iscsi> cd /iscsi/iqn.2026-04.cloud.laogao.iscsi-server:disk1/tpg1/luns
/iscsi/iqn.20...sk1/tpg1/luns> create /backstores/block/myblock1
Created LUN 0
# 进入acls目录,添加客户端IQN白名单(核心权限控制,缺失登录失败)
/iscsi/iqn.20...sk1/tpg1/luns> cd /iscsi/iqn.2026-04.cloud.laogao.iscsi-server:disk1/tpg1/acls
/iscsi/iqn.20...sk1/acls> create iqn.2026-04.cloud.laogao.iscsi-client
Created Node ACL for iqn.2026-04.cloud.laogao.iscsi-client
Created mapped LUN 0.
# 修改Portal,删除默认0.0.0.0全网监听,只监听本机内网IP
/iscsi/iqn.20...sk1/acls> cd /iscsi/iqn.2026-04.cloud.laogao.iscsi-server:disk1/tpg1/portals
/iscsi/iqn.20.../tpg1/portals> delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260
# 创建指定IP的Portal门户
/iscsi/iqn.20.../tpg1/portals> create 10.1.8.10 3260
Using default IP port 3260
Created network portal 10.1.8.10:3260.
# exit退出交互界面,auto_save自动保存配置到/etc/target/saveconfig.json
/iscsi/iqn.20.../tpg1/portals> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json
⚠️小白最高频踩坑:忘记创建ACL客户端白名单,客户端执行iscsiadm -l登录直接报initiator authorization failure认证失败!
步骤 5:命令行模式创建第二块共享磁盘 disk2(无需进入交互 shell)
子思路
交互式适合新手熟悉层级,命令行适合批量自动化部署,每条命令一次性执行无需切换目录。
# 创建第二块后端存储myblock2,绑定/dev/sdc
[root@iscsi-server ~]# targetcli /backstores/block create myblock2 /dev/sdc
Created block storage object myblock2 using /dev/sdc.
# 创建disk2对应的Target IQN
[root@iscsi-server ~]# targetcli /iscsi create iqn.2026-04.cloud.laogao.iscsi-server:disk2
Created target iqn.2026-04.cloud.laogao.iscsi-server:disk2.
Created TPG 1.
Default portal not created, TPGs within a target cannot share ip:port.
# 绑定LUN0,关联myblock2硬盘
[root@iscsi-server ~]# targetcli /iscsi/iqn.2026-04.cloud.laogao.iscsi-server:disk2/tpg1/luns create /backstores/block/myblock2
Created LUN 0.
# 添加客户端IQN白名单ACL
[root@iscsi-server ~]# targetcli /iscsi/iqn.2026-04.cloud.laogao.iscsi-server:disk2/tpg1/acls create iqn.2026-04.cloud.laogao.iscsi-client
Created Node ACL for iqn.2026-04.cloud.laogao.iscsi-client
Created mapped LUN 0.
# 删除默认全网Portal,指定10.1.8.10监听
[root@iscsi-server ~]# targetcli /iscsi/iqn.2026-04.cloud.laogao.iscsi-server:disk2/tpg1/portals delete 0.0.0.0 3260
No such NetworkPortal in configfs: /sys/kernel/config/target/iscsi/iqn.2026-04.cloud.laogao.iscsi-server:disk2/tpgt_1/np/0.0.0.0:3260
[root@iscsi-server ~]# targetcli /iscsi/iqn.2026-04.cloud.laogao.iscsi-server:disk2/tpg1/portals create 10.1.8.10 3260
Using default IP port 3260
Created network portal 10.1.8.10:3260.
# 手动保存全部配置(命令行模式不会自动保存,必须执行saveconfig)
[root@iscsi-server ~]# targetcli saveconfig
Last 10 configs saved in /etc/target/backup/.
Configuration saved to /etc/target/saveconfig.json
第三部分 实验二:iSCSI Initiator 客户端挂载远端存储
实验目的🤔
线上运维作用⚠️
业务服务器对接集中式共享存储,扩容硬盘无需新增物理设备,线上数据库、文件服务器高频使用。
完整实验操作思路
步骤 1:客户端安装工具 + 查看本机 IQN
# yum安装iSCSI客户端全套工具包
[root@iscsi-client ~]# yum install -y iscsi-initiator-utils
# cat查看本机唯一Initiator IQN,复制发给服务端配置ACL白名单
[root@iscsi-client ~]# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2026-04.cloud.laogao.iscsi-client
# 如需修改IQN,vim编辑该文件,修改后重启iscsid服务生效
[root@iscsi-client ~]# vim /etc/iscsi/initiatorname.iscsi
# 重启客户端后台服务
[root@iscsi-client ~]# systemctl restart iscsid
# 设置iscsi开机自启,重启自动登录存储
[root@iscsi-client ~]# systemctl enable iscsi
步骤 2:发现服务端存储 Target 资源
命令参数详解
iscsiadm -m discovery -t st -p IP
- -m discovery:进入存储发现模式;
- -t st:标准静态发现模式;
- -p:指定存储服务端 Portal IP。
# 发现10.1.8.10服务端所有共享Target
[root@iscsi-client ~]# iscsiadm -m discovery -t st -p 10.1.8.10
10.1.8.10:3260,1 iqn.2026-04.cloud.laogao.iscsi-server:disk1
10.1.8.10:3260,1 iqn.2026-04.cloud.laogao.iscsi-server:disk2
# 输出两行代表两块共享磁盘,分别复制IQN用于登录
步骤 3:登录远端 iSCSI 磁盘
参数说明
iscsiadm -m node -T TargetIQN -p IP -l
- -m node:进入存储节点管理模式;
- -T:指定要登录的 Target 完整 IQN 名称;
- -p Portal 地址;
- -l login 登录操作。
# 登录disk1共享存储
[root@iscsi-client ~]# iscsiadm -m node -T iqn.2026-04.cloud.laogao.iscsi-server:disk1 -p 10.1.8.10 -l
Logging in to [iface: default, target: iqn.2026-04.cloud.laogao.iscsi-server:disk1, portal: 10.1.8.10,3260] (multiple)
Login to [iface: default, target: iqn.2026-04.cloud.laogao.iscsi-server:disk1, portal: 10.1.8.10] successful.
# 登录成功提示successful,失败则ACL/防火墙/CHAP问题
# lsblk查看内核识别远端磁盘/dev/sdb
[root@iscsi-client ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 199G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 7.9G 0 lvm [SWAP]
└─centos-home 253:2 0 141.1G 0 lvm /home
sdb 8:16 0 20G 0 disk
# sdb即为iSCSI远端共享裸盘,无分区无文件系统
# 查看完整登录会话详细信息(-P3打印完整详情)
[root@iscsi-client ~]# iscsiadm -m session -P 3
步骤 4:格式化远端磁盘 + 临时挂载测试
子思路
远端裸盘无文件系统,必须 mkfs 格式化才能读写,XFS 是 CentOS7 默认文件系统。
# mkfs.xfs 格式化/dev/sdb远端磁盘
[root@iscsi-client ~]# mkfs.xfs /dev/sdb
meta-data=/dev/sdb isize=512 agcount=4, agsize=1310720 blks
sectsz=512 attr=2, projid32bit=1
crc=1 finobt=0, sparse=0
data bsize=4096 blocks=5242880, imaxpct=25
sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
sectsz=512 sunit=0 blks, lazy-count=1
realtime = extsz=4096 blocks=0, rtextents=0
# blkid获取磁盘唯一UUID,永久挂载必须用UUID(设备名会变动)
[root@iscsi-client ~]# blkid
/dev/sdb: UUID="0461e240-7743-47fe-876b-6df8b8e7ebf8" TYPE="xfs"
# 创建挂载目录/sdb
[root@iscsi-client ~]# mkdir /sdb
# 临时挂载,重启失效
[root@iscsi-client ~]# mount /dev/sdb /sdb
# 写入测试文件验证读写正常
[root@iscsi-client ~]# echo test-iscsi > /sdb/test.txt
[root@iscsi-client ~]# cat /sdb/test.txt
test-iscsi
步骤 5:/etc/fstab 永久开机挂载(避坑重点)
🚨致命坑:iSCSI属于网络磁盘,fstab必须添加_netdev参数,告诉系统等网卡启动后再挂载,不加直接进紧急模式!
正确fstab配置写法
# 编辑开机自动挂载文件
[root@iscsi-client ~]# vim /etc/fstab
# 填入该行,UUID替换为blkid查询到的磁盘
ID UUID="0461e240-7743-47fe-876b-6df8b8e7ebf8" /sdb xfs defaults,netdev 0 0
# 字段逐词解释:
# UUID:磁盘唯一标识,不受设备名/dev/sdb变动影响
# /sdb:本地挂载目录
# xfs:文件系统格式
# defaults,netdev:默认挂载参数+网络磁盘标识(核心)
# 0:dump备份关闭
# 0:开机磁盘自检关闭,存储盘无需自检
# mount -a 测试fstab无挂载报错
[root@iscsi-client ~]# mount -a
# 无输出代表配置正确,重启验证
[root@iscsi-client ~]# reboot
步骤 6:注销磁盘、清理节点(实验收尾操作)
# 先卸载挂载目录,否则无法注销登录
[root@iscsi-client ~]# umount /sdb
# -u 注销当前iSCSI会话
[root@iscsi-client ~]# iscsiadm -m node -T iqn.2026-04.cloud.laogao.iscsi-server:disk1 -p 10.1.8.10 -u
# -o delete 删除本地存储节点记录,重启不会自动登录
[root@iscsi-client ~]# iscsiadm -m node -T iqn.2026-04.cloud.laogao.iscsi-server:disk1 -p 10.1.8.10 -o delete
# 查看本地所有存储节点确认已删除
[root@iscsi-client ~]# iscsiadm -m node
第四部分 实验三:iSCSI 多路径 Multipath 高可用实验
实验目的🤔
生产运维价值⚠️
线上数据库、存储业务不能断网,双网卡冗余是企业存储标准高可用方案,网线 / 网卡损坏自动切换备用链路,零业务停机。
完整实验思路
步骤 1 服务端双 Portal 配置
# 给已有disk1 Target新增第二条Portal 10.1.1.10:3260
[root@iscsi-server ~]# targetcli /iscsi/iqn.2026-04.cloud.laogao.iscsi-server:disk1/tpg1/portals create 10.1.1.10 3260
# 保存配置
[root@iscsi-server ~]# targetcli saveconfig
步骤 2 客户端安装多路径软件
# 安装多路径内核工具包
[root@iscsi-client ~]# yum install -y device-mapper-multipath
# mpathconf生成默认multipath.conf配置文件,启用服务
[root@iscsi-client ~]# mpathconf –enable –with_multipathd y
# 启动并开机自启multipathd后台进程
[root@iscsi-client ~]# systemctl enable multipathd –now
# 双IP重新发现存储
[root@iscsi-client ~]# iscsiadm -m discovery -t st -p 10.1.8.10
[root@iscsi-client ~]# iscsiadm -m discovery -t st -p 10.1.1.10
# 登录两条Portal链路
[root@iscsi-client ~]# iscsiadm -m node -L all
# 查看多路径聚合虚拟设备mpatha
[root@iscsi-client ~]# multipath -ll
mpatha (360014052fc732600aa0433fae1758a1a) dm-3 LIO-ORG ,myblock1
size=20G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active #主链路sdb
| `– 3:0:0:0 sdb 8:16 active ready running
`-+- policy='service-time 0' prio=1 status=enabled #备用链路sdc
`- 4:0:0:0 sdc 8:32 active ready running
# 多路径设备统一挂载/dev/mapper/mpatha,禁止直接挂载sdb/sdc
[root@iscsi-client ~]# mkfs.xfs /dev/mapper/mpatha
[root@iscsi-client ~]# mkdir /mpath-data
[root@iscsi-client ~]# mount /dev/mapper/mpatha /mpath-data
# fstab永久挂载填写/dev/mapper/mpatha + _netdev参数
链路故障切换测试
第五部分 iSCSI 高频报错完整排错指南🚨
1. 登录报错:initiator reported error (24 – authorization failure)
| 服务端 Target ACL 未添加客户端 IQN | targetcli 进入 acls create 客户端 IQN |
| 客户端 /etc/initiatorname.iscsi IQN 修改未重启 iscsid | systemctl restart iscsid,重新 discovery 登录 |
| 开启 CHAP 认证账号密码两端不一致 | 统一 8-16 位密码,重启服务 |
2. fstab 挂载 iSCSI,重启进 emergency 紧急模式
核心根源:缺少_netdev网络磁盘参数,开机先挂载磁盘再启动网卡,找不到远端盘
修复:vim /etc/fstab,挂载项添加,_netdev,执行 mount -a 验证无报错再重启。
3. 无法发现 Target,telnet 3260 不通
服务端防火墙未放行 iscsi-target 服务;
两台虚拟机不在同一网段,网关不通;
放行端口命令:
[root@iscsi-server ~]# firewall-cmd –add-service=iscsi-target –permanent
[root@iscsi-server ~]# firewall-cmd –reload
4. multipath 识别不到双路径
文末总结💬
互动提问💬:搭建 iSCSI 踩过什么奇葩报错?内网存储用单路径还是多路径?评论区交流排坑经验!


