第2章:进阶Linux系统——第4节:配置与管理NFS服务器

目录

一、项目概述

[1. 项目背景](#1. 项目背景)

[2. 学习目标](#2. 学习目标)

[二、NFS 基础认知](#二、NFS 基础认知)

[1. 定义](#1. 定义)

[2. 核心优点](#2. 核心优点)

[3. 核心依赖](#3. 核心依赖)

[三、NFS 工作原理(必背)](#三、NFS 工作原理(必背))

[四、NFS 服务端部署(完整步骤)](#四、NFS 服务端部署(完整步骤))

[1. 检查与安装软件包](#1. 检查与安装软件包)

[2. 配置主配置文件 /etc/exports](#2. 配置主配置文件 /etc/exports)

配置格式

客户端指定方式

常用权限选项(高频)

配置示例

[3. 服务管理命令](#3. 服务管理命令)

[4. 共享目录刷新(exportfs 命令)](#4. 共享目录刷新(exportfs 命令))

[5. 防火墙与 SELinux 配置](#5. 防火墙与 SELinux 配置)

[五、NFS 客户端配置](#五、NFS 客户端配置)

[1. 查看服务器共享目录](#1. 查看服务器共享目录)

[2. 手动挂载 NFS](#2. 手动挂载 NFS)

[3. 自动挂载(autofs)](#3. 自动挂载(autofs))

部署步骤

[六、企业级 NFS 实战案例](#六、企业级 NFS 实战案例)

需求

服务端配置

[客户端配置(autofs 自动挂载)](#客户端配置(autofs 自动挂载))

七、项目总结

八、扩展知识(进阶必备)

[1. NFS 版本](#1. NFS 版本)

[2. 生产环境权限最佳实践](#2. 生产环境权限最佳实践)

[3. 常见故障排查](#3. 常见故障排查)

[4. NFS 与 Samba 区别](#4. NFS 与 Samba 区别)

[5. 开机自动挂载(fstab 方式)](#5. 开机自动挂载(fstab 方式))




一、项目概述

1. 项目背景

学院多台 Linux 服务器需跨主机文件共享 (软件资料、课程资料、科研资料),Windows 用共享文件夹,Linux 系统间优先使用 NFS(网络文件系统) 实现透明文件访问。

2. 学习目标

  • 理解 NFS 工作原理与依赖关系
  • 掌握 NFS 服务端安装、配置、启动、管理
  • 掌握客户端挂载、自动挂载(autofs)
  • 能完成企业级 NFS 部署与权限控制
  • 排查 NFS 常见故障



二、NFS 基础认知

1. 定义

NFS(Network File System) :网络文件系统,由 SUN 公司开发,遵循 RFC1904、RFC1813 标准,基于 TCP/IP 实现网络资源共享,客户端可透明读写远程 NFS 服务器文件,如同访问本地文件。

2. 核心优点

  1. 节省本地磁盘空间:公共数据集中存储,网络统一访问
  2. 统一家目录:用户 home 目录放 NFS 服务器,全网可用
  3. 位置透明:服务器文件物理位置变更,不影响客户端访问
  4. 精细权限控制:可对不同客户端设置不同读写权限

3. 核心依赖

NFS 必须依赖 RPC(远程过程调用) 实现端口映射:

  • rpcbind :提供端口映射服务,固定端口 111
  • nfs-utils:NFS 服务主程序,负责共享发布与文件访问



三、NFS 工作原理(必背)

  1. 服务器启动 rpcbind,监听 111 端口
  2. 服务器启动 nfs,随机占用多个端口,并向 rpcbind 注册端口与功能对应关系
  3. 客户端启动 rpcbind,向服务器 rpcbind(111)请求 NFS 端口
  4. 服务器 rpcbind 返回 NFS 对应端口给客户端
  5. 客户端通过该端口与 NFS 建立连接,进行数据传输

关键术语

  • 导出(export):NFS 服务器共享目录对外发布
  • 挂载(mount):客户端将远程共享目录映射到本地目录



四、NFS 服务端部署(完整步骤)

1. 检查与安装软件包

复制代码
# 检查是否已安装
rpm -q nfs-utils rpcbind

# 未安装则用 yum 安装
yum install -y nfs-utils rpcbind

2. 配置主配置文件 /etc/exports

该文件是 NFS 唯一主配置文件,默认空,需手动编写。

配置格式
复制代码
共享目录  客户端1(权限选项)  [客户端2(选项) ...]
客户端指定方式
  • 单 IP:192.168.4.100
  • 网段:192.168.0.0/24
  • 单主机名:www.zhiyuan.com
  • 域内所有主机:*.zhiyuan.com
  • 所有主机:*
常用权限选项(高频)
分类 选项 说明
访问权限 ro 只读
rw 可读可写
用户映射 root_squash root 映射为匿名用户(默认)
no_root_squash root 保持 root 权限
all_squash 所有用户映射为匿名用户
同步策略 sync 数据同步写入磁盘(安全,默认)
async 先写内存,再刷磁盘(高效)
端口 secure 仅允许 <1024 端口(默认)
insecure 允许 >1024 端口
配置示例
复制代码
# 示例1:指定网段读写,其他只读
/opt/aaa  172.16.36.0/24(rw,async)  *(ro)

# 示例2:指定域读写,所有用户匿名,同步写入
/opt/bbb  *.zhiyuan.com(rw,insecure,all_squash,sync)

3. 服务管理命令

复制代码
# 查看 RPC 端口注册
rpcinfo -p

# 启动(必须先 rpcbind,再 nfs)
systemctl start rpcbind
systemctl start nfs

# 停止/重启/状态
systemctl stop nfs
systemctl restart nfs
systemctl status rpcbind nfs

# 开机自启
systemctl enable rpcbind
systemctl enable nfs

4. 共享目录刷新(exportfs 命令)

修改 /etc/exports 后无需重启服务,用 exportfs 刷新:

复制代码
# 重新加载所有共享并显示过程
exportfs -rv

# 停止所有共享
exportfs -auv

5. 防火墙与 SELinux 配置

复制代码
# 临时关闭防火墙
systemctl stop firewalld

# 临时关闭 SELinux
setenforce 0

# 永久关闭 SELinux(修改配置文件)
vim /etc/selinux/config
SELINUX=permissive



五、NFS 客户端配置

1. 查看服务器共享目录

复制代码
showmount -e 服务器IP
# 例:showmount -e 172.16.42.188

2. 手动挂载 NFS

复制代码
# 创建挂载点
mkdir /aaa

# 挂载
mount -t nfs 服务器IP:/共享目录 /本地挂载点
# 例:mount -t nfs 172.16.42.188:/opt/aaa /aaa

# 卸载
umount /aaa

3. 自动挂载(autofs)

autofs 是按需挂载、空闲自动卸载的守护进程,避免手动 mount/umount。

部署步骤

安装 autofs

复制代码
yum install -y autofs

配置主文件 /etc/auto.master

复制代码
# 格式:挂载父目录  子配置文件  超时时间
/mnt/nfs  /etc/auto.nfs  --timeout=60

编写子配置文件 /etc/auto.nfs

复制代码
# 格式:子目录  -fstype=nfs  服务器IP:/共享目录
soft    -fstype=nfs,rw  172.16.42.188:/var/soft
course  -fstype=nfs,rw  172.16.42.188:/var/course

启动服务

复制代码
systemctl restart autofs
systemctl enable autofs

验证

复制代码
# 进入目录自动挂载
cd /mnt/nfs/soft
ls
# 查看挂载
df -TH



六、企业级 NFS 实战案例

需求

服务器:172.16.42.188

  • /var/soft:192.168.4.0/24 读写,其他只读
  • /var/course、/var/scientific:*.zhiyuan.com 读写,所有用户匿名,insecure,sync

服务端配置

创建目录

复制代码
mkdir -p /var/soft /var/course /var/scientific

编写 /etc/exports

复制代码
/var/soft        192.168.4.0/24(rw,sync)  *(ro)
/var/course      *.zhiyuan.com(rw,insecure,all_squash,sync)
/var/scientific  *.zhiyuan.com(rw,insecure,all_squash,sync)

重启服务

复制代码
systemctl restart rpcbind nfs
exportfs -rv

验证共享

复制代码
showmount -e 172.16.42.188

客户端配置(autofs 自动挂载)

复制代码
# 安装 autofs
yum install -y autofs

# 配置主文件
echo "/study  /etc/auto.nfs" >> /etc/auto.master

# 配置子文件
cat >> /etc/auto.nfs << EOF
soft       -fstype=nfs,rw  172.16.42.188:/var/soft
course     -fstype=nfs,rw  172.16.42.188:/var/course
scientific -fstype=nfs,rw  172.16.42.188:/var/scientific
EOF

# 重启服务
systemctl restart autofs



七、项目总结

  1. NFS = 网络文件系统,依赖 rpcbind(111 端口)
  2. 核心配置文件:/etc/exports
  3. 服务启动顺序:先 rpcbind,后 nfs
  4. 配置刷新用 exportfs -rv,无需重启服务
  5. 客户端:showmount 查看 → mount 手动挂载 /autofs 自动挂载
  6. 权限要点:账号 UID/GID 尽量一致,避免权限错乱
  7. 生产环境:开启防火墙需放行 nfs、rpcbind 相关端口



八、扩展知识(进阶必备)

1. NFS 版本

  • NFSv3:默认,多用 UDP,性能高
  • NFSv4:基于 TCP,有安全认证,跨网段更稳定,支持防火墙挂载指定版本:mount -t nfs -o vers=4 服务器IP:/目录 /挂载点

2. 生产环境权限最佳实践

  • 公共目录:all_squash,anonuid/anongid 指定统一匿名用户
  • 管理员目录:no_root_squash,限制指定 IP
  • 数据安全:必用 sync,禁止 async 防止断电丢数据

3. 常见故障排查

  1. showmount 无法查看共享

    • 原因:防火墙未关、rpcbind 未启动、SELinux 拦截
    • 解决:关闭防火墙 / SELinux,重启 rpcbind、nfs
  2. 挂载提示权限拒绝

    • 原因:/etc/exports 配置错误、目录本地权限不足
    • 解决:检查配置,chmod 755 共享目录
  3. 写入失败

    • 原因:配置 ro、root_squash 导致权限不足、服务器目录无写权限
    • 解决:改为 rw,no_root_squash,chmod 777 测试

4. NFS 与 Samba 区别

  • NFS:Linux ↔ Linux 首选,速度快、配置简单
  • Samba:Linux ↔ Windows 互访,支持 Windows 共享协议

5. 开机自动挂载(fstab 方式)

复制代码
vim /etc/fstab
服务器IP:/共享目录  /挂载点  nfs  defaults  0 0
mount -a
相关推荐
橘子编程2 小时前
操作系统原理:从入门到精通全解析
java·linux·开发语言·windows·计算机网络·面试
ZhiqianXia2 小时前
Pytorch 学习笔记(8): PyTorch FX
pytorch·笔记·学习
科技小花2 小时前
AI重塑与全球合规:2026年主流数据治理平台差异化解析
大数据·运维·人工智能·数据治理
wjp@0012 小时前
SQL server导出导入数据
运维·服务器·数据库
xuhaoyu_cpp_java2 小时前
Boyer-Moore 投票算法
java·经验分享·笔记·学习·算法
中设智控2 小时前
石化行业设备完整性管理数字化:破解运维痛点的核心方案
运维·设备管理·设备全生命周期管理
亚空间仓鼠2 小时前
OpenEuler系统常用服务(三)
linux·运维·服务器·网络
Agent产品评测局2 小时前
企业预算管理自动化落地,编制管控全流程实现方案 —— 2026企业级智能体选型与架构深度解析
运维·人工智能·ai·架构·自动化
雨浓YN3 小时前
OPC UA 通讯开发笔记 - 基于Opc.Ua.Client
笔记·c#