无需拆机扩容!教你用iSCSI将服务器存储挂载为本地硬盘

456 阅读5分钟

前言

通过iSCSI技术将服务器硬盘挂载为本地磁盘,是一种高效便捷的扩容方案。

当你连接公司网络时,可以借助iSCSI协议将远程存储设备映射为本地硬盘,就像直接插了一块物理硬盘一样。这些磁盘可以被分区、格式化,甚至安装操作系统,使用体验与本地磁盘几乎无异。

技术优势

高性能:基于千兆/万兆网络,传输速度接近本地SSD
灵活扩展:无需拆机,即可动态增加存储空间
跨平台支持:Windows、macOS、Linux均可使用

典型应用场景

  • 开发测试:快速挂载服务器磁盘,运行虚拟机或数据库
  • 数据备份:利用企业级存储实现高可靠性备份
  • 临时扩容:无需购买新硬盘,直接利用闲置存储资源

数据存储技术

  • DSA 直接附加存储 [电脑直插硬盘]
    • 本地磁盘接口:
接口类型转速 (RPM)典型容量范围主要特点适用场景
IDE5400/7200已淘汰并行接口,40/80针排线,速度慢早期PC(2000年代前)
SATA5400/7200500GB-16TB串行接口,7针线缆,性价比高消费级PC/企业级近线存储
SAS10000/15000300GB-4TB双端口全双工,支持扩展器,高可靠性企业级关键业务存储
SCSI15000(Ultra320)73GB/146GB并行68针/80针接口,已逐步被SAS替代旧式高端服务器(2000年代)
  • NAS 网络附加存储

    • 网络服务共享:共享的是文件夹 比如samba、NFS
  • SAN 存储附加网络

    • 网络服务共享:共享的是设备(硬盘)比如iscsi

ISCSI技术

将设备通过iscsi协议共享给客户端 仿真为本地设备用于通过ip网络仿真为scsi高性能本地存储总线 从而为远程存储设备提供数据传输与管理

  • ISCSI之间通信采用C/S架构 即客户端-服务端
  • iscsi是一个协议 让远程存储服务器通过网络将存储设备共享给本地计算机 让计算机像管理直连存储一样可以对共享的设备存储进行分区 格式化 挂载使用
  • 服务端可以同时共享多个存储设备给客户端,服务端上的一个LUN代表一个共享设备(共享硬盘)

SAN和IPSAN

IPSAN是在SAN后产生的,SAN默认指FCSAN,以光纤通道构建网络,IPSAN则是以IP网络构建存储网络,较FCSAN,具有更经济、自由扩展等特点。

ISCSI原理

  • SCSI层 根据客户端发出的请求建立SCSICDB(命令描述块),并且传给ISCSI层。同时接收来自ISCSI层的CDB,并向应用返回数据。
  • ISCSI对SCSICDB进行封装,以便能够在基于TCP/IP协议的网络上进行传输,完成SCSI到TCP/IP的协议映射。这一层是ISCSI协议的核心层。
  • TCP/IP层对IP报文进行路由和转发,并且提供端到端的透明可靠传输。

deepseek_mermaid_20250708_2e76a2.png

IPSAN部署

  • 共享三个设备
    • sdb1 block 10G
    • sdb2 block 10G
    • sdb3 file 3G

image.png

硬盘分区

image.png

image.png

image.png

生成文件磁盘

针对没有磁盘的情况 生成一个文件磁盘

image.png

安装iscsi服务

apt install targetcli-fb

systemctl start target
systemctl enable target
systemctl status target

[Linux 服务端配置]

通过targetcli命令设置设备共享

  • 将设备加入backstores存储库
  • 设置设备全球唯一标识名称IQN
  • 设置tpg组定义 (谁可以从哪个端口访问IQN标识对应的哪些设备)

技能一 如何添加设备

输入targetcli进入交互界面

image.png

技能二 如何删除设备

image.png

添加两块共享硬盘分区 sdb1/sdb2

image.png

添加共享文件磁盘 sdb3

image.png

技能三 如何共享/创建iqn

  • 创建全球唯一标识设备名
    • iqn命名规范
      • iqn.年-月.二级域名倒写.共享名

image.png

技能四 细化TAG组

  • 客户端名称 需要是 iqn.2025-07.cloud.euyan.demo:client1
  • 后续实验使用的是 iqn.2025-07.cloud.euyan.demo:storage

image.png

  • 将block1设备共享给客户端client1

image.png

  • 将其他设备都共享

image.png

  • 修改访问端口

image.png

服务端效果

image.png

  • 最后exit退出保存
  • systemctl restart target

image.png

[Liunx 客户端配置]

  • 设置客户端iqn设备名称
  • 安装客户端服务并启动
  • 访问共享
  • 分区、格式化、自动挂载

image.png

安装iscsi客户端

sudo apt update
sudo apt install open-iscsi
# 查看iqn
cat /etc/iscsi/initiatorname.iscsi

# 重启服务
systemctl restart iscsid

image.png

man iscsiadm
/EXAMPLES

第一步 发现设备

iscsiadm --mode discoverydb --type sendtargets --portal 172.16.40.221:922 --discover

image.png

第二步 载入设备

iscsiadm --mode node --targetname iqn.2025-07.cloud.euyan.demo:storage --portal 172.16.40.221:922 --login

image.png

第三步 挂载效果验证

image.png

第四步 硬盘分区

image.png

image.png

image.png

第五步 挂载分区

# 创建挂载点目录
mkdir /opt/block{1..2}

# 开机自动挂载
ecno '/dev/sdb1 /opt/block1 ext4 _netdev,defaults 0 2' >> /etc/fstab
ecno '/dev/sdc1 /opt/block2 ext4 _netdev,defaults 0 2' >> /etc/fstab
ecno '/dev/sdd1 /opt/block3 ext4 _netdev,defaults 0 2' >> /etc/fstab

# 挂载
mount -a

df -Th

image.png

image.png

# 查看服务状态
systemctl status iscsi

image.png

# 设置开机自动连接
iscsiadm -m node -T iqn.2025-07.cloud.euyan.demo:storage -p 172.16.40.221:922 --op=update -n node.startup -v automatic
  • 开机自动挂载成功

image.png

不是哥们 我要是windows客户端怎么添加呢?

第一步 windows电脑win+r 打开运行窗口 输入iscsicpl

第二步 修改客户端iqn image.png

第三步 发现设备 image.png

image.png

image.png

image.png

image.png

image.png

最终效果

image.png