文章目录
- iSCSI服务器
iSCSI服务器
iSCSI服务介绍
SCSI(Small Computer System Interface,小型计算机系统接口),一种用于计算机和智能设备之间 (硬盘、软驱、光驱、打印机、扫描仪等)连接标准。
iSCSI(Internet Small Computer System Interface,Internet 小型计算机系统接口),又称为IP SAN, 是IBM公司研究开发的IP SAN技术,该技术是将现有SCSI接口与以太网络(Ethernet)技术结合,基于 TCP/IP的协议连接iSCSI服务端(Target)和客户端(Initiator),使得封装后的SCSI数据包可以在互联网传 输,最终实现iSCSI服务端提供存储给客户端。
从物理服务器到存储的电缆通常封闭在数据中心内,并且理想情况下不直接连接到LAN网络,所以SAN流 量通常不加密,以最大程度地提高性能。 为了实现WAN安全,iSCSI管理员可以使用IPsec加密流量。
iSCSI架构
iSCSI服务是C/S架构。访问的iSCSI目标在客户端系统上显示为本地且未格式化的SCSI快设备,等同于通 过SCSI布线、FC直连或FC交换光线连接的设备。

-
Initiator ,iSCSI客户端,通常以软件方式部署,也可以使用iSCSI Host Bus Adapters (HBAs) (HBA)硬件。Initiator必须具有唯一的名称(请参见IQN)。
-
Target,iSCSI服务器上的iSCSI存储资源。 Target必须具有唯一的名称(请参见IQN)。 每个目标 都提供一个或多个块设备或逻辑单元(LUN-logical units)。 在大多数情况下,Target只提供一个 设备,但一台服务器可以提供多个目标。
-
IQN(iSCSI Qualified Name)全球唯一的名称,用于标识发起者和目标。 IQN具有以下格式:
bashiqn.YYYY-MM.com.reversed.domain:name_string- YYYY-MM ,年和月。示例,2020年6月为2020-06。该日期有助于确保IQN唯一性。
- com.reversed.domain,反向域名。 例如, storage.laogao.cloud 的反向域名为 cloud.laogao.storage 。
- name_string,用于标识您管理的特定目标。 如果服务器只具有一个目标,则有时会省略此 名称。
-
Portal,指定服务器监听的地址和端口,例如,172.25.250.50:3260。
-
LUN (Logical Unit Number),代表Target 提供的块设备。 每个目标可以提供一个或多个LUN。
-
ACL (Access Control List),使用Initiator 的IQN限制客户端访问Target。
-
TPG (Target Portal Group),是目标的完整配置,包括Portal ,LUN和ACL 。 几乎所有目标都使 用一个TPG ,但是高级配置有时可能会定义多个TPG。
-
discovery ,查询服务器上有Target列表。
-
login ,向Target 验证,验证通过后即可以使用Target服务器提供的块设备。
配置iSCSI Targets
节点规划
| 节点名称 | 节点 IP | 作用 |
|---|---|---|
| iscsi-server(增加 2 块 20G SCSI 磁盘) | 10.1.8.10/24 | iSCSI Target(存储服务端) |
| iscsi-client | 10.1.8.11/24 | iSCSI Initiator(存储客户端) |
使用centos7模板克隆出iscsi-server,iscsi-client
iscsi-server:
bash
[cyw@server ~ 13:59:30]$ sudo -i
[sudo] cyw 的密码:
[root@server ~ 13:59:42]# hostnamectl set-hostname iscsi-server
[root@server ~ 14:00:24]# bash
[root@iscsi-server ~ 14:00:26]# 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
[root@iscsi-server ~ 14:01:50]# nmcli connection up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
[root@iscsi-server ~ 14:12:12]# setenforce 0
iscsi-client:
bash
[cyw@server ~ 13:59:49]$ sudo -i
[sudo] cyw 的密码:
[root@server ~ 13:59:57]# hostnamectl set-hostname iscsi-client
[root@server ~ 14:07:13]# bash
[root@iscsi-client ~ 14:07:17]# 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@iscsi-client ~ 14:09:13]# nmcli connection up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
[root@iscsi-client ~ 14:09:22]# setenforce 0
[root@iscsi-client ~ 14:09:39]# systemctl disable firewalld --now
配置流程

配置iscsi-server
配置 iSCSI Targets需要安装以下软件:
- targetd,服务端软件。
- targetcli,targetd服务配置工具。
bash
# 安装软件
[root@iscsi-server ~ 14:15:39]# yum install -y targetd targetcli
# 启用并启动服务
[root@iscsi-server ~ 14:17:24]# systemctl enable target --now
Created symlink from /etc/systemd/system/multi-user.target.wants/target.service to /usr/lib/systemd/system/target.service.
# 配置防火墙
[root@iscsi-server ~ 14:33:59]# firewall-cmd --add-service=iscsi-target --permanent
success
[root@iscsi-server ~ 14:34:04]# firewall-cmd --reload
success
当不带任何选项运行targetcli时,该命令将进入交互模式。
在以下示例中,使用ls命令显示当前布局。
bash
[root@iscsi-server ~ 14:34:20]# 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
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
配置 backstore 对象
backstore类型:
- block:服务器中的块设备,例如磁盘驱动器,磁盘分区或逻辑卷。
- fileio:本地文件系统中的常规文件。
- targetcli将该文件用作磁盘映像。
- pscsi:物理SCSI设备。 这种类型的存储允许客户端通过网络访问服务器上的物理SCSI设备。
- ramdisk:内存中的磁盘设备。 这种类型的存储不会持久存储数据。 服务器重新启动后,数据将丢 失。
要使用targetcli创建后备存储,请使用其create命令。 该命令的行为取决于您在配置树中的当前位置。示例:
先进目录,再create(最常用、最简单)
bash
/> cd /backstores/block
/backstores/block> create myblock1 /dev/sdb
Created block storage object myblock1 using /dev/sdb.
等同于full path写法(必须带 /)
bash
/> /backstores/block create myblock1 /dev/sdb
Created block storage object myblock1 using /dev/sdb.
配置 Target IQN
在/iscsi伪目录中,创建IQN,将选择的IQN名称作为其第一个参数。
bash
/backstores/block> cd /iscsi
/iscsi> create iqn.2026-08.cloud.cyw.iscsi-server:disk1
Created target iqn.2026-08.cloud.cyw.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.
/iscsi> ls
o- iscsi ............................................... [Targets: 1]
o- iqn.2026-08.cloud.cyw.iscsi-server:disk1 .............. [TPGs: 1]
o- tpg1 ................................... [no-gen-acls, no-auth]
o- acls .............................................. [ACLs: 0]
o- luns .............................................. [LUNs: 0]
o- portals ........................................ [Portals: 1]
o- 0.0.0.0:3260 ......................................... [OK]
-
iscsi 根目录 Targets:1
当前一共创建了 1 个 iSCSI 目标(Target)
-
iqn.2026-04.cloud.laogao.iscsi-server:disk1
iSCSI Target 唯一标识(IQN 名称)
客户端存储发现、连接时,需要填写这一串名称。
-
tpg1(Target Portal Group,目标门户组)
一个 Target 可以有多个 TPG 组,这里只有 tpg1。
标记:
[no-gen-acls, no-auth]no-gen-acls:不会自动生成 ACL 访问策略,必须手动添加客户端白名单no-auth:未开启 CHAP 账号密码认证
-
acls ACLs: 0
ACL = 客户端 IQN 白名单(访问控制列表)
ACLs:0 → 还没有添加允许接入的客户端
规则:默认拒绝所有客户端,不添加白名单就算客户端能连通 3260 端口也登录失败。
-
luns LUNs: 0 【重点】
LUN 作用:将后端磁盘 backstores 映射给这个 Target 对外共享
LUNs:0 → 没有把硬盘 / 分区挂载进来!
哪怕客户端成功登录 target,看不到任何共享磁盘。
对应流程:创建 Target 之后,绑定 LUN 这一步尚未执行。
-
portals Portals:1
Portal = 监听地址+端口(对外访问入口)
0.0.0.0:3260- 0.0.0.0:服务器本机所有网卡监听
- 3260:iSCSI 标准端口
- OK:监听正常,端口已就绪
-
✅当前状态总结
✅ Target (iqn名称)已创建
✅ Portal监听0.0.0.0:3260正常
-
❌ 缺少两大核心配置
1.未绑定LUN: 没有关联后端硬盘
2.未配置ACL: 没有放行客户端
配置 LUN
bash
# 把提前做好的后端存储 myblock1(也就是/dev/sdb)绑定成LUN,对外共享
/iscsi> cd /iscsi/iqn.2026-08.cloud.cyw.iscsi-server:disk1/tpg1/luns
/iscsi/iqn.20...sk1/tpg1/luns> create /backstores/block/myblock1
Created LUN 0.
/iscsi/iqn.20.
配置 ACL
创建ACL,以允许客户端启动程序访问目标。在Red Hat Enterprise Linux上,启动器的IQN存储 在/etc/iscsi/initiatorname.iscsi文件中。
bash
/iscsi/iqn.20...sk1/tpg1/luns> cd /iscsi/iqn.2026-08.cloud.cyw.iscsi-server:disk1/tpg1/acls
/iscsi/iqn.20...sk1/tpg1/acls> create iqn.2026-08.cloud.cyw.iscsi-client
Created Node ACL for iqn.2026-08.cloud.cyw.iscsi-client
Created mapped LUN 0.
配置 Portal
删除默认:0.0.0.0:3260 (随便本机哪个IP都能连)
新建指定:10.1.8.10:3260(只允许通过本机10.1.8.10这个网卡连接iscsi共享)
bash
/iscsi/iqn.20...sk1/tpg1/acls> cd /iscsi/iqn.2026-08.cloud.cyw.iscsi-server:disk1/tpg1/portals/
/iscsi/iqn.20.../tpg1/portals> delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260
/iscsi/iqn.20.../tpg1/portals> create 10.1.8.10 3260
Using default IP port 3260
Created network portal 10.1.8.10:3260.
查看
bash
/iscsi/iqn.20.../tpg1/portals> cd /
/> ls
o- / .......................................................... [...]
o- backstores ............................................... [...]
| o- block ................................... [Storage Objects: 1]
| | o- myblock1 ......... [/dev/sdb (20.0GiB) write-thru activated]
| | o- alua .................................... [ALUA Groups: 1]
| | o- default_tg_pt_gp ........ [ALUA state: Active/optimized]
| o- fileio .................................. [Storage Objects: 0]
| o- pscsi ................................... [Storage Objects: 0]
| o- ramdisk ................................. [Storage Objects: 0]
o- iscsi ............................................. [Targets: 1]
| o- iqn.2026-08.cloud.cyw.iscsi-server:disk1 ........... [TPGs: 1]
| o- tpg1 ................................ [no-gen-acls, no-auth]
| o- acls ........................................... [ACLs: 1]
| | o- iqn.2026-08.cloud.cyw.iscsi-client .... [Mapped LUNs: 1]
| | o- mapped_lun0 ............... [lun0 block/myblock1 (rw)]
| o- luns ........................................... [LUNs: 1]
| | o- lun0 .... [block/myblock1 (/dev/sdb) (default_tg_pt_gp)]
| o- portals ..................................... [Portals: 1]
| o- 10.1.8.10:3260 .................................... [OK]
o- loopback .......................................... [Targets: 0
保存配置
退出targetcli shell时,该命令将配置保存在/etc/target/saveconfig.json文件中。
bash
/iscsi/iqn.20.../tpg1/portals> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json
非交互式管理 Targets
bash
# 创建块后端存储,关联磁盘/dev/sdc,命名myblock2
[root@iscsi-server ~ 15:08:48]# targetcli /backstores/block create myblock2 /dev/sdc
Created block storage object myblock2 using /dev/sdc.
# 创建iSCSI目标,定义目标IQN名称
[root@iscsi-server ~ 15:09:25]# targetcli /iscsi create iqn.2026-08.cloud.cyw.iscsi-server:disk2
Created target iqn.2026-08.cloud.cyw.iscsi-server:disk2.
Created TPG 1.
Default portal not created, TPGs within a target cannot share ip:port.
# 在TPG1中创建LUN,绑定后端块存储myblock2
[root@iscsi-server ~ 15:12:18]# targetcli /iscsi/iqn.2026-08.cloud.cyw.iscsi-server:disk2/tpg1/luns create /backstores/block/myblock2
Created LUN 0.
# 创建访问ACL,允许指定IQN的客户端接入存储
[root@iscsi-server ~ 15:17:12]# targetcli /iscsi/iqn.2026-08.cloud.cyw.iscsi-server:disk2/tpg1/acls create iqn.2026-08.cloud.cyw.iscsi-client
Created Node ACL for iqn.2026-08.cloud.cyw.iscsi-client
Created mapped LUN 0.
# 删除默认0.0.0.0:3260监听端口(此处原配置不存在,执行报错)
[root@iscsi-server ~ 15:17:58]# targetcli /iscsi/iqn.2026-08.cloud.cyw.iscsi-server:disk2/tpg1/portals delete 0.0.0.0 3260
No such NetworkPortal in configfs: /sys/kernel/config/target/iscsi/iqn.2026-08.cloud.cyw.iscsi-server:disk2/tpgt_1/np/0.0.0.0:3260
# 创建Portal,指定服务器业务IP 10.1.8.10:3260对外提供iSCSI服务
[root@iscsi-server ~ 15:19:32]# targetcli /iscsi/iqn.2026-08.cloud.cyw.iscsi-server:disk2/tpg1/portals create 10.1.8.10 3260
Using default IP port 3260
Created network portal 10.1.8.10:3260.
# 持久保存targetcli全部配置(重启生效)
[root@iscsi-server ~ 15:21:08]# targetcli saveconfig
Configuration saved to /etc/target/saveconfig.json
查看
bash
# 进入targetcli交互式管理终端
[root@iscsi-server ~ 15:21:35]# targetcli
targetcli shell version 2.1.53
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
# 查看完整iSCSI后端存储与目标树形结构
/> ls
o- / ................................................. [...]
o- backstores ...................................... [...]
| o- block .......................... [Storage Objects: 2]
| | o- myblock1 [/dev/sdb (20.0GiB) write-thru activated]
| | | o- alua ........................... [ALUA Groups: 1]
| | | o- default_tg_pt_gp [ALUA state: Active/optimized]
| | o- myblock2 [/dev/sdc (20.0GiB) write-thru activated]
| | o- alua ........................... [ALUA Groups: 1]
| | o- default_tg_pt_gp [ALUA state: Active/optimized]
| o- fileio ......................... [Storage Objects: 0]
| o- pscsi .......................... [Storage Objects: 0]
| o- ramdisk ........................ [Storage Objects: 0]
o- iscsi .................................... [Targets: 2]
| o- iqn.2026-08.cloud.cyw.iscsi-server:disk1 .. [TPGs: 1]
| | o- tpg1 ....................... [no-gen-acls, no-auth]
| | o- acls .................................. [ACLs: 1]
| | | o- iqn.2026-08.cloud.cyw.iscsi-client [Mapped LUNs: 1]
| | | o- mapped_lun0 ...... [lun0 block/myblock1 (rw)]
| | o- luns .................................. [LUNs: 1]
| | | o- lun0 [block/myblock1 (/dev/sdb) (default_tg_pt_gp)]
| | o- portals ............................ [Portals: 1]
| | o- 10.1.8.10:3260 ........................... [OK]
| o- iqn.2026-08.cloud.cyw.iscsi-server:disk2 .. [TPGs: 1]
| o- tpg1 ....................... [no-gen-acls, no-auth]
| o- acls .................................. [ACLs: 1]
| | o- iqn.2026-08.cloud.cyw.iscsi-client [Mapped LUNs: 1]
| | o- mapped_lun0 ...... [lun0 block/myblock2 (rw)]
| o- luns .................................. [LUNs: 1]
| | o- lun0 [block/myblock2 (/dev/sdc) (default_tg_pt_gp)]
| o- portals ............................ [Portals: 1]
| o- 10.1.8.10:3260 ........................... [OK]
o- loopback ................................. [Targets: 0]
提示:与交互式使用targetcli不同,命令行模式必须显式运行saveconfig子命令以保存配置。
访问 iSCSI 存储
iSCSI 启动器通常以软件方式实现。 使用基于软件的iSCSI启动器需要连接到具有足够带宽的现有以太网 网络,以承载存储流量。
也可以使用硬件启动器-主机总线适配器(HBA),从而减轻了其他系统资源的负担。
准备系统
配置iSCSI客户端启动程序需要安装iscsi-initiator-utils 软件包,该软件包包括iscsi 和iscsid 服务以 及**/etc/iscsi/iscsid.conf和/etc/iscsi/initiatorname.iscsi**配置文件。
bash
[root@iscsi-client ~ 14:16:02]# yum install -y iscsi-initiator-utils
作为iSCSI启动器,客户端需要其自己的唯一iSCSI合格名称(IQN)。在安装iscsi-initiator-utils的过程 中,该软件包生成唯一的IQN,并存储到/etc/iscsi/initiatorname.iscsi文件中。 管理员通常需要更改该 名称。
bash
[root@iscsi-client ~ 15:25:05]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2026-08.cloud.cyw.iscsi-client
/etc/iscsi/iscsid.conf文件包含连接的目标的默认设置。 这些设置包括iSCSI超时,重试以及用于身份 验证的用户名和密码参数。
软件包安装会自动配置iscsid服务,以便启动器在系统启动时自动重新连接到任何已发现的目标。 每当 修改启动程序的配置文件时,请重新启动iscsid服务。
连接 iSCSI 目标
在使用远程设备之前,首先需要发现目标。 发现过程使用/etc/iscsi/iscsid.conf中的配置将目标信息和设 置存储在/var/lib/iscsi/nodes/目录中。
可以使用以下命令执行远程目标的发现:
bash
# iscsiadm -m discovery -t st -p portal_ip[:port]
参数说明:
- portal_ip参数是目标门户的IP地址。
- 如果未指定port参数,它将使用默认端口3260。
示例:
bash
# iSCSI客户端发现存储服务器上所有可用目标(SendTargets模式)
[root@iscsi-client ~ 15:40:00]# iscsiadm -m discovery -t st -p 10.1.8.10
10.1.8.10:3260,1 iqn.2026-08.cloud.cyw.iscsi-server:disk1
10.1.8.10:3260,1 iqn.2026-08.cloud.cyw.iscsi-server:disk2
#参数说明
# -m discovery:执行发现模式
#-t st:使用 SendTargets 方式发现(最常用)
# -p 10.1.8.10:iSCSI 服务端 IP(默认端口 3260 可省略)
要使用列出的目标之一,可以使用以下命令登录到该目标:
bash
# iscsiadm -m node -T Target -p portal_ip[:port] -l
示例:
bash
# iSCSI客户端登录指定IQN存储目标disk1
[root@iscsi-client ~ 15:41:04]# iscsiadm -m node -T iqn.2026-08.cloud.cyw.iscsi-server:disk1 -l
Logging in to [iface: default, target: iqn.2026-08.cloud.cyw.iscsi-server:disk1, portal: 10.1.8.10,3260] (multiple)
Login to [iface: default, target: iqn.2026-08.cloud.cyw.iscsi-server:disk1, portal: 10.1.8.10,3260] successful.
#参数释义
#-m node:节点操作模式
#-T:指定目标 IQN 名称
#-l:login,执行登录操作
此时,系统将检测到新的SCSI块设备,就好像它是本地连接的硬盘驱动器一样。 可以使用以下命令查 看新设备,该命令以打印级别3显示有关当前iSCSI登录会话的信息。
bash
# 查看系统块设备,确认iSCSI远程磁盘识别情况
[root@iscsi-client ~ 15:42:34]# 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 3.9G 0 lvm [SWAP]
└─centos-home 253:2 0 145.1G 0 lvm /home
sdb 8:16 0 20G 0 disk
sr0 11:0 1 4.4G 0 rom /run/media/cyw/CentOS 7 x86_64
# 查看iSCSI会话详细信息(-P 3 输出完整级别详情)
[root@iscsi-client ~ 15:43:37]# iscsiadm -m session -P 3
iSCSI Transport Class version 2.0-870
version 6.2.0.874-22
Target: iqn.2026-08.cloud.cyw.iscsi-server:disk1 (non-flash)
Current Portal: 10.1.8.10:3260,1(当前门户地址)
Persistent Portal: 10.1.8.10:3260,1(持久门户地址)
**********
Interface:(接口信息)
**********
Iface Name: default(网卡接口名称)
Iface Transport: tcp(传输协议)
Iface Initiatorname: iqn.2026-08.cloud.cyw.iscsi-client(客户端启动器IQN名称)
Iface IPaddress: 10.1.8.11(客户端IP地址)
Iface HWaddress: <empty>(硬件地址)
Iface Netdev: <empty>(网络设备)
SID: 1(会话ID)
iSCSI Connection State: LOGGED IN(iSCSI连接状态:已登录)
iSCSI Session State: LOGGED_IN(iSCSI会话状态:已登录)
Internal iscsid Session State: NO CHANGE(内部守护进程会话状态:无变动)
*********
Timeouts:(超时参数)
*********
Recovery Timeout: 120(故障恢复超时时间)
Target Reset Timeout: 30(目标重置超时时间)
LUN Reset Timeout: 30(LUN重置超时时间)
Abort Timeout: 15(命令终止超时时间)
*****
CHAP:(CHAP认证信息)
*****
username: <empty>(认证用户名)
password: ********(认证密码)
username_in: <empty>(入方向用户名)
password_in: ********(入方向密码)
************************
Negotiated iSCSI params:(协商完成的iSCSI参数)
************************
HeaderDigest: None(头部摘要校验)
DataDigest: None(数据摘要校验)
MaxRecvDataSegmentLength: 262144(最大接收数据段长度)
MaxXmitDataSegmentLength: 262144(最大发送数据段长度)
FirstBurstLength: 65536(首次突发数据长度)
MaxBurstLength: 262144(最大突发数据长度)
ImmediateData: Yes(启用即时数据)
InitialR2T: Yes(启用初始R2T机制)
MaxOutstandingR2T: 1(最大未完成R2T数量)
************************
Attached SCSI devices:(已挂载SCSI设备)
************************
Host Number: 3 State: running(SCSI主机编号,运行状态)
scsi3 Channel 00 Id 0 Lun: 0(通道、设备ID、LUN编号)
Attached scsi disk sdb State: running(映射系统磁盘/dev/sdb,运行状态)
#lsblk 输出:远程 iSCSI 存储映射为 sdb(20G);
#Target: iqn.2026-08.cloud.cyw.iscsi-server:disk1(连接的 iSCSI 目标 IQN);
#Current Portal:10.1.8.10:3260(存储服务端监听地址端口);
#Iface Initiatorname:iqn.2026-08.cloud.cyw.iscsi-client(客户端 IQN,服务端 ACL 放行依据);-client,客户端 IP 10.1.8.11;
#iSCSI Session State: LOGGED_IN(会话登录正常);
#Attached scsi disk sdb(远程 LUN 对应本地块设备 /dev/sdb)。
或者,可以查看dmesg,tail /var/log/messages或ls -l /dev/disk/by-path/iscsi命令的 输出。 该登录过程在重新启动后将保持不变。 因此,启动后块设备将自动可用。
格式化 iSCSI 设备
如果发现的块设备已经具有分区,文件系统或LVM卷,则可以使用常规命令(如mount)访问该数据。 可以使用lsblk --fs命令检查设备。
bash
# 查看系统中所有块设备的UUID、文件系统类型等信息
[root@iscsi-client ~ 15:44:18]# blkid
/dev/sda1: UUID="06075201-4e8c-4b87-872a-5a3509d9800f" TYPE="xfs"
/dev/sda2: UUID="2zipkd-x0GR-pVyH-DFwa-Adwe-2riU-910T08" TYPE="LVM2_member"
/dev/sr0: UUID="2022-07-26-15-09-17-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/centos-root: UUID="523e8fef-2cf2-4efe-90f1-58c7c201a169" TYPE="xfs"
/dev/mapper/centos-swap: UUID="554ff511-fc15-4c8f-b6c2-d3f8bc76f6e6" TYPE="swap"
/dev/mapper/centos-home: UUID="02673dc7-31b5-4fc5-8587-9a178b98f76b" TYPE="xfs"
关键信息解读
/dev/sda1:UUID="06075201-4e8c-4b87-872a-5a3509d9800f"(分区唯一标识),TYPE="xfs"(文件系统类型 xfs,系统 boot 分区)/dev/sda2:UUID="2zipkd-x0GR-pVyH-DFwa-Adwe-2riU-910T08"(分区唯一标识),TYPE="LVM2_member"(LVM 物理卷成员)/dev/sr0:UUID="2022-07-26-15-09-17-00"(光盘唯一标识),LABEL="CentOS 7 x86_64"(光盘标签),TYPE="iso9660"(光盘文件系统)/dev/mapper/centos-root:UUID="523e8fef-2cf2-4efe-90f1-58c7c201a169"(逻辑卷唯一标识),TYPE="xfs"(根分区文件系统)/dev/mapper/centos-swap:UUID="554ff511-fc15-4c8f-b6c2-d3f8bc76f6e6"(交换分区唯一标识),TYPE="swap"(交换分区)/dev/mapper/centos-home:UUID="02673dc7-31b5-4fc5-8587-9a178b98f76b"(home 逻辑卷唯一标识),TYPE="xfs"(home 分区文件系统)
现象说明:此时还未对 /dev/sdb 进行格式化,因此 blkid 没有输出 /dev/sdb 记录;执行 mkfs 格式化远程磁盘后,再次 blkid 就能看到 sdb 的 UUID。
多个启动程序同时从同一目标安装同一文件系统,会导致文件系统损坏或尝试读取数据时出现不一致。
本地文件系统(例如ext4或XFS)不支持从多个系统并发安装。如果需要允许从多个系统同时访问基于 iSCSI的块设备,请使用群集文件系统(例如GFS2)。
如果磁盘为空,则可以对其进行格式化,创建分区或将其用作LVM物理卷。
bash
# 假设客户端发现的设备名称是/dev/sdb
[root@iscsi-client ~ 15:44:56]# 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 =none extsz=4096 blocks=0, rtextents=0
[root@iscsi-client ~ 15:45:27]# blkid
/dev/sda1: UUID="06075201-4e8c-4b87-872a-5a3509d9800f" TYPE="xfs"
/dev/sda2: UUID="2zipkd-x0GR-pVyH-DFwa-Adwe-2riU-910T08" TYPE="LVM2_member"
/dev/sr0: UUID="2022-07-26-15-09-17-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/centos-root: UUID="523e8fef-2cf2-4efe-90f1-58c7c201a169" TYPE="xfs"
/dev/mapper/centos-swap: UUID="554ff511-fc15-4c8f-b6c2-d3f8bc76f6e6" TYPE="swap"
/dev/mapper/centos-home: UUID="02673dc7-31b5-4fc5-8587-9a178b98f76b" TYPE="xfs"
/dev/sdb: UUID="91b3fb58-26fb-4b1a-9588-9506d677cc06" TYPE="xfs"
# 挂载测试
[root@iscsi-client ~ 15:44:56]# 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 =none extsz=4096 blocks=0, rtextents=0
[root@iscsi-client ~ 15:45:27]# blkid
/dev/sda1: UUID="06075201-4e8c-4b87-872a-5a3509d9800f" TYPE="xfs"
/dev/sda2: UUID="2zipkd-x0GR-pVyH-DFwa-Adwe-2riU-910T08" TYPE="LVM2_member"
/dev/sr0: UUID="2022-07-26-15-09-17-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/centos-root: UUID="523e8fef-2cf2-4efe-90f1-58c7c201a169" TYPE="xfs"
/dev/mapper/centos-swap: UUID="554ff511-fc15-4c8f-b6c2-d3f8bc76f6e6" TYPE="swap"
/dev/mapper/centos-home: UUID="02673dc7-31b5-4fc5-8587-9a178b98f76b" TYPE="xfs"
/dev/sdb: UUID="91b3fb58-26fb-4b1a-9588-9506d677cc06" TYPE="xfs"
[root@iscsi-client ~ 15:45:52]# mkdir /sdb
[root@iscsi-client ~ 15:46:18]# mount /dev/sdb /sdb
[root@iscsi-client ~ 15:46:31]# echo xixihaha > /sdb/test
[root@iscsi-client ~ 15:46:52]# cat /sdb/test
xixihaha
[root@iscsi-client ~ 15:46:58]# 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 3.9G 0 lvm [SWAP]
└─centos-home 253:2 0 145.1G 0 lvm /home
sdb 8:16 0 20G 0 disk /sdb
sr0 11:0 1 4.4G 0 rom /run/media/cyw/CentOS 7 x86_64
持久化挂载
在/etc/fstab中的iSCSI目标上持久地挂载文件系统时,请确保遵循以下建议:
- 使用文件系统UUID挂载。 不要使用设备名称( /dev/sd* )。 设备的名称取决于 iSCSI 设备通过 网络响应的顺序,因此设备名称可能会在引导之后更改。如果在 /etc/fstab 中使用设备名称,则系 统可能会将设备挂载在错误的挂载点下。
- 在/etc/fstab中使用**_netdev**挂载选项。 因为iSCSI依赖网络访问远程设备,所以此选项可确保在网 络和启动器启动之前,系统不会尝试挂载文件系统。
示例:
bash
[root@iscsi-client ~ 15:48:03]# vim /etc/fstab
UUID="91b3fb58-26fb-4b1a-9588-9506d677cc06" /sdb xfs defaults,_netdev 0 0
还需要确保服务iscsi开机自动启动,该服务默认是开机自动启动的。
bash
[root@iscsi-client ~ 15:49:39]# systemctl enable iscsi
重启观察现象
bash
[root@iscsi-client ~ 15:50:21]# reboot
[root@iscsi-client ~ 15:52:41]# 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 3.9G 0 lvm [SWAP]
└─centos-home 253:2 0 145.1G 0 lvm /home
sdb 8:16 0 20G 0 disk /sdb
sdc 8:32 0 20G 0 disk
sr0 11:0 1 4.4G 0 rom /run/media/cyw/CentOS 7 x86_64
断开目标连接
要停止使用iSCSI目标,请执行以下步骤:
- 确保没有使用目标提供的任何设备。 例如,卸载文件系统。
- 从/etc/fstab等位置删除对目标的所有持久引用。
- 从iSCSI目标注销。
bash
# 卸载iSCSI磁盘挂载目录
[root@iscsi-client ~ 16:04:17]# umount /sdb
# 登出iqn.2026-08.cloud.cyw.iscsi-server:disk1存储目标
[root@iscsi-client ~ 16:25:54]# iscsiadm -m node -T iqn.2026-08.cloud.cyw.iscsi-server:disk1 -p 10.1.8.10:3260 -u
Logging out of session [sid: 1, target: iqn.2026-08.cloud.cyw.iscsi-server:disk1, portal: 10.1.8.10,3260]
Logout of [sid: 1, target: iqn.2026-08.cloud.cyw.iscsi-server:disk1, portal: 10.1.8.10,3260] successful.
# 查看系统块设备,验证disk1会话登出效果
[root@iscsi-client ~ 16:30:21]# 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 3.9G 0 lvm [SWAP]
└─centos-home 253:2 0 145.1G 0 lvm /home
sdc 8:32 0 20G 0 disk
sr0 11:0 1 4.4G 0 rom /run/media/cyw/CentOS 7 x86_64
# 查看当前正在运行的iSCSI会话
[root@iscsi-client ~ 16:33:12]# iscsiadm -m session
tcp: [2] 10.1.8.10:3260,1 iqn.2026-08.cloud.cyw.iscsi-server:disk2 (non-flash)
# 查看本地缓存中所有已发现的iSCSI目标记录
[root@iscsi-client ~ 16:33:29]# iscsiadm -m node
10.1.8.10:3260,1 iqn.2026-08.cloud.cyw.iscsi-server:disk1
10.1.8.10:3260,1 iqn.2026-08.cloud.cyw.iscsi-server:disk2
关键信息解读
umount /sdb:卸载远程磁盘挂载点,登出存储前必须先卸载,防止文件损坏-u(logout):会话登出参数;sid:1(会话 ID);target: iqn.2026-08.cloud.cyw.iscsi-server:disk1(登出的目标 IQN);portal:10.1.8.10,3260(存储服务端地址端口)- lsblk 结果:原先映射 disk1 的 /dev/sdb 消失,仅剩 disk2 对应的 /dev/sdc(20G),证明 disk1 会话已断开
iscsiadm -m session:仅保留 tcp: 2 10.1.8.10:3260,1 iqn.2026-08.cloud.cyw.iscsi-server:disk2(当前存活会话,disk2 仍在线)iscsiadm -m node:展示本地持久缓存,包含 disk1、disk2 两个目标;登出≠删除缓存记录,缓存仍然保留,可以直接重新登录
- 删除 iSCSI目标的本地记录,以使启动器在引导过程中不会自动登录到目标。
bash
# 删除本地缓存中disk1对应的iSCSI目标节点记录
[root@iscsi-client ~ 16:35:47]# iscsiadm -m node -T iqn.2026-08.cloud.cyw.iscsi-server:disk1 -p 10.1.8.10:3260 -o delete
# 查询本地缓存所有iSCSI目标节点
[root@iscsi-client ~ 16:36:02]# iscsiadm -m node
10.1.8.10:3260,1 iqn.2026-08.cloud.cyw.iscsi-server:disk2
关键信息解读
-o delete(执行删除操作);-T iqn.2026-08.cloud.cyw.iscsi-server:disk1(指定待删除目标 IQN);-p 10.1.8.10:3260(指定存储门户地址端口)iscsiadm -m node查询结果:仅剩余10.1.8.10:3260,1 iqn.2026-08.cloud.cyw.iscsi-server:disk2- 效果说明:disk1 节点缓存已被清除;如需再次使用 disk1,需要重新执行
iscsiadm -m discovery发现目标。
区分要点:
-u只是登出会话,节点缓存还在;
-o delete彻底删除本地节点缓存。
故障处理
如果发现成功,但是启动器登录到发现的目标时遇到问题,则该问题很可能与访问控制或身份验证有 关。客户端上的IQN与服务器上的IQN不匹配会导致目标登录失败。
可能是客户端上的启动器IQN不正确引起的,请在客户端的/etc/iscsi/initiatorname.iscsi文件中修复 IQN,然后重新启动iscsid服务以使更改生效。
bash
# 重启 iscsid 服务,加载新的客户端IQN配置
[root@iscsi-client ~ 16:39:15]# systemctl restart iscsid
# SendTargets方式重新发现iSCSI服务端所有目标
[root@iscsi-client ~ 16:40:07]# iscsiadm -m discovery -t st -p 10.1.8.10
10.1.8.10:3260,1 iqn.2026-08.cloud.cyw.iscsi-server:disk1
10.1.8.10:3260,1 iqn.2026-08.cloud.cyw.iscsi-server:disk2
# 使用错误IQN尝试登录disk1存储目标
[root@iscsi-client ~ 16:40:47]# iscsiadm -m node -T iqn.2026-08.cloud.cyw.iscsi-server:disk1 -l
Logging in to [iface: default, target: iqn.2026-08.cloud.cyw.iscsi-server:disk1, portal: 10.1.8.10,3260] (multiple)
iscsiadm: Could not login to [iface: default, target: iqn.2026-08.cloud.cyw.iscsi-server:disk1, portal: 10.1.8.10,3260].
iscsiadm: initiator reported error (24 - iSCSI login failed due to authorization failure)
iscsiadm: Could not log into all portals
#故障解决:恢复客户端正确IQN配置
[root@iscsi-client ~ 16:41:36]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2026-08.cloud.cyw.iscsi-client
# 重启 iscsid 服务,生效正确客户端IQN
[root@iscsi-client ~ 16:42:40]# systemctl restart iscsid
# 重新发现存储目标
[root@iscsi-client ~ 16:42:59]# iscsiadm -m discovery -t st -p 10.1.8.10
10.1.8.10:3260,1 iqn.2026-08.cloud.cyw.iscsi-server:disk1
10.1.8.10:3260,1 iqn.2026-08.cloud.cyw.iscsi-server:disk2
# 使用正确IQN重新登录disk1目标
[root@iscsi-client ~ 16:44:27]# iscsiadm -m node -T iqn.2026-08.cloud.cyw.iscsi-server:disk1 -l
Logging in to [iface: default, target: iqn.2026-08.cloud.cyw.iscsi-server:disk1, portal: 10.1.8.10,3260] (multiple)
Login to [iface: default, target: iqn.2026-08.cloud.cyw.iscsi-server:disk1, portal: 10.1.8.10,3260] successful.
关键信息解读
/etc/iscsi/initiatorname.iscsi(iSCSI 客户端 IQN 配置文件),InitiatorName(客户端启动器名称,服务端 ACL 鉴权唯一标识)systemctl restart iscsid(重启 iSCSI 客户端守护进程,刷新 IQN 配置)authorization failure(授权失败),错误代码 24:客户端 IQN 不在服务端 ACL 允许列表中,拒绝接入- 现象区分:发现目标可以成功,登录被拦截;iSCSI 发现不需要鉴权,建立会话才校验 ACL
- 原理:服务端 ACL 只放行
iqn.2026-08.cloud.cyw.iscsi-client,修改成其他 IQN 直接拒绝登录
总结
iSCSI ACL 基于客户端 IQN 做接入控制;客户端 IQN 必须和服务端 acls 内配置完全一致,否则登录鉴权失败。