【Linux笔记】nfs网络文件系统与autofs(nfsdata、autofs、autofs.conf、auto.master)

一、nfs概念

NFS(Network File System,网络文件系统) 是一种由 Sun Microsystems 于1984年开发的分布式文件系统协议,允许用户通过网络访问远程计算机上的文件,就像访问本地文件一样。它广泛应用于 Unix/Linux 系统,支持跨平台文件共享,是构建分布式存储和集群环境的重要工具。


NFS 的核心特性

  1. 透明访问

    • 用户通过挂载(mount)远程目录到本地,操作远程文件如同操作本地文件。

    • 示例:mount -t nfs 192.168.1.100:/shared /mnt/nfs

  2. 跨平台兼容

    • 支持多种操作系统(Linux、Unix、macOS),Windows 可通过第三方工具(如 NFS Client for Windows)兼容。
  3. 基于 RPC(Remote Procedure Call)

    • 使用 RPC 协议实现客户端与服务端的通信,依赖 portmap/rpcbind 服务管理端口映射。
  4. 无状态协议(NFSv3)

    • 服务端不记录客户端状态,依赖客户端维护操作状态(如文件锁需额外协议支持)。
  5. 有状态协议(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

示例

相关推荐
云海听雷33 分钟前
C语言中字符串函数的详细讲解
c语言·笔记·学习
sun00770041 分钟前
windows 10 做服务器 其他电脑无法访问,怎么回事?
运维·服务器·网络
wb1891 小时前
Linux远程连接服务
linux·运维·服务器·笔记
烧火大爷1 小时前
现代计算机图形学Games101入门笔记(三)
笔记
2401_896008191 小时前
TCP连接状态说明
运维·服务器·网络
人类恶.1 小时前
C 语言学习笔记(数组)
c语言·笔记·学习
利刃大大1 小时前
【网络编程】十、详解 UDP 协议
网络·网络协议·udp
夏季疯1 小时前
学习笔记:黑马程序员JavaWeb开发教程(2025.4.7)
java·笔记·学习
Jerry&Louis1 小时前
【Ubuntu】Waydroid-Linux安卓模拟器安装
linux·ubuntu
yangpan0111 小时前
ubuntu 24.04安装ros1 noetic
linux·运维·ubuntu