NFS服务和autofs自动挂载服务

相关命令一览表

systecmctl status nfs-utils showmount -e 192.168.197.133 showmount -elocalhost
systemctl status nfs-server
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd
firewall-cmd --reload dnf install nfs-server
systemctl start rpcbind systemctl status rpcbind
mount 192.168.197.133:/nfs /mount
firewall-cmd --permanent --add-service=nfs vim /etc/exports
`exportfs -r
这些命令的联系是什么,nfs到底是怎么提供服务的?

🧭 一、什么是 NFS?

**NFS(网络文件系统)**是一种允许客户端通过网络访问远程服务器上的文件系统的协议。它最初由 Sun Microsystems 开发,常用于 Linux 和 UNIX 系统间的文件共享。

简言之:让一台机器的文件夹,像本地磁盘一样,被另一台机器挂载和使用


🌐 二、NFS 的网络工作原理(核心)

1️⃣ 网络通信协议:

层级协议
应用层NFS 协议(如 NFSv3、NFSv4)
表示层XDR(External Data Representation)
会话层Portmap / rpcbind(管理动态端口)
传输层TCP 或 UDP(NFSv3 支持 UDP,NFSv4 强制用 TCP)
网络层IP

2️⃣ 工作过程:

▶ 服务端启动 NFS:
  1. rpcbind(或 portmap)监听 111 端口,管理 RPC 动态端口映射。

  2. nfs-servermountdnfsd 等服务根据配置文件 /etc/exports 决定共享哪些目录。

  3. NFS 服务注册自己使用哪些端口,告知 rpcbind。

▶ 客户端挂载 NFS 共享:
  1. 发出挂载请求(mount -t nfs server:/data /mnt

  2. 客户端联系 rpcbind 查询服务端 NFS 使用的端口

  3. mountd 验证权限(IP 或子网)==这一步实在服务端进行的

  4. 建立 TCP 会话,NFS 协议层开始传输文件元信息、数据、权限

三、 具体配置:

客户端配置

挂载远程主机到本地

#### 挂载远程主机的目录
法一:直接挂载
	mount 192.168.197.133:/nfs /mount
法二:使用autofs进行挂载

[root@101 ~]# dnf install autofs  ;  安装autofs服务
[root@101 ~]# echo "/mount   /etc/auto.nfs" >> /etc/auto.master
[root@101 ~]# echo "nfs  192.168.197.133:/nfs" >> /etc/auto.nfs
[root@101 ~]# systemctl start autofs
autofs自动挂载配置文件有哪些?怎么写?

autofs服务配置文件有/etc/auto.master主配置文件)和/etc/auto.nfsd映射文件

/etc/auto.master 配置文件书写格式
<挂载根目录> <映射文件> <挂载选项>

字段含义
挂载根目录客户端本地的挂载点目录,如 /mnt/nfs
映射文件描述子目录如何挂载,如 /etc/auto.nfs
挂载选项可选,如 --timeout=60 表示 60 秒未访问自动卸载

示例 1:挂载 NFS 主目录

/etc/auto.master 文件

/mnt/nfs   /etc/auto.nfs   --timeout=120
  • 当访问 /mnt/nfs/dir1autofs 会读取 /etc/auto.nfsdir1 的挂载规则进行挂载。
  • 如果超过 120 秒未访问,自动卸载。
/etc/auto.master 映射文件书写格式
<子目录名>  -<挂载选项>  <服务器:/共享路径>

示例 /etc/auto.nfs 写法

proj1   -rw,sync   192.168.1.100:/data/project1
proj2   -ro        192.168.1.100:/data/project2

说明:

  • 访问 /mnt/nfs/proj1 时,会挂载 192.168.1.100:/data/project1 到本地。
  • -rw,sync 表示读写、同步写入。这个字段可以省略

服务端配置

需要启用的服务
nfs-utils 是 nfs 服务的核心组件,提供了管理 nfs 服务的命令和配置文件。
nfs-server 包含在 nfs-utils 组件中,但是要单独启用,其中包含了 rpc.mountd,rpc.statd, rpc.nfsd和rpcbind等服务.
	rpcbind: 管理端口映射
	rpc.mountd: 处理客户端挂载
	rpc.nfsd: 核心服务,处理nfs请求。
	rpc.statd: 处理锁定

命令:

[root@133 ~]# dnf install nfs.utils           ;安装nfs服务核心组件
[root@133 ~]# systemctl start nfs.utils       ;启用nfs服务
[root@133 ~]# systemctl start nfs-server      ;启用nfs-server服务(需单独启用)
[root@133 ~]# firewall-cmd --add-service=nfs      ;允许nfs服务的流量通过防火墙
[root@133 ~]# firewall-cmd --add=service=rpc-bind ;允许rpcbind流量通过。
[root@133 ~]# firewall-cmd --add=service=mountd   ;允许mountd流量通过,处理客户端挂载
[root@133 ~]# echo "/nfs *(rw)"  >> /etc/exports  ;配置nfs服务的配置文件,
[root@133 ~]# export -r                ;重新从配置文件中读取配置,刷新作用。
[root@133 ~]# export -v                ;查看nfs服务的共享状态
[root@133 ~]# showmount -e 192.168.197.133  ; 

`showmount -e IP 就是用来远程查看某台 NFS 服务器当前对外共享了哪些目录、共享给谁的工具,极适合客户端前期确认与调试。

nfs配置文件有哪些?怎么写?

nfs服务的配置文件只有/etc/exports

/etc/exports配置文件的书写方法
<要共享的文件>   <哪些主机可以访问> <访问权限>

示例

# 示例
/data 192.168.1.0/24(rw,sync,no_root_squash)
  • rw:可读写
  • sync:同步写入
  • no_root_squash:客户端 root 保持 root 身份
  • all_squash:客户端所有用户都映射为 nobody

三、一些其他的问题?

为什么客户端的firewalld没有允许任何关于nfs的端口和服务,却还可以访问服务端的文件?

客户端访问 NFS 服务端,只需要服务端开放 NFS 所需的端口即可,客户端不需要主动开放端口

🔍 原因是:

NFS 是典型的“客户端主动发起、服务端被动响应”的架构。

客户端作为“请求者”,只需要发送请求给服务端,而服务端需要开放端口接收这些请求。

其他相似的案例

在做防火墙 REJECTdefault 区别的案例时,通过icmp协议传输的ping指令也是只需要目标主机的firewalld允许icmp报文的echo-request就能ping通。换言之:只要能进去,就能原路返回

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值