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 目标服务器上重新配置访问控制,以允许新的发起端名称连接。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复