iSCSI 服务详解:配置与远程存储
iSCSI 服务详解:配置与远程存储
一、iSCSI 服务概述
(一)核心定义
iSCSI(Internet Small Computer System Interface,互联网小型计算机系统接口)是一种基于TCP/IP 协议的远程存储技术,通过 IP 网络仿真 SCSI 本地存储总线,实现远程块存储设备(如硬盘、分区)的传输与管理,架构类似 “客户端 / 服务器” 模式。
(二)工作原理
- 服务端:将本地存储资源(磁盘分区、逻辑卷等)通过网络共享为 “iSCSI 目标”。
- 客户端:通过网络连接服务端的 iSCSI 目标,将远程存储识别为本地磁盘,实现像使用本地存储一样的分区、格式化和挂载操作。
二、iSCSI 服务端配置(提供远程存储)
(一)环境准备与安装
- 安装服务端工具:
# 安装iSCSI目标管理工具targetcliyum -y install targetcli
- 准备共享存储分区:
需提前创建一个用于共享的磁盘分区(示例为/dev/sda5,大小 10G):
# 分区工具操作(交互式)fdisk /dev/sda # 按提示创建10G分区,最终生成/dev/sda5
(二)使用targetcli配置 iSCSI 目标
通过targetcli进入交互式配置界面,完成存储共享设置:
# 进入targetcli交互模式targetcli
1. 创建块设备(关联本地存储)
块设备是 iSCSI 共享的基础,需关联提前准备的分区:
# 进入块设备目录cd backstores/block# 创建块设备(名称block1,关联分区/dev/sda5)create block1 /dev/sda5
2. 创建 IQN(目标标识符)
IQN 是 iSCSI 目标的唯一标识,格式为iqn.[时间].[反域名]:[自定义名称]:
# 进入iSCSI目录cd /iscsi# 创建IQN(示例:iqn.2025-08.com.example:sl,时间+反域名+自定义名称)create iqn.2025-08.com.example:sl
3. 配置 ACL(访问控制列表)
ACL 用于限制客户端访问,需与客户端的 IQN 对应:
# 进入目标的ACL目录(TPG1为默认目标门户组)cd iqn.2025-08.com.example:sl/tpg1/acls# 创建ACL,客户端IQN需与此处一致(示例:iqn.2025-08.com.example:sl1)create iqn.2025-08.com.example:sl1
4. 创建 LUN(关联块设备与目标)
LUN(逻辑单元号)将块设备激活为可被客户端识别的存储资源:
# 进入目标的LUNs目录cd ../luns# 关联块设备block1到当前目标create /backstores/block/block1
5. 配置门户(监听 IP 与端口)
门户定义服务端监听的 IP 和端口(默认端口 3260),需删除默认配置并指定实际 IP:
# 进入门户目录cd ../portals/# 删除默认门户(0.0.0.0表示所有IP,需替换为实际IP)delete ip_address=0.0.0.0 ip_port=3260# 创建新门户(绑定服务端IP:192.168.100.20,端口3260)create ip_address=192.168.100.20 ip_port=3260
6. 保存配置并退出
# 查看配置整体情况ls# 退出并保存配置exit
(三)服务启动与环境优化
- 关闭防火墙和 SELinux(实验环境):
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
- 重启服务并设置自启:
# 重启iSCSI目标服务systemctl restart targetsystemctl enable target
三、iSCSI 客户端配置(使用远程存储)
(一)客户端工具安装
# 安装iSCSI initiator工具(通常系统自带)yum -y install iscsi-initiator-utils
(二)配置客户端 IQN
客户端 IQN 需与服务端 ACL 中定义的 IQN 一致,修改配置文件:
# 编辑initiator名称配置文件vim /etc/iscsi/initiatorname.iscsi# 设置与服务端ACL匹配的IQNInitiatorName=iqn.2025-08.com.example:sl1
(三)重启客户端服务
# 重启iSCSI相关服务systemctl restart iscsi iscsid# 设置开机自启systemctl enable iscsi iscsid
(四)客户端使用远程存储流程
1. 发现 iSCSI 目标
# 发现服务端的iSCSI目标(-p指定服务端IP和端口)iscsiadm -m discovery -t sendtargets -p 192.168.100.20:3260
2. 登录 iSCSI 目标
# 登录目标(-T指定服务端IQN,-p指定服务端地址,-l表示登录)iscsiadm -m node -T iqn.2025-08.com.example:sl -p 192.168.100.20:3260 -l
3. 验证远程存储识别
登录后,远程存储会被识别为本地磁盘(如/dev/sdb):
# 查看磁盘列表,确认远程存储已识别fdisk -l
(五)格式化与挂载远程存储
1. 分区与格式化
# 对远程磁盘/dev/sdb分区(交互式)parted /dev/sdb # 按提示创建分区,生成/dev/sdb1udevadm settle # 刷新设备信息# 格式化为xfs文件系统mkfs.xfs /dev/sdb1
2. 临时挂载
# 创建挂载点mkdir /test# 挂载远程分区到/testmount /dev/sdb1 /test
3. 永久挂载(关键!)
永久挂载需通过 UUID 识别设备,并添加_netdev参数(告诉系统这是网络设备,避免启动失败):
# 获取分区UUIDblkid /dev/sdb1 # 复制输出中的UUID值(如:UUID="xxx-xxx-xxx")# 编辑fstab文件vim /etc/fstab# 添加以下内容(替换UUID为实际值)UUID=xxx-xxx-xxx /test xfs defaults,_netdev 0 0# 生效挂载配置mount -a
四、iSCSI 存储注销流程(客户端)
如需断开远程存储连接,需按以下步骤操作:
1. 取消挂载
umount /test
2. 删除 fstab 永久挂载条目
vim /etc/fstab # 删除或注释之前添加的iSCSI挂载行
3. 临时注销(断开连接,保留配置)
iscsiadm -m node -T iqn.2025-08.com.example:sl -p 192.168.100.20:3260 -u
4. 永久注销(删除客户端配置)
iscsiadm -m node -T iqn.2025-08.com.example:sl -p 192.168.100.20:3260 -o delete
五、关键注意事项
- IQN 一致性:服务端 ACL 中的 IQN 必须与客户端initiatorname.iscsi中的 IQN 完全一致,否则无法访问。
- 网络与防火墙:确保服务端 3260 端口开放(或关闭防火墙),客户端与服务端网络互通。
- 永久挂载参数:_netdev参数不可省略,否则系统启动时会因先加载 fstab 再启动网络而识别不到设备,导致启动失败。
- 存储安全:生产环境需通过 ACL 严格限制客户端 IP 和 IQN,避免未授权访问。
通过以上配置,iSCSI 可实现远程存储的高效共享,客户端无需物理连接存储设备,即可通过网络使用大容量块存储,适用于服务器集群、数据备份等场景。