一、nfs概念
NFS(Network File System,网络文件系统) 是一种由 Sun Microsystems 于1984年开发的分布式文件系统协议,允许用户通过网络访问远程计算机上的文件,就像访问本地文件一样。它广泛应用于 Unix/Linux 系统,支持跨平台文件共享,是构建分布式存储和集群环境的重要工具。
NFS 的核心特性
-
透明访问
-
用户通过挂载(
mount
)远程目录到本地,操作远程文件如同操作本地文件。 -
示例:
mount -t nfs 192.168.1.100:/shared /mnt/nfs
-
-
跨平台兼容
- 支持多种操作系统(Linux、Unix、macOS),Windows 可通过第三方工具(如 NFS Client for Windows)兼容。
-
基于 RPC(Remote Procedure Call)
- 使用 RPC 协议实现客户端与服务端的通信,依赖 portmap/rpcbind 服务管理端口映射。
-
无状态协议(NFSv3)
- 服务端不记录客户端状态,依赖客户端维护操作状态(如文件锁需额外协议支持)。
-
有状态协议(NFSv4)
- NFSv4 及更高版本支持有状态连接,集成文件锁管理,减少对额外服务的依赖。
二、nfs相关命令
1、部署nfs服务端
注意:本篇的命令配置涉及两个虚拟机(模拟一个服务端,一个客户端)的配置和测试,请自行克隆准备两个虚拟机哦!
(1)安装nfs相关软件并启用(nfs服务端进行)
安装需要搭建软件仓库,详情请见之前博客
客户端和服务端软件都是此软件,此刻是在服务端安装
dnf install nfs-utils -y
示例

启用服务
systemctl enable --now nfs-server
示例

(2)火墙允许(nfs服务端进行)
1)火墙放行
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd
示例

2)火墙重启
firewall-cmd --reload
示例

(3)客户端也安装软件(客户端进行)
步骤和服务端的大差不差,不再赘述,只过一下命令代码
dnf install nfs-utils -y
示例

(4)测试(客户端进行)
showmount 192.168.76.100
示例

看到Hosts on 192.168.76.100:这个输入时,即为设置完成
2、nfs共享资源
NFS(网络文件系统)的共享资源管理 是通过服务端导出目录并配置访问规则,使客户端能够通过网络挂载和使用这些目录。
(1)建立共享目录(nfs服务端进行)
mkdir /nfsdata
示例

(2)给予这个目录权限(nfs服务端进行)
chmod 777 /nfsdata/
示例

(3)进入并编辑/etc/exports(nfs服务端进行)
进入:
vim /etc/exports
示例

修改编辑:
示例

这两行都是共享策略,对于nfsdate目录写入其中一行即可
额外补充:/etc/exports的常用参数值表
选项 | 说明 |
---|---|
rw / ro |
读写或只读权限(默认ro )。 |
sync / async |
sync 表示数据同步写入磁盘,async 允许延迟写入(性能更高,但风险更大)。 |
no_root_squash |
允许客户端root用户保留权限(默认root_squash ,将root映射为匿名用户)。 |
subtree_check |
检查父目录权限(可能影响性能,建议no_subtree_check )。 |
anonuid /anongid |
指定匿名用户的UID/GID(如anonuid=1001 )。 |
(4)生效该共享策略(nfs服务端进行)
exportfs -rv
示例

(5)测试(客户端进行)
先挂个载:
mount 192.168.76.100:/nfsdata /media
示例

查看:
df -h /media
示例

三、利用autofs解决客户挂载占用服务器资源问题
当客户端和服务器之间没有数据交互时,挂载仍然存在,这样会大大消耗服务器上的资源 ,所以autofs 可以解决以上问题,变成:用的时候自动挂载,不用的时候自动卸载
1、安装autofs软件(客户端进行)
安装前,我们先取消挂载先前的/media,为了测试配好autofs后,其是否会自动挂载:
umount /media
示例

安装:
安装需要搭建软件仓库,详情请见之前博客
dnf install autofs -y
示例

启动服务:
systemctl enable --now autofs.service
示例

测试:看看设置完autofs后,其会不会自动挂载
此时我们进入这里
cd /net/192.168.76.100/nfsdata
示例

然后df查看
示例

就会发现已经自动挂载了
默认等待300秒后自动取消挂载,当然这个300秒时间是可以调整的,下面就介绍怎么调整
2、调整自动取消挂载时间(客户端进行)
进入/etc/autofs.conf:
vim /etc/autofs.conf
示例

修改编辑:找到timeout这个选项,进行修改,默认值为300,我们这里修改成5,即5秒后自动取消挂载
示例

3、重启服务(客户端进行)
systemctl restart autofs
示例

这样之后,自动取消挂载时间就变为5秒了,5秒后自动取消挂载
4、autofs策略编写(客户端进行)
我们要做到,把网络共享目录 (此ip即为博主的nfs服务端主机IP地址,自行变换成自己的ip)192.168.76.100:/nfsdata ------挂载到---- > 客户端的/share/nfs
(1)编写autofs自动挂载的主策略文件
进入
vim /etc/auto.master
示例

修改编辑
示例

auto.lin的结尾.lin为博主自己的,你们可以换成其他名字
(2)编写子挂载策略文件
进入
vim /etc/auto.lin(结尾的.lin刚刚说过,是博主自己的,你们这里写刚刚自己创建的auto.xxx即可)
示例

此文件在刚刚(1)中的主策略文件中指定过
修改编辑
示例

(3)重启服务
systemctl restart autofs
示例

(4)测试
移动到此路径,然后df查看:
cd /share/nfs
示例
