网络文件系统(NFS)完全指南:从入门到实战

目录

什么是NFS?

NFS版本介绍

安装NFS客户端工具

查询可用的NFS共享

NFSv3查询方式

NFSv4查询方式

NFS挂载的三种方式

[1. 手动挂载(临时使用)](#1. 手动挂载(临时使用))

[2. 持久挂载(开机自动挂载)](#2. 持久挂载(开机自动挂载))

[3. 自动挂载(按需挂载)](#3. 自动挂载(按需挂载))

卸载NFS共享

基本卸载命令

处理"设备繁忙"错误

实际应用场景举例

场景1:开发团队共享代码

场景2:Web服务器共享上传目录

重要概念总结

注意事项


什么是NFS?

网络文件系统(NFS)是Linux、UNIX等操作系统使用的标准网络文件共享协议。简单来说,它允许不同的计算机在网络上共享文件和目录,就像访问本地文件一样方便。

想象一下:公司里有好几台服务器,如果每台服务器都要单独存储文件,管理起来会很麻烦。使用NFS后,可以设置一台主服务器存放所有文件,其他服务器通过网络直接访问这些文件,大大简化了文件管理。


NFS版本介绍

  • NFSv4.2:红帽企业Linux 9的默认版本,功能最全

  • NFSv4:仅支持TCP连接,安全性更好

  • NFSv3:支持TCP和UDP两种传输协议


安装NFS客户端工具

在使用NFS之前,需要先安装必要的软件包:

bash 复制代码
# 安装nfs-utils软件包
[root@host ~]# dnf install nfs-utils

这个软件包包含了NFS客户端所需的所有工具。


查询可用的NFS共享

NFSv3查询方式

NFSv3使用RPC协议,需要通过showmount命令查询:

bash 复制代码
# 查看服务器上所有可用的共享目录
[root@host ~]# showmount --exports server
Export list for server
/shares/test1
/shares/test2
/shares/data

NFSv4查询方式

NFSv4更加简单,直接挂载根目录即可查看所有共享:

bash 复制代码
# 创建本地挂载点目录
[root@host ~]# mkdir /mnt/nfs-root

# 挂载服务器的根目录
[root@host ~]# mount server:/ /mnt/nfs-root

# 查看所有共享目录
[root@host ~]# ls /mnt/nfs-root
shares
data
home

NFS挂载的三种方式

1. 手动挂载(临时使用)

bash 复制代码
# 基本挂载命令
[root@host ~]# mount -t nfs server:/shared_folder /mnt/nfs-share

# 实际使用时可以简化为(系统会自动识别为NFS类型)
[root@host ~]# mount server:/shared_folder /mnt/nfs-share

# 带选项的挂载(推荐生产环境使用)
[root@host ~]# mount -o rw,sync server:/shared_folder /mnt/nfs-share

参数说明:

  • rw:以读写权限挂载

  • sync:同步写入,确保数据安全

  • server:/shared_folder:NFS服务器和共享路径

  • /mnt/nfs-share:本地挂载点目录

注意: 手动挂载在系统重启后会丢失,适合临时测试使用。

2. 持久挂载(开机自动挂载)

编辑/etc/fstab文件,添加挂载配置:

bash 复制代码
# 编辑fstab文件
[root@host ~]# vim /etc/fstab

# 添加如下行:
server:/shared_folder /mnt/nfs-share nfs rw,sync 0 0

文件内容示例:

bash 复制代码
# 设备源           挂载点         文件系统类型  选项      备份 检查
server:/data      /mnt/nfs-data   nfs         rw,sync   0    0

挂载配置:

bash 复制代码
# 使用mount命令挂载(系统会自动读取fstab配置)
[root@host ~]# mount /mnt/nfs-share

3. 自动挂载(按需挂载)

自动挂载器(如autofs)只在需要访问时才自动挂载NFS共享,节省系统资源。这部分内容较复杂,适合进阶学习。


卸载NFS共享

基本卸载命令

bash 复制代码
# 卸载NFS共享
[root@host ~]# umount /mnt/nfs-share

处理"设备繁忙"错误

如果卸载时出现"设备繁忙"的错误,可能是以下原因:

  1. 有程序正在使用文件:某个应用程序打开了共享中的文件

  2. 终端位于挂载目录内:当前shell的工作目录在挂载点或其子目录中

解决方法:

bash 复制代码
# 检查自己是否在挂载目录内
[root@host ~]# pwd
如果显示在挂载点目录,使用cd命令退出:
[root@host ~]# cd /

# 使用lsof命令查看哪些进程在使用文件
[root@host ~]# lsof /mnt/nfs-share

# 正常关闭使用文件的进程,然后重新卸载

# 紧急情况下强制卸载(可能丢失数据)
[root@host ~]# umount -f /mnt/nfs-share

实际应用场景举例

场景1:开发团队共享代码

  • NFS服务器:192.168.1.100

  • 共享目录:/projects

  • 开发人员挂载点:/mnt/team-projects

bash 复制代码
# 手动挂载测试
mount 192.168.1.100:/projects /mnt/team-projects

# 确认可用后,添加到fstab实现开机自动挂载
echo "192.168.1.100:/projects /mnt/team-projects nfs rw,sync 0 0" >> /etc/fstab

场景2:Web服务器共享上传目录

多台Web服务器通过NFS共享用户上传的文件,实现文件统一存储。


重要概念总结

  1. 导出(Export):服务器上被共享的目录

  2. 挂载(Mount):客户端将网络共享连接到本地目录的过程

  3. 挂载点(Mount Point):客户端本地用于访问共享的目录

  4. 持久挂载:通过/etc/fstab配置,系统重启后自动重新挂载

  5. 同步写入(sync):确保数据立即写入磁盘,更安全但稍慢


注意事项

  • 生产环境强烈建议使用sync选项,避免数据丢失

  • NFSv4只支持TCP协议,连接更可靠

  • 卸载前确保没有程序正在使用共享中的文件

  • Kerberos保护的共享需要额外配置,安全性更高

相关推荐
emiya_saber1 小时前
Linux 硬盘分区管理
java·linux·网络
大聪明-PLUS3 小时前
Docker 的底层工作原理
linux·嵌入式·arm·smarc
WDLOVELONGLONG3 小时前
与实验室服务器互相ping
linux·服务器·网络
间彧3 小时前
Linux常用命令速查表,拿走,不谢
linux
BXS_null3 小时前
windows、linux/ubuntu 系统运用.net core使用Selenium WebDriver实现自动化测试
linux·ubuntu·.netcore
ayaya_mana4 小时前
Linux告别搜索卡顿:解决“Argument list too long”与实现文件内容秒搜
linux·运维·list
lqqjuly5 小时前
Lidar调试记录Ⅰ之Ubuntu22.04虚拟机安装ROS2(无坑版)
linux·ros2·lidar·ubuntu22.04
I · T · LUCKYBOOM5 小时前
构建软RAID磁盘阵列
linux·运维·服务器
IT小白农民工5 小时前
安装SAP Business one for HANA之前的准备
linux·经验分享·sap