NFS与Autofs快速讲解-从原理到实战配置

NFS的功能特点

网络文件系统(NFS)是一种分布式文件系统协议,允许客户端计算机通过网络访问远程文件系统,如同访问本地文件。其主要功能特点包括:

跨平台共享:支持不同操作系统(如Linux、Unix、Windows)之间共享文件,实现异构环境下的数据互通。

透明访问:用户和应用程序无需修改即可访问远程文件,操作方式与本地文件一致。

高性能:通过缓存机制减少网络传输,提升读写效率。

可扩展性:支持多客户端同时访问同一文件系统,适合大规模集群环境。

权限管理:基于标准的Unix文件权限或Kerberos认证,保障数据安全。

RPC在NFS中的作用

远程过程调用(RPC)是NFS实现的核心机制,其作用包括:

协议封装:NFS将文件操作(如读写、删除)封装为RPC请求,由客户端发送到服务端执行。

状态无关性:NFS设计为无状态协议,RPC的每次调用独立,服务端不保存客户端状态,故障恢复更简单。

端口动态分配:RPC通过端口映射器(portmapper)动态分配端口号,解决NFS服务端端口不固定的问题。

NFS访问原理

挂载阶段

客户端通过mount命令发起挂载请求,RPC将请求转发至服务端的mountd守护进程。服务端验证客户端权限后,返回文件系统句柄,客户端将其与本地目录关联。

文件操作阶段

客户端应用发起文件操作,内核的NFS客户端模块将其转换为RPC调用,发送至服务端的nfsd守护进程。服务端执行操作并返回结果。

缓存机制

客户端缓存常用文件属性和文件数据,通过定期检查服务端的时间戳确保缓存一致性。

协议版本差异

NFSv3:使用异步写入,提升性能但可能丢失数据;依赖UDP/TCP传输。

NFSv4:引入复合操作、强一致性和集成安全(Kerberos支持)。

Autofs 核心功能

按需挂载:仅在访问挂载目录时自动挂载文件系统,超时后自动卸载。

动态管理:支持热更新配置,无需重启服务。

多协议支持:支持 NFS、SMB/CIFS、FTP 等网络文件系统协议。

1.在172.25.254.10主机中(服务器端)

a.关闭火墙

b. 安装nfs服务

复制代码
[root@node1 ~]# dnf install nfs-utils.x86_64 -y

c.启动服务

bash 复制代码
[root@node1 ~]# systemctl enable --now nfs-server
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.

d. 共享目录

bash 复制代码
[root@node1 ~]# mkdir  /mm	
[root@node1 ~]# chmod  777 /mm
[root@node1 ~]# vim /etc/exports
/mm    *(rw,sync,no_root_squash)

[root@node1 ~]# exportfs -rv
exporting *:/mm

rw :read-write,读写权限;只读写 ro

sync :同步写入:客户端写文件,数据立刻同步到服务器磁盘;

对比 async 异步,先放缓存再落盘,速度快但断电丢数据,生产推荐 sync

no_root_squash :客户端 root 保持 root 权限,可修改文件。

默认 root_squash :客户端 root 用户访问共享时,会映射成服务器匿名用户 nfsnobody,无写入权限;

all_squash:所有客户端用户全部映射为匿名用户

anonuid:指定匿名用户 UID/GID

2.在172.25.254.20(客户端)

bash 复制代码
[root@node2 ~]# dnf install nfs-utils -y
[root@node2 ~]# showmount -e 172.25.254.10
Export list for 172.25.254.10:
/mm *

[root@node2 ~]# mount 172.25.254.10:/mm   /mnt/

[root@node2 ~]# df -h
文件系统             容量  已用  可用 已用% 挂载点
devtmpfs             4.0M     0  4.0M    0% /dev
tmpfs                870M     0  870M    0% /dev/shm
tmpfs                348M  5.2M  343M    2% /run
/dev/nvme0n1p3        96G  3.0G   93G    4% /
/dev/nvme0n1p1       960M  319M  642M   34% /boot
/dev/sr0              12G   12G     0  10% /rhel9
tmpfs                174M     0  174M    0% /run/user/0
172.25.254.10:/mm   96G  3.0G   93G    4% /mnt

showmount -e 172.25.254.10

-e:export,查看目标服务器开放的 NFS 共享列表 报错排查:防火墙、nfs-server 未启动、exports 配置错误

BASH 复制代码
[root@node2 ~]# umount /mnt

[root@node2 ~]# dnf install autofs-1:5.1.7-60.el9.x86_64  -y

[root@node2 ~]# vim /etc/autofs.conf
timeout = 3

[root@node2 ~]# vim /etc/auto.master
/nfs    /etc/auto.mm

[root@node2 ~]# vim /etc/auto.mm
mm     -ro     172.25.254.10:/mm
# ro 只读

[root@node2 ~]# systemctl restart autofs.service
[root@node2 ~]# systemctl enable  autofs.service
Created symlink /etc/systemd/system/multi-user.target.wants/autofs.service → /usr/lib/systemd/system/autofs.service.


#测试:
[root@node2 ~]# cd /nfs/mm

[root@node2 mm]# df
文件系统               1K-块     已用     可用 已用% 挂载点
devtmpfs                4096        0     4096    0% /dev
tmpfs                 890352        0   890352    0% /dev/shm
tmpfs                 356144     5296   350848    2% /run
/dev/nvme0n1p3      99638272  3109900 96528372    4% /
/dev/nvme0n1p1        983040   326192   656848   34% /boot
/dev/sr0            12462174 12462174        0  10% /rhel9
tmpfs                 178068        0   178068    0% /run/user/0
172.25.254.10:/mm 99638272  3108096 96530176    4% /nfs/mm

[root@node2 mm]# cd
#退出后等待4秒

[root@node2 ~]# df
文件系统          1K-块     已用     可用 已用% 挂载点
devtmpfs           4096        0     4096    0% /dev
tmpfs            890352        0   890352    0% /dev/shm
tmpfs            356144     5292   350852    2% /run
/dev/nvme0n1p3 99638272  3109900 96528372    4% /
/dev/nvme0n1p1   983040   326192   656848   34% /boot
/dev/sr0       12462174 12462174        0  10% /rhel9
tmpfs            178068        0   178068    0% /run/user/0
相关推荐
sxstj2 小时前
Ubuntu 完整安装并启用 Flatpak 教程
linux·运维·ubuntu
天疆说2 小时前
Ubuntu 26.04 下 Intel Meteor Lake 核显 + NPU 驱动配置与 PyTorch NPU 推理实测
linux·pytorch·ubuntu
mounter6253 小时前
突破单点限制:BPF 多跟踪点高效附加机制与新 ftrace 架构解析
linux·ebpf·linux kernel·kernel·ftrace
刘某的Cloud3 小时前
Galera Cluster部署 mariadb 节点down机,log sequence number恢复
linux·运维·数据库·负载均衡·mariadb·集群·高可用
小此方3 小时前
Re:Linux系统篇(五十四)线程篇 · 七:互斥锁的底层实现原理:从硬件上下文、原子交换指令(Swap)到并发封装实战
linux·运维·驱动开发
郭涤生3 小时前
rootfs 详解与裁剪优化记录
linux·c++·bsp
铁锚4 小时前
解决Ubuntu执行sudo时 unable to resolve host 报错问题
linux·数据库·ubuntu
二宝哥4 小时前
CentOS 7.9 离线安装 Nginx 并配置openssl1.1.1
linux·nginx·centos
程序员老陆4 小时前
说一说FFmpeg6在Linux平台的编译
linux·运维·服务器·ffmpeg
IT摆渡者5 小时前
VM EXSI7.0存储硬盘故障处理
大数据·linux·github