前言
通过iSCSI技术将服务器硬盘挂载为本地磁盘,是一种高效便捷的扩容方案。
当你连接公司网络时,可以借助iSCSI协议将远程存储设备映射为本地硬盘,就像直接插了一块物理硬盘一样。这些磁盘可以被分区、格式化,甚至安装操作系统,使用体验与本地磁盘几乎无异。
技术优势
✔ 高性能:基于千兆/万兆网络,传输速度接近本地SSD
✔ 灵活扩展:无需拆机,即可动态增加存储空间
✔ 跨平台支持:Windows、macOS、Linux均可使用
典型应用场景
- 开发测试:快速挂载服务器磁盘,运行虚拟机或数据库
- 数据备份:利用企业级存储实现高可靠性备份
- 临时扩容:无需购买新硬盘,直接利用闲置存储资源
数据存储技术
- DSA 直接附加存储 [电脑直插硬盘]
- 本地磁盘接口:
| 接口类型 | 转速 (RPM) | 典型容量范围 | 主要特点 | 适用场景 |
|---|---|---|---|---|
| IDE | 5400/7200 | 已淘汰 | 并行接口,40/80针排线,速度慢 | 早期PC(2000年代前) |
| SATA | 5400/7200 | 500GB-16TB | 串行接口,7针线缆,性价比高 | 消费级PC/企业级近线存储 |
| SAS | 10000/15000 | 300GB-4TB | 双端口全双工,支持扩展器,高可靠性 | 企业级关键业务存储 |
| SCSI | 15000(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报文进行路由和转发,并且提供端到端的透明可靠传输。
IPSAN部署
- 共享三个设备
- sdb1 block 10G
- sdb2 block 10G
- sdb3 file 3G
硬盘分区
生成文件磁盘
针对没有磁盘的情况 生成一个文件磁盘
安装iscsi服务
apt install targetcli-fb
systemctl start target
systemctl enable target
systemctl status target
[Linux 服务端配置]
通过targetcli命令设置设备共享
- 将设备加入backstores存储库
- 设置设备全球唯一标识名称IQN
- 设置tpg组定义 (谁可以从哪个端口访问IQN标识对应的哪些设备)
技能一 如何添加设备
输入
targetcli进入交互界面
技能二 如何删除设备
添加两块共享硬盘分区 sdb1/sdb2
添加共享文件磁盘 sdb3
技能三 如何共享/创建iqn
- 创建全球唯一标识设备名
- iqn命名规范
- iqn.年-月.二级域名倒写.共享名
- iqn命名规范
技能四 细化TAG组
- 客户端名称 需要是
iqn.2025-07.cloud.euyan.demo:client1 - 后续实验使用的是
iqn.2025-07.cloud.euyan.demo:storage
- 将block1设备共享给客户端client1
- 将其他设备都共享
- 修改访问端口
服务端效果
- 最后exit退出保存
- systemctl restart target
[Liunx 客户端配置]
- 设置客户端iqn设备名称
- 安装客户端服务并启动
- 访问共享
- 分区、格式化、自动挂载
安装iscsi客户端
sudo apt update
sudo apt install open-iscsi
# 查看iqn
cat /etc/iscsi/initiatorname.iscsi
# 重启服务
systemctl restart iscsid
man iscsiadm
/EXAMPLES
第一步 发现设备
iscsiadm --mode discoverydb --type sendtargets --portal 172.16.40.221:922 --discover
第二步 载入设备
iscsiadm --mode node --targetname iqn.2025-07.cloud.euyan.demo:storage --portal 172.16.40.221:922 --login
第三步 挂载效果验证
第四步 硬盘分区
第五步 挂载分区
# 创建挂载点目录
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
# 查看服务状态
systemctl status iscsi
# 设置开机自动连接
iscsiadm -m node -T iqn.2025-07.cloud.euyan.demo:storage -p 172.16.40.221:922 --op=update -n node.startup -v automatic
- 开机自动挂载成功
不是哥们 我要是windows客户端怎么添加呢?
第一步 windows电脑win+r 打开运行窗口 输入iscsicpl
第二步 修改客户端iqn
第三步 发现设备