目录
[一、NFS 核心功能与版本演进](#一、NFS 核心功能与版本演进)
[1.1 什么是 NFS?](#1.1 什么是 NFS?)
[1.2 NFS 版本差异](#1.2 NFS 版本差异)
[二、客户端挂载 NFS 共享](#二、客户端挂载 NFS 共享)
[2.1 查询服务器导出的共享目录](#2.1 查询服务器导出的共享目录)
[2.2 手动挂载 NFS 共享](#2.2 手动挂载 NFS 共享)
[2.3 持久挂载 NFS 共享](#2.3 持久挂载 NFS 共享)
[2.4 卸载 NFS 共享](#2.4 卸载 NFS 共享)
[三、自动挂载器 autofs](#三、自动挂载器 autofs)
[3.1 核心优势](#3.1 核心优势)
[3.2 配置 autofs 的步骤](#3.2 配置 autofs 的步骤)
[3.3 间接映射和直接映射的主要区别](#3.3 间接映射和直接映射的主要区别)
一、NFS 核心功能与版本演进
1.1 什么是 NFS?
NFS 是由 Sun 公司开发的分布式文件系统协议,它使得不同主机(无论是 Linux、UNIX 还是类 UNIX 系统)之间可以通过网络透明地共享文件和目录。
核心功能:
NFS 是一种分布式文件系统协议,主要功能包括:
1.允许远程计算机通过网络访问共享文件。
2.实现文件系统在客户端和服务器之间的透明访问。
3.支持文件的共享、读取和写入,使得多个计算机可以共享相同的文件系统。
1.2 NFS 版本差异
在红帽企业 Linux 9 中,默认使用 NFSv4.2,同时全面支持 NFSv3 和 NFSv4:
NFSv3 :依赖 RPC 协议,需要 rpcbind 服务,支持 TCP 和 UDP 传输。
NFSv4:摒弃了传统的 RPC 协议,仅支持 TCP 传输,通过单一端口进行通信,配置更简单,安全性更高,且支持更复杂的导出树结构。
二、客户端挂载 NFS 共享
如何安装与配置 NFS?
1.安装 NFS 服务器软件包:使用发行版的包管理工具安装 ( dnf install nfs-unils)nfs-utils。
2.配置 NFS 共享:编辑 /etc/exports 文件,写入共享目录、允许的客户端范围、权限选项(如 rw,sync)。
3.重启 NFS 服务:sudo systemctl restart nfs-utils
在使用 NFS 之前,客户端需要先安装必要的工具包:
dnf install nfs-utils
2.1 查询服务器导出的共享目录
在挂载之前,我们需要知道服务器上有哪些目录可以共享。
对于 NFSv3 :使用 showmount 命令,它依赖于服务器上的 rpcbind 服务。
showmount --exports server
对于 NFSv4 :直接挂载服务器的根目录 /,即可浏览其下所有导出的共享。
mkdir /mnt/nfs_root
mount server:/ /mnt/nfs_root
ls /mnt/nfs_root
2.2 手动挂载 NFS 共享
手动挂载是最直接的方式,适用于临时访问或测试场景。
创建挂载点 :用 mkdir 创建挂载点
mkdir /mnt/mountpoint
执行挂载命令 :NFS 共享必须由特权用户(root)进行挂载。-t nfs 指定文件系统类型,rw 表示读写权限,sync 强制同步写入。1. 临时挂载:使用 mount 命令挂载 NFS 共享 2.永久挂载:编辑 /etc/fstab 文件以添加挂载条目。
mount -t nfs -o rw,sync server:/export /mnt/mountpoint
验证挂载:
mount | grep nfs
2.3 持久挂载 NFS 共享
手动挂载在系统重启后会失效。要实现开机自动挂载,需要编辑 /etc/fstab 文件。
编辑 /etc/fstab,添加一行挂载信息:
server:/export /mnt/mountpoint nfs rw 0 0
server:/export:NFS 服务器地址和导出目录。
/mnt/mountpoint:本地挂载点。
nfs:文件系统类型。
rw:挂载选项。
0 0:表示无需 dump 备份和 fsck 检查。
测试挂载:
mount /mnt/mountpoint
此命令会读取 /etc/fstab 中的配置并完成挂载。
2.4 卸载 NFS 共享
使用 umount 命令卸载共享。如果提示 "设备忙",通常是因为有进程或 shell 正在访问挂载点目录。
# 正常卸载
umount /mnt/mountpoint
# 检查占用进程
lsof /mnt/mountpoint
# 强制卸载(紧急情况使用)
umount -f /mnt/mountpoint
三、自动挂载器 autofs
对于不常使用的 NFS 共享,/etc/fstab 的持久挂载会在开机时占用资源。autofs 服务提供了更智能的解决方案:按需挂载。它会在用户访问挂载点时自动挂载 NFS 共享,在闲置超时后自动卸载,既方便又高效。
3.1 核心优势
- 按需使用:访问时挂载,闲置时卸载,节省系统资源。
- 故障恢复:自动重新挂载,避免因网络波动导致的挂载失效。
- 负载均衡:可以配置多个服务器地址,自动选择最快的连接。
3.2 配置 autofs 的步骤
dnf install autofs nfs-utils
安装软件包:
创建主映射文件 :在 /etc/auto.master.d/ 目录下创建一个以 .autofs 结尾的文件,定义自动挂载的 "基础目录" 和对应的 "映射文件"。
间接映射示例(适合挂载点有层级关系的场景):
# /etc/auto.master.d/shares.autofs
/shares /etc/auto.demo
这表示所有自动挂载点都将位于 /shares 目录下,具体的挂载规则由 /etc/auto.demo 文件定义。
直接映射示例(适合挂载点是分散的绝对路径的场景):
# /etc/auto.master.d/direct.autofs
/- /etc/auto.direct
/ - 是固定标识,表示下面的映射文件中定义的是绝对路径的挂载点。
创建映射文件:映射文件定义了具体的挂载点名称、选项和源 NFS 路径。
间接映射文件 /etc/auto.demo:
work -rw,sync serverb:/shares/work
当访问 /shares/work 时,会自动挂载 serverb:/shares/work。
通配符技巧 :如果服务器导出了 /shares 下的多个子目录,可以使用通配符 * 和 & 简化配置:
* -rw,sync serverb:/shares/&
这样访问 /shares/project1 就会自动挂载 serverb:/shares/project1。
直接映射文件 /etc/auto.direct:
/mnt/docs -rw,sync serverb:/shares/docs
当访问 /mnt/docs 时,会自动挂载 serverb:/shares/docs。
启动并启用 autofs 服务:
systemctl enable --now autofs
3.3 间接映射和直接映射的主要区别
1.直接映射:挂载点是独立的绝对路径,主映射文件中必须用固定标识 /- 声明,适合挂载点分散独立的场景。
2.间接映射:挂载点是 基础目录 + 子挂载点的层级结构,主映射文件中声明的是基础挂载目录(如 /mnt/nfs),适合NFS 服务器导出一个目录中的多个子目录时,可将 autofs 配置为使用单个映射条目访问这些子目录其中的任何一个。
四、总结
手动挂载:适合临时访问或测试场景,操作直接,但重启后失效。
持久挂载 (/etc/fstab):适合需要长期稳定访问的核心共享,开机自动挂载。
自动挂载 (autofs):适合不常使用的共享或需要故障恢复的场景,按需挂载,智能高效。
版本选择:优先使用 NFSv4,它在性能、安全性和配置简便性上都优于 NFSv3。