iSCSI文件存储

1274 字
6 分钟
iSCSI文件存储

iSCSI文件存储#

[TOC]


这个实验的核心其实就是**“把服务端的一块硬盘,通过网络共享给客户端,让客户端像使用自己的本地硬盘一样使用它”**

实验环境规划#

角色IP 地址功能硬件要求
服务端 (Target)10.0.0.101提供存储空间除了系统盘,额外挂载一块新硬盘 (例如 20G)
客户端 (Initiator)10.0.0.102使用存储空间只有系统盘即可

服务端准备工作#

  1. 开机状态下添加硬盘 (在虚拟机软件里操作):
    • 给服务端虚拟机添加一块新的 SCSI 硬盘(比如 20G)

image-20260414162301508
image-20260414162301508

Terminal window
[root@Server ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sr0 11:0 1 8.6G 0 rom
nvme0n1 259:0 0 50G 0 disk
├─nvme0n1p1 259:1 0 600M 0 part /boot/efi
├─nvme0n1p2 259:2 0 1G 0 part /boot
└─nvme0n1p3 259:3 0 48.4G 0 part
├─rl-root 253:0 0 46.4G 0 lvm /
└─rl-swap 253:1 0 2G 0 lvm [SWAP]
[root@Server ~]# lsscsi
[3:0:0:0] cd/dvd NECVMWar VMware SATA CD01 1.00 /dev/sr0
========"重启前"========
[root@Server ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
....
[root@Server ~]# lsscsi
[3:0:0:0] cd/dvd NECVMWar VMware SATA CD01 1.00 /dev/sr0
[32:0:0:0] disk VMware, VMware Virtual S 1.0 /dev/sda
'硬件准备就绪!'

配置 iSCSI 服务端#

这一步是核心,我们要把 sda 这块盘变成一个“网络硬盘”共享出去

Terminal window
1)安装软件
[root@Server ~]# dnf -y install targetcli
[root@Server ~]# systemctl enable --now target
Created symlink '/etc/systemd/system/multi-user.target.wants/target.service' '/usr/lib/systemd/system/target.service'.
2)进入配置模式
# 输入 `targetcli` 进入交互式配置界面
[root@Server ~]# targetcli
targetcli shell version 2.1.58
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
/>
3)创建后端存储 (把物理硬盘挂进来):
/backstores/block create sda /dev/sda
✅️通俗解释:给这块硬盘起个内部代号叫 `sda`
# 它对应的真实物理设备是 `/dev/sda`
4)创建 Target (创建一个网络共享房间)
/iscsi create iqn.2026-04.com.lab:server-sda
✅️通俗解释:创建一个房间,名字叫 `iqn.2026-04.com.lab:server-sda`
5)关联硬盘到房间 (把硬盘放进共享房间)
/iscsi/iqn.2026-04.com.lab:server-sda/tpg1/luns create /backstores/block/sda
✅️通俗解释:把刚才挂进来的硬盘,放进这个共享房间,让别人能拿到它
6)设置访问白名单 (谁可以进来拿)
/iscsi/iqn.2026-04.com.lab:server-sda/tpg1/acls create iqn.2026-04.com.lab:client-scsi
✅️通俗解释:设置一个白名单,只有拿着 `iqn.2026-04.com.lab:client-scsi` 这个钥匙的人才能进来
7)修改监听地址 (只在内网 IP 监听)
/iscsi/iqn.2026-04.com.lab:server-sda/tpg1/portals delete 0.0.0.0 3260
# 先删除默认的监听(监听所有 IP)
/iscsi/iqn.2026-04.com.lab:server-sda/tpg1/portals create 10.0.0.101 3260
# 改为监听服务端的内网 IP
✅️通俗解释:把共享房间的门开在 `10.0.0.101` 这个地址上,端口是 `3260` (iSCSI 默认端口)
✅️保存并退出
- 输入 `saveconfig` (保存配置)
- 输入 `exit` (退出配置界面)
/> /backstores/block create sda /dev/sda
Created block storage object sda using /dev/sda.
/> /iscsi create iqn.2026-04.com.lab:server-sda
Created target iqn.2026-04.com.lab:server-sda.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/> /iscsi/iqn.2026-04.com.lab:server-sda/tpg1/luns create /backstores/block/sda
Created LUN 0.
/> /iscsi/iqn.2026-04.com.lab:server-sda/tpg1/acls create iqn.2026-04.com.lab:client-scsi
Created Node ACL for iqn.2026-04.com.lab:client-scsi
Created mapped LUN 0.
/> /iscsi/iqn.2026-04.com.lab:server-sda/tpg1/portals delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260
/> /iscsi/iqn.2026-04.com.lab:server-sda/tpg1/portals create 10.0.0.101 3260
Using default IP port 3260
Created network portal 10.0.0.101:3260.
/> saveconfig
Configuration saved to /etc/target/saveconfig.json
/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup/.
Configuration saved to /etc/target/saveconfig.json

配置 iSCSI 客户端#

这一步是让客户端去“连接”服务端共享出来的硬盘

Terminal window
1)安装软件
[root@Client ~]# dnf -y install iscsi-initiator-utils
[root@Client ~]# systemctl restart iscsid
2)修改客户端名字 (关键一步)
# 客户端必须有一个名字,这个名字必须和服务端白名单里的名字一模一样!
[root@Client ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2026-04.com.lab:client-scsi
3)重启服务生效
[root@Client ~]# systemctl restart iscsid
4)发现服务端 (看看有没有共享房间)
[root@Client ~]# iscsiadm --mode discoverydb --type sendtargets --portal 10.0.0.101:3260 --discover
10.0.0.101:3260,1 iqn.2026-04.com.lab:server-sda
# 找到了!
5)登录连接 (把硬盘挂载到本地)
[root@Client ~]# iscsiadm --mode node --targetname iqn.2026-04.com.lab:server-sda --portal 10.0.0.101:3260 --login
Login to [iface: default, target: iqn.2026-04.com.lab:server-sda, portal: 10.0.0.101,3260] successful.
6)验证是否挂载成功
[root@Client ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
# 这就是服务端的那块硬盘!

使用硬盘 (格式化与挂载)#

这一步是把拿到的硬盘“铺上地砖”(格式化)并“装上门”(挂载)

Terminal window
1)分区 (可选,也可以不分区直接格式化整盘)
[root@Client ~]# parted -s /dev/sda mklabel gpt mkpart primary xfs 0% 100%
[root@Client ~]# parted /dev/sda print
Model: LIO-ORG sda (scsi)
Disk /dev/sda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
2)格式化 (铺地砖)
[root@Client ~]# mkfs.xfs /dev/sda1
meta-data=/dev/sda1 isize=512 agcount=4, agsize=1310655 blks .....
⚠️注意:这里操作的是 /dev/sda1,而不是 /dev/sda(整块盘)
3)创建挂载点
[root@Client ~]# mkdir /mnt/iscsi
4)临时挂载测试
[root@Client ~]# mount /dev/sda1 /mnt/iscsi
[root@Client ~]# df -h | tail -1
/dev/sda1 20G 424M 20G 3% /mnt/iscsi
5)写入自动挂载文件 (fstab)
[root@Client ~]# blkid /dev/sda1
/dev/sda1: UUID="d08b885b-3a36-47e4-a49e-9e68f40efe09" BLOCK_SIZE="512" TYPE="xfs" PARTLABEL="oldboy" PARTUUID="1adf5c02-4c76-42b8-8dff-ce6c8a73d061"
# 获取 UUID
[root@Client ~]# vim /etc/fstab
# 编辑 fstab
[root@Client ~]# tail -1 /etc/fstab
UUID=d08b885b-3a36-47e4-a49e-9e68f40efe09 /mnt/iscsi xfs _netdev,defaults 0 0
⚠️特别注意:这里必须加 `_netdev`
# 意思是“等网络启动好了再挂载这块盘”,否则开机可能卡住
6)测试并刷新配置
[root@Client ~]# mount -a
# 如果没有报错,说明配置成功

测试验证#

Terminal window
1)写个文件试试
[root@Client ~]# echo "实验成功!" > /mnt/iscsi/test.txt
[root@Client ~]# cat /mnt/iscsi/test.txt
实验成功!
2)重启验证
[root@Client ~]# reboot
[root@Client ~]# Connection closing...Socket close
[root@Client ~]# df -h | grep iscsi
/dev/sda1 20G 424M 20G 3% /mnt/iscsi
[root@Client ~]# cat /mnt/iscsi/test.txt
实验成功!

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

iSCSI文件存储
https://www.kpyun.fun/posts/services/storage/storage01/
作者
久棹
发布于
2026-03-14
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
久棹
只要胆子大,天天寒暑假!
公告
欢迎来到久棹的技术小站!本站专注 Linux 运维学习笔记分享,如有问题欢迎交流探讨 🎉
分类
标签
站点统计
文章
98
分类
11
标签
203
总字数
244,453
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.13.5
文章许可
CC BY-NC-SA 4.0

文章目录