目录
[1. 手动挂载(临时使用)](#1. 手动挂载(临时使用))
[2. 持久挂载(开机自动挂载)](#2. 持久挂载(开机自动挂载))
[3. 自动挂载(按需挂载)](#3. 自动挂载(按需挂载))
什么是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
处理"设备繁忙"错误
如果卸载时出现"设备繁忙"的错误,可能是以下原因:
-
有程序正在使用文件:某个应用程序打开了共享中的文件
-
终端位于挂载目录内:当前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共享用户上传的文件,实现文件统一存储。
重要概念总结
-
导出(Export):服务器上被共享的目录
-
挂载(Mount):客户端将网络共享连接到本地目录的过程
-
挂载点(Mount Point):客户端本地用于访问共享的目录
-
持久挂载:通过/etc/fstab配置,系统重启后自动重新挂载
-
同步写入(sync):确保数据立即写入磁盘,更安全但稍慢
注意事项
-
生产环境强烈建议使用
sync选项,避免数据丢失 -
NFSv4只支持TCP协议,连接更可靠
-
卸载前确保没有程序正在使用共享中的文件
-
Kerberos保护的共享需要额外配置,安全性更高