NFS与iSCSI远程挂载
远程挂载分为文件存储NFS和块存储iSCSI,二者核心区别:NFS共享目录(服务端做好文件系统);iSCSI共享裸磁盘(客户端自行格式化)。
一、NFS 和 iSCSI 核心对比
| 项目 | NFS | iSCSI |
|---|---|---|
| 存储类型 | 文件存储(File) | 块存储(Block) |
| 共享对象 | 目录 / 文件夹(服务端已经建好文件系统) | 裸块磁盘(服务端只提供硬盘,无文件系统) |
| 格式化在哪做 | 服务端提前建好文件系统,客户端不用格式化 | 客户端拿到磁盘后,自己 mkfs 创建文件系统 |
| 访问粒度 | 读写文件、文件夹 | 读写整块磁盘、块扇区 |
| 网络层 | TCP,NFS服务,主端口2049 | TCP,iSCSI协议,模拟SATA硬盘,端口3260 |
| 客户端看到的东西 | 挂载点,直接看到里面的文件 | 新的块设备 /dev/sdX(虚拟硬盘) |
| 多客户端同时挂载 | ✅支持多机器同时挂载读写(需要文件锁) | ❌禁止多客户端同时挂载同一个 LUN!会损坏文件系统(集群文件系统除外) |
| RHCSA服务端软件 | nfs‑utils | targetcli / target |
| RHCSA客户端软件 | nfs‑utils | iscsi‑initiator‑utils |
| 防火墙服务 | nfs、mountd、rpc‑bind | iscsi‑target |
二、NFS服务部署
NFS:把服务端的目录,通过网络挂载到客户端,多台机器共用同一个文件夹。
配置文件:/etc/exports
NFS配置完整流程
- 安装软件包
- 准备共享目录、权限
- 修改exports配置共享规则
- 启动nfs‑server服务
- 防火墙放行对应服务
- 客户端查看、临时挂载、持久化挂载
1)服务端操作
# 1.安装软件
yum install -y nfs-utils
# 2.准备共享目录
mkdir -p /shares/webapp
# 修改目录属主,例如给apache用户id=48
chown 48 /shares/webapp
#3.编辑共享配置 /etc/exports
vim /etc/exports
#写入内容
/shares/webapp 10.1.8.0/24(rw,no_root_squash)
#参数说明
# rw:读写;ro只读
# no_root_squash:客户端root用户不压缩,保留root权限
# root_squash:客户端root映射为nfsnobody(默认)
#重新读取exports配置文件,不需要重启服务
exportfs -r
#4.启动并开机自启nfs服务
systemctl enable nfs-server.service --now
#5.防火墙放行nfs相关服务
firewall-cmd --permanent --add-service=nfs --add-service=rpc-bind --add-service=mountd
firewall-cmd --reload
#查看本机发布的共享目录
exportfs
2)客户端操作
#1.客户端安装工具
yum install -y nfs-utils
#2.查看服务端发布的共享
showmount -e 10.1.8.10
#3.创建本地挂载点
mkdir -p /var/www/html
#临时挂载
mount -t nfs 10.1.8.10:/shares/webapp /var/www/html
#持久化挂载写入/etc/fstab
#_netdev参数:网络挂载,系统网络就绪之后再挂载,防止开机进入紧急模式
echo '10.1.8.10:/shares/webapp /var/www/html nfs defaults,_netdev 0 0' >> /etc/fstab
#生效fstab配置
mount -a
#验证挂载
df -h /var/www/html
⚠️NFS排坑:
- 客户端挂载失败优先检查防火墙;
/etc/exports修改后必须执行exportfs -r;- fstab远程挂载务必加
_netdev,否则开机磁盘检测网络未就绪会进入emergency紧急模式。
三、iSCSI服务部署
iSCSI:把远端服务器的一块裸磁盘,通过网络映射成本地硬盘。
- 服务端角色:target,对外共享块存储;端口3260
- 客户端角色:initiator,登录使用远端磁盘
- 注意:客户端拿到的是裸磁盘,必须自己格式化文件系统
iSCSI完整流程
- 服务端安装targetd、targetcli;准备裸磁盘(分区/整块磁盘)
- targetcli交互式:创建backstores后端存储 → 创建target IQN → 添加ACL访问控制 → 添加LUN映射磁盘
- 服务端启动target服务,防火墙放行iscsi‑target
- 客户端:修改initiatorname.iscsi配置客户端IQN
- 客户端discovery扫描target、login登录,识别/dev/sdX块设备
- 客户端格式化、挂载;fstab持久化挂载加
_netdev - 客户端卸载、登出、删除记录的清理操作
1)iSCSI服务端配置
#1.安装软件
yum install -y targetd targetcli
#2.进入交互式配置targetcli,操作完退出自动保存配置
targetcli
#①创建后端块存储,后端使用/dev/sdb裸盘
/> cd /backstores/block
/backstores/block> create webapp /dev/sdb
#②创建iSCSI target(IQN标识)
/> cd /iscsi
/iscsi> create iqn.2026-09.cloud.laoma.server:webapp-data
#③进入target的tpg1配置ACL与LUN
/iscsi> cd iqn.2026-09.cloud.laoma.server:webapp-data/tpg1/
#ACL:指定允许登录的客户端IQN
/iscsi/iqn.20...app-data/tpg1> acls/ create iqn.2026-09.cloud.laoma.server:webapp
#LUN:把后端存储webapp映射给target
/iscsi/iqn.20...app-data/tpg1> luns/ create /backstores/block/webapp
#ls查看完整配置,确认无误后exit退出,配置自动保存到/etc/target/saveconfig.json
/> exit
#3.启动target服务,开机自启
systemctl enable target --now
#4.防火墙放行iscsi‑target服务
firewall-cmd --permanent --add-service=iscsi-target
firewall-cmd --reload
2)iSCSI客户端配置
#1.客户端安装initiator工具
yum install -y iscsi-initiator-utils
#2.配置客户端IQN,必须和服务端ACL里面配置的IQN完全一致
vim /etc/iscsi/initiatorname.iscsi
#修改这一行
InitiatorName=iqn.2026-09.cloud.laoma.server:webapp
#3.扫描远端iSCSI target
iscsiadm -m discovery -t sendtargets -p 10.1.8.10
#4.登录target,会识别出新的块设备
iscsiadm -m node -T iqn.2026-09.cloud.laoma.server:webapp-data -l
#5.查看识别出来的磁盘
lsblk
#6.格式化裸磁盘
mkfs.xfs /dev/sdb
#7.创建挂载点,临时挂载
mkdir -p /var/www/html
mount /dev/sdb /var/www/html
#8.fstab持久挂载,必须添加_netdev
echo '/dev/sdb /var/www/html xfs defaults,_netdev 0 0' >> /etc/fstab
mount -a
df -h /var/www/html
3)iSCSI客户端清理(断开共享)
关机/更换环境操作顺序不能乱:先卸载 → fstab删除条目 → 登出target → 删除node记录
#1.卸载挂载点
umount /var/www/html
#2.编辑/etc/fstab删除iSCSI挂载行
vim /etc/fstab
#3.登出target会话
iscsiadm -m node -T iqn.2026-09.cloud.laoma.server:webapp-data -u
#4.删除本机保存的target记录,重启后不会自动登录
iscsiadm -m node -T iqn.2026-09.cloud.laoma.server:webapp-data -o delete
四、重要避坑总结
- NFS
- 多客户端同时读写共享目录,应用程序需要支持文件锁,否则文件损坏;
- fstab远程挂载务必加上
_netdev; - 修改
/etc/exports执行exportfs -r生效。
- iSCSI
- ❌严禁多台客户端同时登录同一个LUN,文件系统直接损坏;
- IQN服务端ACL和客户端initiatorname必须完全匹配,否则拒绝登录;
- 客户端拿到的是裸盘,必须手动mkfs格式化;
- fstab挂载iSCSI磁盘必须写
_netdev; - 清理顺序:umount → 修改fstab → logout登出 → delete删除node记录。
- 防火墙:NFS放行nfs、rpc‑bind、mountd;iSCSI服务端放行iscsi‑target。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/2503_92430124/article/details/166848323




