当前位置: 首页 > news >正文

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

五、关键注意事项

  1. IQN 一致性:服务端 ACL 中的 IQN 必须与客户端initiatorname.iscsi中的 IQN 完全一致,否则无法访问。
  2. 网络与防火墙:确保服务端 3260 端口开放(或关闭防火墙),客户端与服务端网络互通。
  3. 永久挂载参数:_netdev参数不可省略,否则系统启动时会因先加载 fstab 再启动网络而识别不到设备,导致启动失败。
  4. 存储安全:生产环境需通过 ACL 严格限制客户端 IP 和 IQN,避免未授权访问。

通过以上配置,iSCSI 可实现远程存储的高效共享,客户端无需物理连接存储设备,即可通过网络使用大容量块存储,适用于服务器集群、数据备份等场景。

http://www.xdnf.cn/news/1302139.html

相关文章:

  • 「iOS」————UITableView性能优化
  • PaddleOCR从小红书视频中提取字幕并生成思维导图
  • VUE+SPRINGBOOT从0-1打造前后端-前后台系统-一分钟音频转文字
  • Spring WebFlux 性能优化实践指南
  • 金融项目高可用分布式TCC-Transaction(开源框架)
  • 基于RobustVideoMatting(RVM)进行视频人像分割(torch、onnx版本)
  • 力扣 —— 二分查找
  • [优选算法专题二滑动窗口——无重复字符的最长子串]
  • docker 安装 使用
  • QT在Widget类下的四种QPushbutton的信号与槽的连接方式
  • Python中推导式和表达式
  • QT(事件)
  • 【机器学习深度学习】客观评估训练程度
  • AIoT浪潮之巅:AI如何赋能边缘物联网,解锁三大核心潜能
  • Spring中存在两个相同的Bean是否会报错?
  • Java 大视界 -- Java 大数据在智能教育虚拟学习环境构建与学习体验增强中的应用(399)
  • STM32F103C8T6学习——直接存储器访问(DMA)标准库实战3(ADC数据采集+DMA回传)
  • 开始回溯的学习
  • I/O多路复用特性与实现
  • 【学习嵌入式day-25-线程】
  • 扣子(Coze),开源了!Dify 天塌了
  • 无人机智能跟踪模块设计与运行分析
  • Mac Mysql 卸载
  • 【Docker】openEuler 使用docker-compose部署gitlab-ce
  • C++设计模式:类间关系
  • 企业级时序数据库选型指南:从传统架构向智能时序数据管理的转型之路
  • Flinksql bug: Heartbeat of TaskManager with id container_XXX timed out.
  • gitee_流水线搭配 Dockerfile 部署vue项目
  • MetaFox官方版:轻松转换视频,畅享MKV格式的便捷与高效
  • 【Linux基础知识系列】第九十六篇 - 使用history命令管理命令历史