在现代化的数据中心和个人服务器管理中,网络存储扮演着至关重要的角色,iSCSI(Internet Small Computer System Interface)作为一种基于 TCP/IP 协议的存储网络标准,允许客户端(发起端,Initiator)通过 IP 网络访问远程的存储设备(目标端,Target),对于运行 CentOS 系统的服务器而言,连接 iSCSI 存储是一种经济高效且灵活的扩展存储容量的方式,本文将详细介绍在 CentOS 系统上连接、配置和管理 iSCSI 存储的完整流程。
准备工作
在开始配置之前,请确保您已具备以下条件:
- 一台运行 CentOS 7 或更高版本的系统。
- 具有管理员权限(可以使用
sudo
)。 - 网络连通性,确保 CentOS 服务器可以访问 iSCSI 目标端的 IP 地址。
- iSCSI 目标端的 IP 地址、端口号(默认为 3260)以及可能的认证信息(CHAP 用户名和密码)。
第一步:安装 iSCSI 发起端软件
CentOS 系统默认可能没有安装 iSCSI 发起端所需的软件包,您可以通过 yum
或 dnf
包管理器轻松安装,打开终端,执行以下命令:
sudo yum install iscsi-initiator-utils
对于 CentOS 8/9 等使用 dnf
的系统,命令为:
sudo dnf install iscsi-initiator-utils
安装完成后,系统会自动创建并启动 iscsid
服务,您可以使用以下命令检查其状态:
sudo systemctl status iscsid
如果服务未运行,请使用 sudo systemctl start iscsid
启动它,并使用 sudo systemctl enable iscsid
设置其开机自启。
第二步:发现 iSCSI 目标
连接存储的第一步是“发现”网络上可用的 iSCSI 目标,这会返回目标提供的所有逻辑单元号(LUN)及其唯一的 IQN(iSCSI Qualified Name)。
使用 iscsiadm
命令进行发现,将 <TARGET_IP>
替换为您 iSCSI 服务器的实际 IP 地址:
sudo iscsiadm -m discovery -t st -p <TARGET_IP>
-m discovery
:指定模式为发现。-t st
:指定发现类型为 sendtargets(最常见的类型)。-p <TARGET_IP>
:指定目标端的 IP 地址和端口。
成功执行后,您将看到类似以下的输出,其中包含了目标的 IQN:
168.1.100:3260,1 iqn.2025-08.com.example:storage.target01
第三步:连接到 iSCSI 目标
发现目标后,系统会将目标信息记录下来,您可以使用目标的 IQN 登录并建立连接。
sudo iscsiadm -m node -T <TARGET_IQN> -p <TARGET_IP> --login
将 <TARGET_IQN>
和 <TARGET_IP>
替换为上一步中获取的实际值。
sudo iscsiadm -m node -T iqn.2025-08.com.example:storage.target01 -p 192.168.1.100 --login
登录成功后,系统会提示 Login to [iface: default, target: ...] successful
,您可以运行 lsblk
或 fdisk -l
命令,您会看到一个新的磁盘设备,/dev/sdb
。
第四步:配置开机自动连接
默认情况下,服务器重启后 iSCSI 连接不会自动恢复,为了确保存储在系统重启后依然可用,需要将节点启动模式设置为 automatic
。
sudo iscsiadm -m node -T <TARGET_IQN> -p <TARGET_IP> --op=update -n node.startup -v automatic
此命令会修改配置文件,确保下次系统启动时 iscsid
服务会自动登录到该目标。
第五步:格式化并挂载新磁盘
您有了一个新的块设备,但还不能直接使用,需要对其进行分区、格式化并挂载到文件系统中。
分区:使用
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
实现开机自动挂载:为了使系统重启后该分区能自动挂载,需要将其添加到
/etc/fstab
文件中,推荐使用设备的 UUID 来进行配置,以避免设备名变化导致的问题。- 首先获取分区的 UUID:
sudo blkid /dev/sdb1
输出类似:
/dev/sdb1: UUID="a1b2c3d4-e5f6-7890-1234-567890abcdef" TYPE="ext4"
- 编辑
/etc/fstab
文件,添加以下一行:UUID=a1b2c3d4-e5f6-7890-1234-567890abcdef /mnt/iscsi_disk ext4 defaults,_netdev 0 0
注意:
_netdev
选项非常重要,它告诉系统这是一个网络设备,需要等待网络服务启动后再进行挂载。
- 首先获取分区的 UUID:
管理与常用命令
下表小编总结了管理 iSCSI 连接的一些常用 iscsiadm
命令:
操作 | 命令 | 描述 |
---|---|---|
查看当前活动会话 | sudo iscsiadm -m session | 列出所有已登录的 iSCSI 会话。 |
注销(断开连接) | sudo iscsiadm -m node -T <IQN> -p <IP> --logout | 从指定的 iSCSI 目标注销。 |
删除节点记录 | sudo iscsiadm -m node -T <IQN> -p <IP> --op delete | 完全删除本地关于此目标的记录。 |
查看所有节点数据库 | sudo iscsiadm -m node | 显示所有已发现的目标节点信息。 |
相关问答 FAQs
问题1:我已经成功登录了 iSCSI 目标,但是使用 lsblk
看不到新的磁盘设备,怎么办?
解答:这个问题通常由以下几个原因导致,请确认登录操作确实成功,可以使用 sudo iscsiadm -m session
查看是否有活动的会话,如果有会话但无设备,请检查系统内核日志,使用 dmesg | tail
命令查看是否有关于 SCSI 设备的错误信息,请检查网络连接和防火墙设置,确保 CentOS 服务器与 iSCSI 目标之间的 3260 端口是双向通畅的,确认 iSCSI 目标端是否正确配置并分配了 LUN 给您的发起端。
问题2:如何彻底移除一个 iSCSI 存储的连接和配置?
解答:要彻底移除,需要按顺序执行几个步骤,如果该磁盘正在被使用,请先卸载它,sudo umount /mnt/iscsi_disk
,从 /etc/fstab
文件中删除对应的挂载条目,以防系统启动时尝试挂载一个不存在的设备,使用 iscsiadm
命令从目标注销:sudo iscsiadm -m node -T <TARGET_IQN> -p <TARGET_IP> --logout
,删除本地的节点记录,这样系统就不会再尝试自动连接它:sudo iscsiadm -m node -T <TARGET_IQN> -p <TARGET_IP> --op delete
,完成这些步骤后,该 iSCSI 存储的连接和配置就完全从您的 CentOS 系统中清除了。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复