当前位置: 首页 > news >正文

【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=nfsfirewall-cmd --permanent --add-service=rpc-bindfirewall-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 / asyncsync表示数据同步写入磁盘,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

示例

相关文章:

  • Linux面试题集合(6)
  • STM32外设DA实战-DAC + DMA 输出正弦波
  • 打卡Day28
  • 1.2 C++第一个程序
  • JavaScript splice() 方法
  • C语言斐波那契数列
  • 计算机视觉与深度学习 | Python实现EMD-CNN-LSTM时间序列预测(完整源码、数据、公式)
  • 【前端基础】11、CSS的属性特性(继承、层叠、元素类型、隐藏元素的四种方式)
  • 松下SMT贴片机选型与高效应用指南
  • webman用nginx代理静态json文件的异步跨域
  • 2025年数字孪生技术最新应用案例:跨领域实践与技术趋势
  • c++成员函数返回类对象引用和直接返回类对象的区别
  • java中的方法详解
  • Seata源码—5.全局事务的创建与返回处理二
  • Linux中的进程
  • Java-Collections类高效应用的全面指南
  • 如何安装双系统?即windows已经安装,如何安装ubuntu 22.04LTS
  • ​哈夫曼树(Huffman Tree)
  • 【Java ee初阶】HTTP(4)
  • 咖啡叶子病害检测数据集VOC+YOLO格式1468张4类别均为单叶子
  • 美国失去最后一个AAA评级,资产价格怎么走?美股或将触及天花板
  • 新时代,新方志:2025上海地方志论坛暨理论研讨会举办
  • 北邮今年本科招生将首次突破四千人,新增低空技术与工程专业
  • 第十届曹禺剧本奖上海揭晓,首次开放个人申报渠道
  • 多少Moreless:向世界展示现代中式家具的生活美学
  • 机器人为啥热衷“搞体育”,经济日报:是向加速融入日常生活发起的冲锋