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