硬核实战!CentOS7 iSCSI存储搭建+多路径高可用,生产环境直接复用
标签:#iSCSI #IP-SAN #Linux存储运维 #多路径高可用 #企业存储实战 #CentOS7
导读:在企业数据中心架构中,共享存储是集群服务、业务数据持久化的核心基石。传统FC光纤存储成本高昂、部署复杂,而iSCSI IP-SAN依托通用以太网,低成本、易运维、兼容性极强,成为中小企业、私有云环境的首选块存储方案。
本文从零梳理iSCSI核心原理、架构术语,全程手把手实操服务端部署、客户端挂载、持久化配置、多路径冗余、故障切换,所有命令、配置均可直接复制落地,完美适配测试、生产环境,新手也能一次性吃透!
一、iSCSI 核心原理与技术特性
1.1 SCSI 与 iSCSI 核心区别
SCSI(小型计算机系统接口):传统本地硬件总线协议,专门用于服务器与硬盘、阵列卡、光驱等存储设备的本地高速通信,读写性能稳定,但仅支持本地硬件连接,无法跨网络共享。
iSCSI(Internet 小型计算机系统接口):由IBM研发的IP-SAN技术,核心突破是将本地SCSI读写指令封装为TCP数据包,通过以太网传输,彻底打破本地硬件限制。
简单来说:iSCSI 可以让远端服务器的硬盘,被本地服务器识别为原生裸盘,支持分区、格式化、挂载、LVM等所有磁盘操作,体验与本地硬盘完全一致。
1.2 性能与安全设计
-
性能优化:测试环境可使用千兆网卡,生产环境强制推荐10G及以上专用以太网,降低IO延迟,支撑高并发读写场景。
-
内网传输机制:数据中心内网封闭传输,默认不加密,最大化磁盘读写性能,满足业务吞吐需求。
-
外网安全加固:若需跨公网使用iSCSI存储,可搭配IPsec协议加密传输流量,杜绝数据抓包、篡改、泄露风险。
二、iSCSI 架构与核心运维术语
iSCSI 采用标准C/S(客户端/服务端)架构,角色分工清晰,所有权限管控、磁盘映射、高可用配置,均基于以下架构和术语实现,是运维实操的核心基础。

2.1 两大核心角色
Target(iSCSI 服务端)
存储资源提供者,部署在专用存储服务器上,负责整合本地物理磁盘、分区,对外发布共享存储资源,同时管控客户端接入权限、磁盘映射规则。单台服务端可创建多个Target,实现多组磁盘分组隔离共享。
Initiator(iSCSI 客户端)
存储资源使用者,部署在业务服务器上,分为两种模式:主流软件模式(免费、易部署)、企业高端HBA硬件网卡模式(释放服务器资源)。客户端通过网络发现并认证服务端存储,将远端磁盘映射为本地块设备使用。
2.2 必懂核心术语
IQN(全局唯一设备名称)
iSCSI设备全网唯一身份标识,是服务端识别客户端、配置访问白名单的核心依据,所有服务端Target、客户端Initiator必须配置独立IQN。
标准格式:iqn.YYYY-MM.com.reversed.domain:name_string
| 组成部分 | 格式要求 | 作用说明 |
|---|---|---|
| 前缀固定 | iqn. | iSCSI 限定命名开头,不可修改 |
| 第一段时间 | YYYY-MM | 4 位年份 - 2 位月份,用来保证全局唯一,填写创建 iSCSI 目标的年月即可 |
| 第二段反向域名 | 域名倒序 | 使用自己持有 / 所属域名倒写,防止和互联网其他厂商 IQN 冲突(例如:storage.laofang.cloud 的反向域名为cloud.laofang.storage) |
| 第三段标识 | :name_string | 冒号 + 自定义名称,区分同一服务器上多个不同磁盘目标,单目标可省略 |
实战配置示例:
-
服务端:
iqn.2026-08.cloud.laofang.iscsi-server:disk1 -
客户端:
iqn.2026-08.cloud.laofang.iscsi-client
LUN(逻辑单元)
真正对外提供服务的块设备,后端绑定服务端物理磁盘/分区。一个Target可绑定多个LUN,实现多块独立磁盘共享,是客户端最终识别和使用的存储设备。
ACL(访问控制白名单)
iSCSI核心安全机制,默认拒绝所有客户端连接。仅将客户端IQN加入白名单后,客户端才能认证登录、使用存储资源,有效防止未授权设备接入。
Portal(访问门户)
iSCSI服务对外监听入口,由「IP+3260标准端口」组成,客户端通过该地址扫描、发现并连接远端存储资源。
TPG(目标门户组)
Target的完整配置集合,整合Portal监听端口、LUN磁盘映射、ACL访问权限三大核心配置。常规场景单Target搭配单TPG,高可用多路径场景可配置多TPG实现链路冗余。
三、实验环境规划与初始化
3.1 节点资源规划
基于CentOS7模板克隆两台虚拟机,关闭防火墙、SELinux,保证网络互通;服务端新增2块20G SCSI磁盘作为共享存储。
| 节点名称 | IP地址 | 角色 | 硬件配置 |
|---|---|---|---|
| iscsi-server | 10.1.8.10/24 | iSCSI Target 服务端 | 系统盘+2块20G共享磁盘(/dev/sdb、/dev/sdc) |
| iscsi-client | 10.1.8.11/24 | iSCSI Initiator 客户端 | 默认系统盘,无额外磁盘 |
3.2 全局环境初始化(所有节点执行)
服务端初始化配置
# 修改主机名
hostnamectl set-hostname iscsi-server
# 配置静态IP
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 ens33
# 关闭防火墙与SELinux(测试环境)
systemctl disable firewalld --now
setenforce 0
客户端初始化配置
# 修改主机名
hostnamectl set-hostname iscsi-client
# 配置静态IP
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
nmcli connection up ens33
# 关闭防火墙与SELinux(测试环境)
systemctl disable firewalld --now
setenforce 0
四、iSCSI Target 服务端完整部署
4.1 安装核心依赖服务
iSCSI服务端依托 targetd 服务运行,通过targetcli 交互式工具完成所有配置。
# 安装服务端核心软件
[root@iscsi-server ~ 23:26:10]# yum -y install targetd targetcli
# 设置开机自启并立即启动服务
[root@iscsi-server ~ 23:32:21]# systemctl enable target --now
# 生产环境放行iSCSI端口防火墙规则
[root@iscsi-server ~ 23:35:33]# firewall-cmd --add-service=iscsi-target --permanent
[root@iscsi-server ~ 23:36:39]# firewall-cmd --reload
4.2 完整配置流程(交互式实操)
标准配置顺序:创建后端存储 → 新建Target IQN → 绑定LUN磁盘 → 配置ACL白名单 → 优化监听端口 → 保存配置
1、进入交互式配置终端
不带任何选项运行targetcli时,该命令将进入交互模式
[root@iscsi-server ~ 23:38:19]# 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'.
目录结构逐行解析
这是刚进入targetcli交互界面的初始空白目录,无任何 iSCSI 配置,逐层拆解含义
/> ls
o- / .......................................................... [根目录,targetcli总入口]
o- backstores ............................................... [后端存储仓库,定义要共享的磁盘数据源]
| o- block ................................... [Storage Objects: 0] # 块设备:物理硬盘、分区、LVM逻辑卷(生产常用)
| o- fileio .................................. [Storage Objects: 0] # 文件镜像:用单个文件模拟磁盘,多用于测试环境
| o- pscsi ................................... [Storage Objects: 0] # 直通SCSI设备:直接透传外接硬件磁盘
| o- ramdisk ................................. [Storage Objects: 0] # 内存盘:内存虚拟高速磁盘,断电数据丢失
o- iscsi ............................................. [Targets: 0] # iSCSI目标目录,创建IQN共享目标
o- loopback .......................................... [Targets: 0] # 本地回环挂载,本机程序调用本机共享磁盘,极少使用
补充标注说明
- Storage Objects: 0:当前该分类下还没有创建任何后端存储;
- Targets: 0:暂无 iSCSI 共享目标;
- 日常搭建远程共享磁盘,仅使用 block + iscsi 两个目录,其余三类仅特殊场景使用。
通用基础指令(全目录通用)
| 命令 | 功能 |
|---|---|
ls | 查看当前目录所有内容 |
cd 路径 | 切换目录 |
create xxx | 创建对象(后端、target、lun、acl) |
delete xxx | 删除指定对象 |
clearconfig confirm=true | 清空全部配置 |
saveconfig | 保存配置,开机自动加载 |
help | 查看当前目录可用命令 |
2、创建块设备后端存储
将服务端新增的两块磁盘注册为后端存储,用于对外共享
# 进入块设备配置目录
cd /backstores/block
# 绑定第一块20G磁盘 /dev/sdb
create myblock1 /dev/sdb
3、创建Target唯一IQN
# 进入iSCSI核心配置目录
cd /iscsi
# 创建第一个存储目标(对应sdb磁盘)
create iqn.2026-08.cloud.fangbing.iscsi-server:disk1
4、绑定LUN磁盘映射
将后端存储磁盘与Target关联,实现磁盘对外共享,无此配置客户端无法识别磁盘
# 为disk1绑定LUN
cd /iscsi/iqn.2026-08.cloud.fangbing.iscsi-server:disk1/tpg1/luns
create /backstores/block/myblock1
5、配置ACL客户端白名单
仅放行指定客户端IQN,拒绝所有未授权连接,保障存储安全
# 配置disk1白名单
cd /iscsi/iqn.2026-08.cloud.fangbing.iscsi-server:disk1/tpg1/acls
create iqn.2026-08.cloud.fangbing.iscsi-client
6、优化监听端口(生产必备)
默认监听0.0.0.0全网段,存在安全风险,修改为固定业务IP监听
# 优化disk1监听端口
cd /iscsi/iqn.2026-08.cloud.fangbing.iscsi-server:disk1/tpg1/portals/
delete 0.0.0.0 3260
create 10.1.8.10 3260
7、保存配置并退出
# 退出终端(自动保存配置)
exit
# 查看配置后的结果
[root@iscsi-server ~ 23:59:36]# targetcli ls
o- / .......................................................... [targetcli根目录]
o- backstores ............................................... [后端存储总目录,存放共享磁盘数据源]
| o- block ................................... [Storage Objects: 1] # 块设备目录,当前已有1个后端磁盘
| | o- myblock1 ......... [/dev/sdb (20.0GiB) write-thru activated] # 后端磁盘名myblock1,绑定/dev/sdb,20G直写模式,已启用
| | o- alua .................................... [ALUA Groups: 1] # 多路径高可用分组
| | o- default_tg_pt_gp ........ [ALUA state: Active/optimized] # 路径状态:正常活跃可用
| o- fileio .................................. [Storage Objects: 0] # 文件镜像存储,暂无创建
| o- pscsi ................................... [Storage Objects: 0] # 硬件SCSI直通,暂无创建
| o- ramdisk ................................. [Storage Objects: 0] # 内存虚拟磁盘,暂无创建
o- iscsi ............................................. [Targets: 1] # iSCSI目标总目录,已创建1个共享目标
| o- iqn.2026-08.cloud.fangbing.iscsi-server:disk1 ....... [TPGs: 1] # 目标IQN名称,包含1个目标门户组tpg1
| o- tpg1 ................................ [no-gen-acls, no-auth] # 门户组1:未自动生成ACL、无密码认证
| o- acls ........................................... [ACLs: 1] # 客户端权限白名单,已添加1个客户端
| | o- iqn.2026-08.cloud.fangbing.iscsi-client [Mapped LUNs: 1] # 放行客户端IQN,已分配1个LUN磁盘
| | o- mapped_lun0 ............... [lun0 block/myblock1 (rw)] # 映射LUN0,读写权限,对应后端myblock1
| o- luns ........................................... [LUNs: 1] # LUN磁盘列表,绑定1个磁盘
| | o- lun0 .... [block/myblock1 (/dev/sdb) (default_tg_pt_gp)] # LUN0关联后端磁盘myblock1
| o- portals ..................................... [Portals: 1] # 监听端口列表,1个监听地址
| o- 10.1.8.10:3260 .................................... [OK] # 服务端监听IP与端口,状态正常就绪
o- loopback .......................................... [Targets: 0] # 本地回环共享,无配置
配置完成后,自动永久到该路径下:/etc/target/saveconfig.json
- 作用:
targetcli所有配置(后端盘、Target、LUN、ACL、监听端口)都会以 JSON 格式记录在此文件; - 生效机制:
target.service开机启动时,自动加载该文件,还原整套 iSCSI 共享配置,保证重启不丢失配置。
4.3 非交互式批量配置(快捷方案)
除交互式配置外,可直接通过命令行批量配置,适合批量部署、脚本自动化运维
# 创建第二块磁盘后端存储
[root@iscsi-server ~ 00:08:26]# targetcli /backstores/block create myblock2 /dev/sdc
# 创建第二个Target
[root@iscsi-server ~ 00:09:46]# targetcli /iscsi create iqn.2026-08.cloud.fangbing.iscsi-server:disk2
# 绑定LUN
[root@iscsi-server ~ 00:11:01]# targetcli /iscsi/iqn.2026-08.cloud.fangbing.iscsi-server:disk2/tpg1/luns create /backstores/block/myblock2
# 配置白名单
[root@iscsi-server ~ 00:12:39]# targetcli /iscsi/iqn.2026-08.cloud.fangbing.iscsi-server:disk2/tpg1/acls create iqn.2026-08.cloud.laofang.iscsi-client
# 绑定固定监听IP
[root@iscsi-server ~ 00:13:35]# targetcli /iscsi/iqn.2026-08.cloud.fangbing.iscsi-server:disk2/tpg1/portals create 10.1.8.10 3260
# 强制保存所有配置
[root@iscsi-server ~ 00:14:34]# targetcli saveconfig
五、iSCSI 客户端连接与持久化挂载
5.1 两种启动器(接入磁盘的两种方式)
- 软件启动器(日常学习、服务器首选),靠 CPU 和普通网卡,软件模拟连接远程硬盘
- 原理:普通网线走硬盘数据,CPU 打包、解析 iSCSI 网络协议;
- 优点:不用额外花钱,系统装个软件就能用,简单省事;
- 缺点:读写压力很大时,会稍微占用 CPU 性能。
- 硬件 HBA 启动器(大企业高端设备用)
- 原理:硬件芯片单独处理网络协议,不再占用 CPU;
- 优点:高速读写、高并发下服务器更稳定;
- 缺点:硬件很贵,普通机房、学习环境完全没必要。
5.2 安装客户端工具
Linux 电脑想要连上远程iSCSI硬盘,必须装这个工具包(iscsi-initiator-utils)。包里一共 3 样核心东西:
iscsid(后台管家)一直挂在后台运行,维持电脑和远程硬盘的连接,断线自动重连、实时传输数据,连接全靠它维持。iscsiadm(操作遥控器)我们手动敲命令全靠它,用来查找远程硬盘、登录连接、断开硬盘。
| 文件 | 作用 |
|---|---|
/etc/iscsi/initiatorname.iscsi | 本机 “身份证号(客户端 IQN)”,服务端只认名单里的身份证,不在名单就不让连硬盘 |
/etc/iscsi/iscsid.conf | 连接规则手册:断线多久重试、密码登录、传输速度限制等细节设置 |
# 安装软件包
[root@iscsi-client ~ 23:26:12]# yum install -y iscsi-initiator-utils
# 设置开机自启,同时启动软件
[root@iscsi-client ~ 17:40:37]# systemctl enable iscsid --now
# 查看状态
[root@iscsi-client ~ 17:50:05]# systemctl status iscsid
iscsiadm 命令与选项完整汇总表
| 分类 | 命令 / 参数 | 释义说明 | 实操示例 |
|---|---|---|---|
| 核心模式 | -m discovery | 扫描模式,探测服务端共享磁盘 | iscsiadm -m discovery -t st -p 10.1.8.10 |
-m node | 节点模式,管理本地持久化磁盘记录(登录、删除、查看) | iscsiadm -m node | |
-m session | 会话模式,查看当前正在连接的链路详情 | iscsiadm -m session -P3 | |
| 扫描相关 | -t st | 扫描类型 sendtargets,iSCSI 标准默认方式,端口 3260 | iscsiadm -m discovery -t st -p 10.1.8.10 |
-p IP[:端口] | 指定 iSCSI 服务端 IP,端口省略默认 3260 | iscsiadm -m discovery -t st -p 10.1.8.10:3260 | |
| 登录操作 | -l(login) | 登录磁盘 | 批量登录:iscsiadm -m node -l单独登录:iscsiadm -m node -T iqn.xxx -p 10.1.8.10 -l |
| 登出操作 | -u(logout) | 断开磁盘连接,保留本地节点记录 | 全部登出:iscsiadm -m node -u单个登出:iscsiadm -m node -T iqn.xxx -p 10.1.8.10 -u |
| 删除节点 | -o delete | 删除本地 node 持久化记录,重启不会自动重连 | 删除单条:iscsiadm -m node -T iqn.xxx -p 10.1.8.10 -o delete清空整台服务器记录:iscsiadm -m node -p 10.1.8.10 -o delete |
| 查看配置 | -o show | 查看单个 target 详细配置(超时、认证、重连参数) | iscsiadm -m node -T iqn.2026-08.local:disk1 -o show |
| 详情等级 | -P 0 | 极简输出,仅核心信息 | iscsiadm -m session -P0 |
-P 1 | 简略信息,日常查看链路状态 | iscsiadm -m session -P1 | |
-P 3 | 完整详细信息,故障排查首选,可查看 /dev/sd 盘符 | iscsiadm -m session -P3 | |
| 指定对象 | -T IQN名称 | 锁定单个目标磁盘 | iscsiadm -m node -T iqn.2026-08.local:disk1 -l |
| 查看记录 | iscsiadm -m discovery | 查看所有历史扫描过的服务器 | iscsiadm -m discovery |
iscsiadm -m node | 列出本机所有保存的 target 节点清单 | iscsiadm -m node | |
| 临时直登 | 无 discovery,手动指定登录 | 不写入本地 node,重启失效,仅临时测试 | iscsiadm -m node -T iqn.2026-08.local:disk1 -p 10.1.8.10 -l |
5.3配置客户端唯一IQN
客户端IQN必须与服务端白名单完全一致,否则无法登录
# 编辑IQN配置文件
vim /etc/iscsi/initiatorname.iscsi
写入如下配置:
# iSCSI 客户端唯一身份标识(启动器名称),用来让服务端识别当前客户端,做权限 ACL 黑白名单绑定
InitiatorName=iqn.2026-08.cloud.fangbing.iscsi-client
# 重启服务
[root@iscsi-client ~ 18:24:34]# systemctl restart iscsid
5.4 发现并登录远端存储
1、扫描服务端共享资源
# 扫描模式,探测服务端共享磁盘,服务端 Target 信息自动写入本机 /var/lib/iscsi/nodes/,生成 node 节点记录
[root@iscsi-client ~ 17:56:56]# iscsiadm -m discovery -t st -p 10.1.8.10
10.1.8.10:3260,1 iqn.2026-08.cloud.fangbing.iscsi-server:disk1
10.1.8.10:3260,1 iqn.2026-08.cloud.fangbing.iscsi-server:disk2
注意:只有先扫描发现后,服务端 Target 信息会自动写入本机 /var/lib/iscsi/nodes/,生成 node 节点记录;本机才能登录。
2、登录指定存储目标
# 登录所有扫描的设备
[root@iscsi-client ~ 18:25:03]# iscsiadm -m node -l
5.5 查看映射磁盘设备
# 查看本地磁盘列表,可识别远端sdb和sdc磁盘
[root@iscsi-client ~ 18:27:49]# 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
sdc 8:32 0 20G 0 disk
sr0 11:0 1 4.4G 0 rom /run/media/root/CentOS 7 x86_64
# 查看完整iSCSI会话详情
[root@iscsi-client ~ 18:28:26]# iscsiadm -m session -P 3
5.6 磁盘格式化与读写测试
# 格式化xfs文件系统
[root@iscsi-client ~ 21:24:38]# mkfs.xfs /dev/sdb
# 创建挂载目录并临时挂载
[root@iscsi-client ~ 21:24:48]# mkdir /sdb
[root@iscsi-client ~ 21:25:19]# mount /dev/sdb /sdb
# 读写测试验证可用性
[root@iscsi-client ~ 21:25:40]# echo "iscsi storage test" > /sdb/test
[root@iscsi-client ~ 21:26:36]# cat /sdb/test
iscsi storage test
5.7 生产级持久化挂载(重点)
核心避坑:禁止使用/dev/sd*设备名挂载,服务器重启后设备名可能漂移,导致挂载失败!必须使用UUID+_netdev参数
# 查询磁盘UUID
[root@iscsi-client ~ 21:26:48]# blkid /dev/sdb
/dev/sdb: UUID="a6616dc3-fcff-4ceb-97bb-a25564d90449" TYPE="xfs"
# 编辑开机挂载文件
[root@iscsi-client ~ 21:28:00]# vim /etc/fstab
写入配置(替换为自己的磁盘UUID):
UUID="a6616dc3-fcff-4ceb-97bb-a25564d90449" /sdb xfs defaults,_netdev 0 0
_netdev 参数作用:等待网络、iSCSI服务启动完成后再挂载磁盘,彻底杜绝开机挂载失败问题。
核查配置是否正常
# 卸载/dev/sdb设备
[root@iscsi-client ~ 21:31:25]# umount /dev/sdb
# 读取 /etc/fstab 配置文件,自动挂载文件中所有标记为开机自动挂载
[root@iscsi-client ~ 21:31:31]# mount -a
# 查看挂载结果
[root@iscsi-client ~ 21:31:52]# df -hT /dev/sdb
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sdb xfs 20G 33M 20G 1% /sdb
5.8 客户端断开与清理配置
要停止使用iSCSI目标,请执行以下步骤:
- 确保没有使用目标提供的任何设备。 例如,卸载文件系统。
- 从/etc/fstab等位置删除对目标的所有持久引用。
- 从iSCSI目标注销。
# 卸载挂载目录,同时删除/etc/fstab中的挂载配置
[root@iscsi-client ~ 21:30:58]# umount /dev/sdb
# 注销iSCSI连接
[root@iscsi-client ~ 21:40:37]# iscsiadm -m node -T iqn.2026-08.cloud.fangbing.iscsi-server:disk1 -p 10.1.8.10:3260 -u
# 删除本地缓存的存储节点信息
[root@iscsi-client ~ 21:42:50]# iscsiadm -m node -T iqn.2026-08.cloud.fangbing.iscsi-server:disk1 -p 10.1.8.10:3260 -o delete
# 查看本地连接的所有node节点
[root@iscsi-client ~ 21:44:20]# iscsiadm -m node
六、Multipath 多路径高可用部署(生产必备)
单链路iSCSI存储存在严重单点故障,网卡、网线、端口故障都会导致存储离线、业务中断。通过多路径技术聚合双链路,实现故障自动切换,保障业务7*24小时高可用。多路径就是把多条物理线路合并成 1 个虚拟硬盘:一根线路断了,流量自动换到别的线路,硬盘照常使用,不会掉线损坏。
实现原理:
- 内核底层:
Device Mapper相当于系统自带的 “虚拟硬盘加工厂”,多路径靠它造出合并后的虚拟硬盘。 - 后台管家:
multipathd进程24 小时后台盯着所有线路好坏,哪根线路故障,立刻自动切换线路,全程不用人工干预。 - 手动遥控器:
multipath命令管理员手动查询硬盘状态、刷新配置、排查故障用的命令工具。 - 安装包:
device-mapper-multipath想要用多路径,必须装这个软件包,管家进程、遥控器命令、内核驱动全都在这个包里。
6.1 多路径架构原理
服务端、客户端各配置双网卡双网段,搭建两条独立存储传输链路。系统将两条物理链路聚合为一个虚拟设备,默认主备模式,主链路故障时,业务无感知自动切换至备用链路。
6.2 服务端双链路配置
服务端新增网卡配置网段:10.1.1.10/24,新增监听端口
# 新增第二条链路监听端口
[root@iscsi-server ~ 22:00:25]# targetcli /iscsi/iqn.2026-08.cloud.fangbing.iscsi-server:disk1/tpg2/portals create 10.1.1.10 3260
[root@iscsi-server ~ 22:00:33]# targetcli /iscsi/iqn.2026-08.cloud.fangbing.iscsi-server:disk2/tpg1/portals create 10.1.1.10 3260
# 保存高可用配置
[root@iscsi-server ~ 22:02:57]# targetcli saveconfig
6.3 客户端多路径部署
客户端新增网卡配置网段:10.1.1.11/24,同时安装多路径软件包
# 安装多路径核心工具
[root@iscsi-client ~ 22:04:07]# yum -y install device-mapper-multipath
# 生成默认配置文件并启用服务
# 整行命令作用
# 一键三件事:
# 1.启用多路径、生成配置文件;
# 2.马上运行多路径守护进程;
# 3.设置开机自启,重启服务器多路径依旧生效。
[root@iscsi-client ~ 22:13:59]# mpathconf --enable --with_multipathd y --with_chkconfig y
usage: /usr/sbin/mpathconf <command>
Commands:
Enable: --enable
Disable: --disable
Only allow certain wwids (instead of enable): --allow <WWID>
Set user_friendly_names (Default y): --user_friendly_names <y|n>
Set find_multipaths (Default y): --find_multipaths <y|n>
Load the dm-multipath modules on enable (Default y): --with_module <y|n>
start/stop/reload multipathd (Default n): --with_multipathd <y|n>
select output file (Default /etc/multipath.conf): --outfile <FILE>
# 启动服务
[root@iscsi-client ~ 22:22:26]# systemctl start multipathd
dm-multipath 命令汇总精简版
| 分类 | 命令 | 通俗作用 | 实战示例 |
|---|---|---|---|
multipath 主命令查看、刷新、管理多路径设备 | multipath -ll | 最常用,详细查看链路、状态、WWID、mpath 设备拓扑 | multipath -ll |
multipath -l | 简略查看链路信息,输出精简 | multipath -l | |
multipath -r | 重新扫描磁盘,刷新聚合路径 | multipath -r | |
multipath -f 设备路径 | 删除单个多路径映射设备 | multipath -f /dev/mapper/mpath0 | |
multipath -F | 清空全部多路径设备 | multipath -F | |
multipath -t | 查看当前已加载生效的配置 | multipath -t | |
multipath -w | 查看所有磁盘 WWID 编号 | multipath -w | |
multipath -v 数字 | 日志级别:0 静默、1 默认、2 详细、3 调试 | multipath -v3 -r | |
multipath -q | 静默执行,屏蔽多余输出 | multipath -q -r | |
multipathd 交互命令进程内部查询、热重载、扩容刷新 | multipathd show paths | 查看所有物理链路在线状态 | multipathd show paths |
multipathd show maps | 查看所有聚合后的 mpath 虚拟盘 | multipathd show maps | |
multipathd show config | 查看进程实时运行配置 | multipathd show config | |
multipathd reload | 热重载配置,不重启进程 | multipathd reload | |
multipathd resize map mpath0 | 磁盘扩容后刷新识别容量 | multipathd resize map mpath0 | |
mpathconf 初始化配置工具 | mpathconf --enable | 开启多路径、生成配置文件、加载内核模块 | mpathconf --enable |
mpathconf --disable | 关闭多路径、停用模块 | mpathconf --disable | |
mpathconf --with_multipathd y | 启用配置后立刻启动守护进程 | 一键初始化:mpathconf --enable --with_multipathd y --with_chkconfig y | |
mpathconf --with_chkconfig y | 配置开机自启,兼容 CentOS6/7 | 同上组合命令 | |
mpathconf(无参数) | 查看多路径全局开关状态 | mpathconf |
6.4 双链路发现与聚合
# 分别扫描两条链路的存储资源
[root@iscsi-client ~ 22:24:12]# iscsiadm -m discovery -t st -p 10.1.8.10
[root@iscsi-client ~ 22:24:32]# iscsiadm -m discovery -t st -p 10.1.1.10
# 批量登录所有存储链路
[root@iscsi-client ~ 22:24:55]# iscsiadm -m node -l
# 查看多路径聚合状态
[root@iscsi-client ~ 22:25:47]# multipath -ll
mpathb (3600140558aea5124ff042cb9250b77ad) dm-4 LIO-ORG ,myblock # 多路径友好名|WWID唯一编号|内核底层dm设备|存储厂商与LUN名称
size=20G features='0' hwhandler='0' wp=rw # 容量20G | 无特殊硬件特性 | 无硬件管理插件 | 读写权限rw
|-+- policy='service-time 0' prio=1 status=active # 路径组1:最短耗时调度、优先级1、当前业务主用组
| `- 5:0:0:0 sdc 8:32 active ready running # 物理磁盘sdc,主链路,正常就绪、正在运行
`-+- policy='service-time 0' prio=1 status=enabled # 路径组2:同调度策略优先级,备用就绪组
`- 6:0:0:0 sde 8:64 active ready running # 物理磁盘sde,备用链路,线路健康可随时切换
mpatha (3600140548cc0e172d004bbea5bf41895) dm-3 LIO-ORG ,myblock2
size=20G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| `- 4:0:0:0 sdb 8:16 active ready running
`-+- policy='service-time 0' prio=1 status=enabled
`- 3:0:0:0 sdd 8:48 active ready running
正常状态:两条链路一主一备,状态为active/ready,代表链路聚合成功。
6.5 确定设备是同一设备
WWN(World Wide Name):IEEE 标准化的全球唯一硬件名称,固化在存储设备中,永久唯一。
适用设备:硬盘、RAID、存储阵列、光纤交换机等存储硬件。
scsi_id 命令
# 可以确定sdb和sdd是同1个设备
[root@iscsi-client ~ 22:56:26]# /usr/lib/udev/scsi_id -g -u /dev/sdb
3600140548cc0e172d004bbea5bf41895
[root@iscsi-client ~ 22:56:46]# /usr/lib/udev/scsi_id -g -u /dev/sdd
3600140548cc0e172d004bbea5bf41895
# 可以确定sdc和sde是同1个设备
[root@iscsi-client ~ 22:56:32]# /usr/lib/udev/scsi_id -g -u /dev/sdc
3600140558aea5124ff042cb9250b77ad
[root@iscsi-client ~ 22:56:56]# /usr/lib/udev/scsi_id -g -u /dev/sde
3600140558aea5124ff042cb9250b77ad
6.6 自定义多路径设备名称
默认设备名辨识度低,可自定义别名,方便运维管理
# 编辑多路径配置文件
[root@iscsi-client ~ 22:56:59]# vim /etc/multipath.conf
文件末尾添加自定义配置:
multipaths { # 自定义多路径设备专属配置区块,用于单独指定某一块存储盘参数
multipath { # 单台多路径逻辑磁盘配置起始
wwid 3600140548cc0e172d004bbea5bf41895 # 磁盘唯一硬件标识,用来精准识别后端存储盘
alias xiyangyang # 自定义设备别名,生成/dev/mapper/xiyangyang,简化盘符使用
path_grouping_policy failover # 路径策略:failover 主链路工作,故障自动切备用链路
}
}
# 重载服务生效
[root@iscsi-client ~ 23:04:31]# systemctl reload multipathd.service
[root@iscsi-client ~ 23:04:50]# multipath -ll
Aug 07 23:05:00 | /etc/multipath.conf line 94, invalid keyword: blacklist
mpathb (3600140558aea5124ff042cb9250b77ad) dm-4 LIO-ORG ,myblock1
size=20G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| `- 5:0:0:0 sdc 8:32 active ready running
`-+- policy='service-time 0' prio=1 status=enabled
`- 6:0:0:0 sde 8:64 active ready running
xiyangyang (3600140548cc0e172d004bbea5bf41895) dm-3 LIO-ORG ,myblock2
size=20G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| `- 3:0:0:0 sdd 8:48 active ready running
`-+- policy='service-time 0' prio=1 status=enabled
`- 4:0:0:0 sdb 8:16 active ready running
6.6 多路径高可用故障测试
-
备用链路故障测试:断开服务端备用网卡,客户端执行
multipath -ll,备用链路标记failed,主链路正常承载业务,无中断。 -
主链路故障测试:断开服务端主网卡,备用链路自动切换为active状态,业务读写无感知、不中断。
-
链路恢复测试:故障网卡恢复后,链路自动回归备用状态,多路径架构自动自愈。
6.7 多路径核心配置文件详解
/etc/multipath.conf 五大核心配置模块,覆盖绝大多数生产场景:
-
defaults:全局默认配置,定义链路选择、故障检测、IO调度规则。
-
blacklist:设备黑名单,禁止本地硬盘、光驱、U盘被多路径错误聚合。
-
blacklist_exceptions:黑名单白名单,单独放行指定存储设备。
-
devices:按存储厂商、型号批量配置设备参数。
-
multipaths:针对指定WWID设备单独配置,优先级最高。
七、常见故障排查方案
7.1 存储登录失败
大概率为IQN不匹配:检查客户端/etc/iscsi/initiatorname.iscsi IQN是否与服务端白名单一致,修改后重启iscsid服务,重新扫描登录。同时检查服务端3260端口防火墙是否放行。
7.2 开机自动挂载失败
排查两点:1、fstab是否添加_netdev网络挂载参数;2、iscsi服务是否设置开机自启。禁止使用设备名挂载,必须使用UUID。
7.3 多路径链路异常
检查两端网卡网络互通性、物理链路状态、multipathd服务运行状态,使用multipath -ll实时扫描链路,定位故障节点。
八、实战总结
-
iSCSI IP-SAN 低成本、高兼容,是中小企业替代FC光纤存储的最优方案,适配集群共享存储、业务数据持久化场景。
-
iSCSI核心安全依赖IQN白名单ACL,默认拒绝所有未授权接入,生产环境严禁开放全网访问。
-
客户端挂载必须遵循「UUID+_netdev」规范,彻底解决设备名漂移、开机挂载异常问题。
-
单链路iSCSI存在单点故障,生产环境必须部署Multipath多路径,实现链路冗余、故障自动切换。
-
多路径支持主备切换、链路自愈,是企业存储高可用架构的标配,可有效规避硬件单点故障导致的业务中断。
白名单,单独放行指定存储设备。
-
devices:按存储厂商、型号批量配置设备参数。
-
multipaths:针对指定WWID设备单独配置,优先级最高。
七、常见故障排查方案
7.1 存储登录失败
大概率为IQN不匹配:检查客户端/etc/iscsi/initiatorname.iscsi IQN是否与服务端白名单一致,修改后重启iscsid服务,重新扫描登录。同时检查服务端3260端口防火墙是否放行。
7.2 开机自动挂载失败
排查两点:1、fstab是否添加_netdev网络挂载参数;2、iscsi服务是否设置开机自启。禁止使用设备名挂载,必须使用UUID。
7.3 多路径链路异常
检查两端网卡网络互通性、物理链路状态、multipathd服务运行状态,使用multipath -ll实时扫描链路,定位故障节点。
八、实战总结
-
iSCSI IP-SAN 低成本、高兼容,是中小企业替代FC光纤存储的最优方案,适配集群共享存储、业务数据持久化场景。
-
iSCSI核心安全依赖IQN白名单ACL,默认拒绝所有未授权接入,生产环境严禁开放全网访问。
-
客户端挂载必须遵循「UUID+_netdev」规范,彻底解决设备名漂移、开机挂载异常问题。
-
单链路iSCSI存在单点故障,生产环境必须部署Multipath多路径,实现链路冗余、故障自动切换。
-
多路径支持主备切换、链路自愈,是企业存储高可用架构的标配,可有效规避硬件单点故障导致的业务中断。

8

被折叠的 条评论
为什么被折叠?



