【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

示例

相关推荐
阿巴~阿巴~5 分钟前
Linux基本命令篇 —— alias命令
linux·服务器·bash
UQI-LIUWJ12 分钟前
计算机组成笔记:缓存替换算法
笔记·缓存
xkroy18 分钟前
网络协议概念与应用层
网络
DKPT21 分钟前
Java设计模式之结构型模式(外观模式)介绍与说明
java·开发语言·笔记·学习·设计模式
筏.k30 分钟前
C++ 网络编程(14) asio多线程模型IOThreadPool
网络·c++·架构
编程小白gogogo42 分钟前
Spring学习笔记
笔记·学习·spring
qq_527887871 小时前
【学习笔记】Python中主函数调用的方式
笔记·学习
好名字更能让你们记住我1 小时前
Linux多线程(十二)之【生产者消费者模型】
linux·运维·服务器·jvm·windows·centos
门思科技1 小时前
设计可靠 LoRaWAN 设备时需要考虑的关键能力
运维·服务器·网络·嵌入式硬件·物联网
小高不会迪斯科1 小时前
MIT 6.824学习心得(2) 浅谈多线程和RPC
网络·网络协议·rpc