iSCSI(Internet Small Computer System Interface)是一种基于 TCP/IP 协议的存储网络标准,它允许客户端(发起端,Initiator)通过 IP 网络访问远程服务器(目标端,Target)上的存储设备,如同访问本地硬盘一样,在 CentOS 系统中,配置 iSCSI 发起端以连接远程存储是一项常见且重要的任务,尤其在虚拟化、数据库和集中式存储场景中,本文将详细介绍如何使用 yum 包管理器在 CentOS 上安装、配置和管理 iSCSI 发起端。

准备工作
在开始之前,请确保您具备以下条件:
- 一台运行 CentOS 7 或 CentOS 8 的服务器。
- 拥有
root权限或sudo权限的用户账户。 - 稳定的网络连接,能够访问到 iSCSI 目标服务器。
- 已知 iSCSI 目标服务器的 IP 地址、端口(默认为 3260)以及目标 IQN(iSCSI Qualified Name)。
安装 iSCSI 发起端软件
CentOS 系统已经将 iSCSI 发起端相关的软件包收录到了官方源中,安装过程非常简单,只需使用 yum 命令即可。
打开终端,执行以下命令来安装 iscsi-initiator-utils 软件包,这个包提供了 iSCSI 发起端所需的所有核心工具,包括 iscsiadm(管理工具)、iscsid(守护进程)等。
sudo yum install iscsi-initiator-utils -y
安装完成后,iSCSI 服务(iscsid)默认是禁用的,我们需要启动它并设置为开机自启,以便系统能够自动管理 iSCSI 连接。
sudo systemctl start iscsid sudo systemctl enable iscsid
您可以通过 systemctl status iscsid 命令来检查服务是否已成功运行。
发现 iSCSI 目标
安装并启动服务后,下一步是发现网络中可用的 iSCSI 目标,使用 iscsiadm 命令可以向指定的目标服务器发送查询请求。
命令格式如下:iscsiadm -m discovery -t st -p <TARGET_IP>
-m discovery:指定操作模式为发现。-t st:指定发现类型为sendtargets,这是最常用的类型。-p <TARGET_IP>:指定 iSCSI 目标服务器的 IP 地址。
将 <TARGET_IP> 替换为您实际的服务器地址,168.1.100:
sudo iscsiadm -m discovery -t st -p 192.168.1.100
执行成功后,命令会返回一个或多个目标记录,格式为 TARGET_IP:PORT,PORTAL_TAG TARGET_IQN。
168.1.100:3260,1 iqn.2025-10.com.example:storage.target00
这里的 iqn.2025-10.com.example:storage.target00 就是我们需要连接的目标的唯一标识符(IQN),发现操作会将目标信息记录在 /var/lib/iscsi/nodes/ 目录下,方便后续管理。
登录到 iSCSI 目标
发现目标后,就可以使用 iscsiadm 命令登录到该目标,建立连接并获取远程存储设备。
命令格式如下:iscsiadm -m node -T <TARGET_IQN> -p <TARGET_IP> --login

-m node:指定操作模式为节点管理。-T <TARGET_IQN>:指定要登录的目标 IQN。-p <TARGET_IP>:指定目标服务器的 IP 地址。--login:执行登录操作。
使用上一步获取到的 IQN:
sudo iscsiadm -m node -T iqn.2025-10.com.example:storage.target00 -p 192.168.1.100 --login
登录成功后,系统会提示类似 Login to [iface: default, target: iqn.2025-10..., portal: 192.168.1.100,3260] successful. 的信息。
您可以运行 lsblk 或 fdisk -l 命令来查看系统中是否出现了新的磁盘设备,/dev/sdb,这个新设备就是从远程 iSCSI 目标映射过来的块设备。
lsblk
输出示例:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
└─sda1 8:1 0 20G 0 part /
sdb 8:16 0 100G 0 disk <-- 这就是新发现的 iSCSI 磁盘
配置和使用 iSCSI 磁盘
新发现的 iSCSI 磁盘 /dev/sdb 此时还不能直接使用,需要像本地硬盘一样进行分区、格式化和挂载。
-
分区:使用
fdisk或parted对/dev/sdb进行分区,这里以创建一个主分区为例:sudo fdisk /dev/sdb
在
fdisk交互界面中,依次输入n(新建分区)、p(主分区)、1(分区号)、回车(默认起始扇区)、回车(默认结束扇区)、w(保存并退出)。 -
格式化:对新创建的分区(
/dev/sdb1)进行格式化。ext4是一个常用的文件系统。sudo mkfs.ext4 /dev/sdb1
-
挂载:创建一个挂载点,并将文件系统挂载上去。
sudo mkdir /mnt/iscsi_disk sudo mount /dev/sdb1 /mnt/iscsi_disk
使用
df -hT可以查看挂载是否成功。 -
设置开机自动挂载:为了确保系统重启后 iSCSI 磁盘能被自动挂载,需要将其信息添加到
/etc/fstab文件中。非常重要的一点是,对于网络设备,必须使用_netdev挂载选项,这能确保系统在网络服务启动后再尝试挂载该设备。获取分区的 UUID,使用 UUID 比
/dev/sdb1这样的设备名更稳定。sudo blkid /dev/sdb1
输出示例:
/dev/sdb1: UUID="a1b2c3d4-e5f6-7890-1234-567890abcdef" TYPE="ext4"
编辑
/etc/fstab文件:sudo vi /etc/fstab
在文件末尾添加一行:
UUID="a1b2c3d4-e5f6-7890-1234-567890abcdef" /mnt/iscsi_disk ext4 _netdev,defaults 0 0保存并退出,这样,系统重启时就会自动登录 iSCSI 目标(因为登录信息已被记录)并挂载该文件系统。
管理 iSCSI 连接
-
登出目标:如果需要断开与 iSCSI 目标的连接:
sudo iscsiadm -m node -T <TARGET_IQN> -p <TARGET_IP> --logout
-
删除目标记录:如果不再需要连接某个目标,可以删除其记录,防止自动登录:
sudo iscsiadm -m node -o delete -T <TARGET_IQN> -p <TARGET_IP>
核心命令速查表
| 目的 | 命令 | 描述 |
|---|---|---|
| 安装软件 | sudo yum install iscsi-initiator-utils |
安装 iSCSI 发起端工具包 |
| 启动并启用服务 | sudo systemctl start iscsid && sudo systemctl enable iscsid |
启动服务并设置开机自启 |
| 发现目标 | sudo iscsiadm -m discovery -t st -p <IP> |
查找指定 IP 上的 iSCSI 目标 |
| 登录目标 | sudo iscsiadm -m node -T <IQN> -p <IP> --login |
连接到指定的 iSCSI 目标 |
| 登出目标 | sudo iscsiadm -m node -T <IQN> -p <IP> --logout |
断开与 iSCSI 目标的连接 |
| 查看磁盘 | lsblk |
列出系统所有块设备,包括 iSCSI 磁盘 |
| 设置开机挂载 | 在 /etc/fstab 中添加带 _netdev 选项的条目 |
确保网络就绪后再挂载 iSCSI 文件系统 |
相关问答 (FAQs)
问1:我已经在 /etc/fstab 中配置了 iSCSI 磁盘的自动挂载,但为什么重启后系统卡住或者磁盘没有挂载成功?
答: 这个问题最常见的原因是在 /etc/fstab 的挂载选项中遗漏了 _netdev 参数,系统在启动过程中,会按顺序处理 /etc/fstab 中的条目,如果没有 _netdev,系统会尝试在网络服务(如 NetworkManager)完全启动之前就挂载该设备,导致无法找到 iSCSI 目标而挂载失败,甚至可能因为等待超时而拖慢整个启动过程,请确保您的 /etc/fstab 条目中包含 _netdev 选项,UUID="<your-uuid>" /mnt/iscsi_disk ext4 _netdev,defaults 0 0。
问2:如何修改 iSCSI 发起端的名称?
答: iSCSI 发起端名称存储在 /etc/iscsi/initiatorname.iscsi 文件中,您可以编辑此文件来更改名称,默认情况下,它可能是一个随机生成的字符串,您可以将其修改为更有意义的名称,iqn.2025-10.com.mycompany:myhost.initiator。
修改步骤如下:
- 使用文本编辑器打开文件:
sudo vi /etc/iscsi/initiatorname.iscsi - 修改
InitiatorName=后面的值。 - 保存并退出文件。
- 重启
iscsid服务以使更改生效:sudo systemctl restart iscsid
更改发起端名称后,可能需要在 iSCSI 目标服务器上重新配置访问控制,以允许新的发起端名称连接。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!