搭建 iSCSI 服务器

iSCSI 全称 Internet Small Computer System Interface。简单来说,它是一种在 IP 网络 上传输 SCSI 命令的协议

一个典型的 iSCSI 架构包含两个主要角色:

iSCSI Target(目标端):

  • 是什么: 存储资源的提供者。它是一台服务器或专用存储设备,将自身的物理存储空间(如硬盘、RAID 阵列、LUN)通过 iSCSI 协议 "导出" 到网络上
  • 功能: 监听网络请求,模拟一个 SCSI 设备
  • 常见实现:
  1. 专业存储设备( 如Dell EMC、NetApp、Synology、QNAP 的 NAS/SAN )
  2. 服务器软件:如 Windows Server 的 iSCSI 目标服务器,Linux 上的 LIO 或 SCSI Target Framework,以及 FreeNAS/TrueNAS 等

iSCSI Initiator(发起端):

  • 是什么: 存储资源的使用者。它是需要连接远程存储的客户端(如应用服务器、虚拟机宿主机)
  • 功能: 像安装驱动程序一样,发起连接请求,发现并登录到 Target,然后在本地操作系统里生成一块新的 "磁盘"
  • 常见实现:
  1. Windows: 内置的 iSCSI 发起程序(可在 "功能和角色" 中安装)
  2. Linux: 开源的 open-iscsi 软件包
  3. VMware ESXi: 内置的软件 iSCSI 适配器
  4. 硬件 HBA 卡: 专用的 iSCSI HBA 卡,可卸载 TCP/IP 协议处理,提升性能

# 第一步:安装 iSCSI Target 软件并设置服务状态

# Debian/Ubuntu

apt update

apt install -y targetcli-fb 

# Redhat/CentOS

yum -y install targetcli

systemctl enable target --now

systemctl status target

# 第二步:创建后端存储

# nvme0n1 是系统盘,sda 使用整块硬盘共享给 Windows,sdb 作为 LVM 逻辑卷共享给 Linux

image

# 配置 sda

image

# 配置 sdb

image

image

# 第三步:创建 iSCSI Target

创建 Target IQN(命名规则:iqn.YYYY-MM.域名反转:标识)

image

# 第四步:配置 LUN

image

# 第五步:配置 ACL

image

# 第六步:配置 portals

image

# 第七步:客户端测试

# iscsiadm discovery

image

 # 设置 InitiatorName 并测试登录

image

# 若 lsblk 未查看到 iscsi-lv01 (LUN name) 可执行 rescan-scsi-bus.sh 命令扫描下总线后再查看

image

# 格式化、挂载、写入文件测试

image

# Linux 客户端设置自动连接和启动

image

# 持久化挂载

# 由于 iSCSI 启动器(initiator)在系统启动后(网络就绪后)才连接目标器(target),其设备名的分配顺序晚于本地磁盘,且受网络延迟、目标器响应速度等影响,每次启动可能分配不同的 sdX,所以在 fstab 中强烈推荐用 UUID 进行挂载

image

# Windows 客户端测试

# 搜索框搜索 "iSCSI发起程序" 或运行框输入 iscsicpl.exe

# 在配置中更改发起程序名称

image

# 连接 iSCSI Target

image

# 连接成功后打开磁盘管理就可以看到 Linux 共享的 500G 硬盘,且分配盘符后相当于配置了持久化挂载

image

posted @ 2025-12-21 11:02  demoduan  阅读(34)  评论(0)    收藏  举报