CentOS 7.9 iSCSI 配置及客户端映射指南
为了让文档步骤更清晰、命令更易区分,我会将操作步骤与对应命令明确拆分,通过分级标题、代码块和分段排版优化阅读体验,同时保留原文档的完整逻辑。
一、配置本地 YUM 源
1. 问题现象
执行 yum install -y targetd targetcli 时,报错 “Could not resolve host: mirrorlist.centos.org; 未知的错误”,无法获取软件源。
2. 解决步骤(分 2 种场景)
场景 1:服务器能连外网(修复 DNS)
- 检查网络连通性
目的:确认服务器网络是否正常(能 ping 通说明仅 DNS 错误)
ping 8.8.8.8
验证:若输出 “64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=xx ms”,说明网络正常。
- 修改 DNS 配置
目的:使用 Google 公共 DNS 解决域名解析问题
① 打开 DNS 配置文件:
vi /etc/resolv.conf
② 在文件中添加以下内容(添加后按 Esc,输入 :wq 保存退出):
nameserver 8.8.8.8
nameserver 8.8.4.4
- 测试 DNS 是否生效
目的:验证域名解析功能是否恢复
ping baidu.com
验证:若能显示 “baidu.com” 的 IP,说明 DNS 正常。
- 清理并重建 yum 缓存
目的:避免旧缓存干扰软件安装
yum clean all
yum makecache
场景 2:服务器不能连外网(用本地 ISO 镜像源)
前提:先将 CentOS 7 ISO 镜像(如 CentOS-7-x86_64-DVD-2009.iso)上传到服务器 /root 目录。
- 创建 ISO 挂载目录
目的:存放挂载后的镜像文件(-p 表示目录不存在时自动创建)
mkdir -p /mnt/iso
- 挂载 ISO 镜像
目的:将 ISO 文件当作磁盘挂载(loop 表示文件挂载模式)
mount -o loop /root/CentOS-7-x86\_64-DVD-2009.iso /mnt/iso
提示:若 ISO 已自动挂载(如路径 /run/media/用户名/CentOS 7 x86_64),直接使用该路径,无需重复执行 mount 命令。
- 备份原有 yum 源
目的:避免旧源干扰本地源,先备份再移除
① 创建备份目录:
mkdir -p /etc/yum.repos.d/backup
② 移动所有 .repo 文件到备份目录:
mv /etc/yum.repos.d/\*.repo /etc/yum.repos.d/backup/
- 创建本地源配置文件
目的:让 yum 识别本地 ISO 源
① 新建配置文件:
vi /etc/yum.repos.d/local.repo
② 在文件中添加以下内容(路径有空格时需用双引号包裹):
\[local]
name=Local CentOS 7 Repository
baseurl=file:///mnt/iso
\# 若 ISO 自动挂载路径为 /run/media/Jia/CentOS 7 x86\_64,需修改为:
\# baseurl="file:///run/media/Jia/CentOS 7 x86\_64"
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
说明:gpgcheck=1 验证软件签名(安全),enabled=1 启用该源(必须开启)。
- 清理并重建 yum 缓存
目的:让 yum 加载新的本地源
yum clean all
yum makecache
验证:若显示 “元数据缓存已建立”,说明本地源生效。
- 测试本地源
目的:确认本地源可正常获取软件包
yum list
验证:若能显示 bash、vim 等大量软件包,说明本地源可用。
3. 常见错误及解决方法
| 错误现象 | 错误原因 | 解决方法 |
|---|---|---|
| ping 8.8.8.8 失败 | 服务器网络不通(网关错、网线未插) | 1. 检查网线;2. 执行 ip route 查网关(如 default via 192.168.2.1 dev eth0);3. 联系运维确认权限 |
| mount 报错 “设置回环设备失败:是一个目录” | 误将已挂载目录当作 ISO 文件挂载 | 执行 df -h 查 ISO 实际挂载路径,直接用该路径作为 baseurl |
| yum makecache 报错 “URL must be http, ftp, file or https not” | baseurl 路径错(空格没加引号、路径不存在) | 1. 执行 ls /mnt/iso 确认挂载目录有文件;2. 路径有空格时给 baseurl 加双引号 |
二、安装并配置 iSCSI 服务器(targetd + targetcli)
核心工具:targetd(iSCSI 服务守护进程)、targetcli(iSCSI 配置命令行工具)。
1. 安装 targetd 和 targetcli
- 执行安装命令
目的:从本地源或外网源拉取软件包(-y 自动确认安装)
yum install -y targetd targetcli
验证:若显示 “已安装: targetd.x86_64 0:0.9.1-1.el7 targetcli.x86_64 0:2.1.51-1.el7”,说明安装成功。
2. 启动 targetd 服务及故障处理
步骤 1:启动 targetd 服务
- 启动服务
systemctl start targetd
- 设置开机自启(避免重启后服务消失)
systemctl enable targetd
- 查看服务状态(确认是否正常运行)
systemctl status targetd -l
说明:-l 表示显示完整日志,正常状态为 “active (running)”。
步骤 2:常见错误及解决方法
| 错误现象 | 错误原因 | 解决方法 |
|---|---|---|
| 日志显示 “password not set in /etc/target/targetd.yaml” | targetd 需密码启动,配置文件未设置 | 1. 编辑配置文件:vi /etc/target/targetd.yaml;2. 添加 password: "123456"(密码自定义);3. 重启服务:systemctl restart targetd |
| 日志显示 “Volume group “vg-targetd” not found” | 缺少 targetd 专用 LVM 卷组 | 1. 查空磁盘:lsblk(如 vdb 为 200G 空盘);2. 创建物理卷:pvcreate /dev/vdb;3. 创建卷组:vgcreate vg-targetd /dev/vdb;4. 重启服务:systemctl restart targetd |
| 服务显示 “active (running)” 但 targetcli 无法连接 | 服务未监听端口或端口被占用 | 1. 查端口:`netstat -tulnp |
3. 用 targetcli 配置 iSCSI 存储(核心步骤)
targetcli 为交互工具,操作需在 /> 提示符下执行。
- 进入 targetcli 交互界面
targetcli
验证:执行后显示 “/>” 提示符,说明进入成功。
- 创建块存储后端
目的:将空磁盘作为 iSCSI 存储资源(必须是空磁盘,避免数据覆盖)
/> /backstores/block create iscsi\_store /dev/vdb
说明:iscsi_store 为存储名称(自定义),/dev/vdb 为要共享的空磁盘路径。
验证:提示 “Created block storage object iscsi_store using /dev/vdb.”,说明创建成功。
- 创建 iSCSI 目标 IQN
目的:客户端通过 IQN 识别服务器(格式必须正确)
格式:iqn.年-月.域名反转:自定义名称(无域名可用主机名)
/> /iscsi create iqn.2025-08:iscsi-server
验证:提示 “Created target iqn.2025-08:iscsi-server. Created TPG 1. Created default portal listening on all IPs (0.0.0.0), port 3260.”,说明创建成功(默认监听所有 IP 的 3260 端口)。
- 添加客户端 ACL
目的:控制客户端访问权限(客户端 IQN 需与此处一致)
① 进入 ACL 配置目录(替换 IQN 为实际创建的目标 IQN):
/> cd /iscsi/iqn.2025-08:iscsi-server/tpg1/acls
② 创建客户端 ACL(客户端 IQN 自定义,如 iqn.2025-08:client1):
/> create iqn.2025-08:client1
验证:提示 “Created Node ACL for iqn.2025-08:client1. Created mapped LUN 0.”,说明创建成功(已自动映射 LUN 0)。
补充:多客户端需重复执行 create 命令(如 create iqn.2025-08:client2)。
- 绑定存储后端到目标(可选)
目的:手动关联存储与 LUN(若步骤 4 已提示 “mapped LUN 0”,可跳过)
① 进入 LUN 配置目录:
/> cd /iscsi/iqn.2025-08:iscsi-server/tpg1/luns
② 绑定存储后端到 LUN 0:
/> create /backstores/block/iscsi\_store
验证:提示 “Created LUN 0.”,说明绑定成功。
- 修改门户(可选,指定监听 IP)
目的:仅让服务器内网 IP 监听(默认监听所有 IP,避免端口冲突)
① 进入门户配置目录:
/> cd /iscsi/iqn.2025-08:iscsi-server/tpg1/portals
② 删除默认门户:
/> delete 0.0.0.0 3260
③ 创建指定 IP 门户(如服务器内网 IP 192.168.2.9):
/> create 192.168.2.9 3260
验证:提示 “Created network portal 192.168.2.9:3260.”,说明创建成功。
- 保存配置(关键)
目的:避免重启服务器后配置丢失
/> saveconfig
验证:提示 “Configuration saved to /etc/target/saveconfig.json”,说明保存成功。
- 退出 targetcli 交互界面
/> exit
4. iSCSI 配置常见错误及解决方法
- 错误现象:
/iscsi create报错 “WWN not valid as: iqn, naa, eui”
-
错误原因:IQN 格式错误(年份非 4 位、月份非 2 位、域名反转错)
-
解决方法:
① 正确示例:无域名用
iqn.2025-08:iscsi-server,有域名用iqn.2025-08.com``.example:iscsi-server;② 规则:年份 4 位(如 2025)、月份 2 位(如 08,不可写 8)、域名需反转(example.com → com.example)。
- 错误现象:创建门户报错 “Could not create NetworkPortal in configFS”
-
错误原因:3260 端口被占用,或已创建相同 IP + 端口的门户
-
解决方法:
① 查端口占用:
netstat -tulnp | grep 3260;② 杀占用进程:
kill -9 进程号;③ 删旧门户:进入 targetcli 执行
delete ``0.0.0.0`` 3260后重新创建。
- 错误现象:客户端无法发现 iSCSI 服务器
-
错误原因:防火墙未开 3260 端口、客户端 IQN 未加 ACL、服务器 IP / 端口错
-
解决方法:
① 开防火墙端口:
firewall-cmd --add-port=3260/tcp --permanent,再firewall-cmd --reload;② 确认客户端 IQN 与服务器 ACL 完全一致;
③ 客户端发现时填服务器内网 IP(如 192.168.2.9)、端口 3260。
- 错误现象:重启服务器后 iSCSI 配置丢失
-
错误原因:未执行
saveconfig保存配置(配置仅存内存) -
解决方法:
① 重新进入 targetcli 执行
saveconfig;② 验证:
cat /etc/target/saveconfig.json,能看到配置内容说明成功。
三、验证 iSCSI 服务器配置及防火墙设置
1. 验证服务器配置
- 检查 targetd 服务状态
目的:确认服务正常运行
systemctl status targetd -l
处理:若服务未运行,执行 systemctl restart targetd 重启。
- 检查 iSCSI 配置结构
目的:确认存储、IQN、ACL、LUN、门户配置完整
① 进入 targetcli:
targetcli
② 查看配置:
/> ls /
验证:需包含以下内容:
-
/backstores/block/iscsi_store(块存储); -
/iscsi/iqn.2025-08:iscsi-server(目标 IQN); -
/iscsi/iqn.2025-08:iscsi-server/tpg1/acls/iqn.2025-08:client1(客户端 ACL); -
/iscsi/iqn.2025-08:iscsi-server/tpg1/luns/0(绑定的 LUN); -
/iscsi/iqn.2025-08:iscsi-server/tpg1/portals/``192.168.2.9:3260(门户)。
2. 配置防火墙(开放 iSCSI 端口)
目的:允许客户端通过 3260 端口连接服务器
- 永久开放 3260 端口:
firewall-cmd --add-port=3260/tcp --permanent
- 重载防火墙使配置生效:
firewall-cmd --reload
四、磁盘格式化方法(分容量适配)
方法 1:fdisk 命令(适用于 <2TB 磁盘)
- 查看磁盘信息
目的:确认要格式化的磁盘路径(如 /dev/sdb)
fdisk -l
- 进入 fdisk 交互模式(以
/dev/sdb为例)
fdisk /dev/sdb
- 新建分区(按以下步骤输入命令)
| 操作 | 输入命令 | 说明 |
|---|---|---|
| 创建新分区 | n | 选择 “new” 新建分区 |
| 选择分区类型 | p | 选择 “primary” 主分区 |
| 输入分区号 | 1 | 默认 1,直接输入后回车 |
| 起始扇区 | 直接回车 | 使用默认值 |
| 结束扇区 | 直接回车 | 使用整个磁盘空间 |
| 保存退出 | w | 写入配置并退出交互模式 |
- 格式化分区为 ext4 文件系统
目的:让磁盘支持 Linux 读写(以 /dev/sdb1 为例)
mkfs.ext4 /dev/sdb1
方法 2:parted 命令(适用于 >2TB 磁盘)
- 启动 parted 工具(以
/dev/sdb为例)
parted /dev/sdb
- 新建分区(按以下步骤输入命令)
| 操作 | 输入命令 | 说明 |
|---|---|---|
| 设置分区表类型 | mklabel gpt | 大于 2TB 磁盘需用 GPT 分区表(MBR 最大支持 2TB) |
| 创建分区 | mkpart primary 0% 100% | “primary” 为主分区,“0% 100%” 表示使用整个磁盘 |
| 退出工具 | quit | 保存配置并退出 |
- 格式化分区为 ext4 文件系统
目的:让磁盘支持 Linux 读写(以 /dev/sdb1 为例)
mkfs.ext4 /dev/sdb1
五、永久挂载磁盘
目的:避免重启后磁盘挂载失效,固定挂载到指定目录(如 /data)。
- 创建挂载点
目的:指定磁盘的访问目录(以 /data 为例)
mkdir /data
- 获取分区 UUID
目的:通过 UUID 挂载(比路径更稳定,避免磁盘路径变化导致挂载失败)
以 /dev/sdb1 为例:
blkid /dev/sdb1
示例输出:/dev/sdb1: UUID="12345678-1234-1234-1234-1234567890ab" TYPE="ext4"(复制 UUID 部分)。
- 编辑 /etc/fstab 文件
目的:配置开机自动挂载
① 打开文件:
vi /etc/fstab
② 在文件末尾添加以下内容(替换 “你的 UUID” 为实际值):
UUID=你的UUID /data ext4 defaults 0 0
说明:defaults 为默认挂载参数,0 0 表示不备份、不检查(普通数据盘推荐)。
- 生效挂载配置
目的:让 /etc/fstab 中的配置立即生效(无需重启)
mount -a
- 验证挂载
目的:确认磁盘已正常挂载到 /data
df -h
验证:若显示 /dev/sdb1 挂载到 /data,说明成功。
六、Windows 客户端映射 iSCSI 存储
操作步骤
- 打开 “iSCSI 发起程序”
方式:① 控制面板 → 管理工具 → iSCSI 发起程序;② 直接运行 iscsicpl 命令。
- 发现 iSCSI 目标
① 在 “目标” 选项卡中,输入 iSCSI 服务器 IP 地址(如 192.168.2.9);
② 点击 “快速连接”,等待系统发现目标。
- 连接目标
① 在弹出的 “快速连接” 窗口中,选择发现的 iSCSI 目标;
② 点击 “连接”,等待连接成功(提示 “连接成功”)。
- 初始化磁盘
① 运行 diskmgmt.msc 打开 “磁盘管理”;
② 右侧会显示 “未初始化” 的新磁盘,右键点击磁盘 → “初始化磁盘”;
③ 选择分区表类型(GPT 或 MBR,大于 2TB 选 GPT),点击 “确定”。
- 创建卷并格式化
① 右键点击磁盘的 “未分配空间” → “新建简单卷”;
② 按向导设置卷大小(默认全部分配)、驱动器号(如 D:);
③ 选择文件系统(如 NTFS),输入卷标(自定义,如 “iSCSI-Data”),点击 “完成”。
- 验证
目的:确认磁盘可用
打开 “此电脑”,若能看到新的磁盘(如 D:),说明映射成功,可正常读写。
七、Linux 客户端映射 iSCSI 存储
操作步骤
- 安装 iSCSI initiator 工具
目的:获取 Linux 客户端连接 iSCSI 服务器的工具
yum install -y iscsi-initiator-utils
- 启动 iscsid 服务并设为开机自启
目的:确保 iSCSI 客户端服务正常运行
systemctl start iscsid
systemctl enable iscsid
- 发现 iSCSI 目标
目的:获取服务器上的 iSCSI 目标信息(替换 “服务器 IP 地址” 为实际值)
iscsiadm -m discovery -t st -p 服务器IP地址
示例输出:192.168.2.9:3260``,1 iqn.2025-08:iscsi-server(记录目标 IQN)。
- 登录 iSCSI 目标
目的:建立客户端与服务器的 iSCSI 连接(替换 “目标 IQN” 和 “服务器 IP 地址” 为实际值)
iscsiadm -m node -T 目标IQN -p 服务器IP地址 -l
示例:iscsiadm -m node -T iqn.2025-08:iscsi-server -p ``192.168.2.9`` -l
验证:提示 “successful login”,说明登录成功。
- 验证磁盘连接
目的:确认客户端已识别到 iSCSI 共享磁盘
fdisk -l
验证:若能看到新的磁盘(如 /dev/sdb),说明连接成功。
- 后续操作(分区、格式化、挂载)
目的:让磁盘可用,步骤同本文 “四、磁盘格式化方法” 和 “五、永久挂载磁盘”。
- 断开 iSCSI 连接(可选)
目的:取消客户端与服务器的映射(替换 “目标 IQN” 和 “服务器 IP 地址” 为实际值)
iscsiadm -m node -T 目标IQN -p 服务器IP地址 -u
验证:提示 “successful logout”,说明断开成功。
7968



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



