访问导出的 NFS 目录
网络文件系统(NFS)是由 Linux、UNIX 及类似操作系统使用的互联网标准协议,可作为它们的原生网络文件系统。NFS 是支持原生 Linux 权限和文件系统属性的开放标准。
默认情况下,红帽企业 Linux 9 使用 NFS 版本 4.2。RHEL 全面支持 NFSv3 和 NFSv4 协议。NFSv3 可能使用 TCP 或 UDP 传输协议,但 NFSv4 仅支持 TCP 连接。
NFS 服务器导出目录。NFS 客户端将导出的目录挂载到现有的本地挂载点目录。NFS 客户端可以通过多种方式挂载导出的目录:
- 使用 mount 命令手动挂载。
- 通过在 /etc/fstab 文件中配置条目,在启动时持久挂载。
- 通过配置自动挂载器方法按需挂载。
自动挂载器方法(包括 autofs 服务和 systemd.automount 功能)将在 Automount Network‑Attached Storage 小节中讨论。您必须安装 nfs‑utils 软件包,以获取客户端工具进行手动挂载,或进行自动挂载以获取导出的 NFS 目录。
[root@host ~] dnf install nfs-utils
查询服务器的导出 NFS 目录
从 NFSv3 升级到 NFSv4,NFS 协议发生了显著变化。每种协议版本使用不同的方法来查询服务器。
NFSv3 使用的是 RPC 协议,这需要支持 NFSv3 连接的文件服务器才能运行 rpcbind 服务。NFSv3 客户端通过服务器上端口 111 连接到 rpcbind 服务,以请求 NFS 服务。服务器使用 NFS 服务的当前端口进行响应。使用 showmount 命令查询基于 RPC 的 NFSv3 服务器上的可用导出。
[root@host ~]# showmount –exports server
Export list for server
/shares/test1
/shares/test2
NFSv4 协议消除了将传统 RPC 协议用于 NFS 事务的情况。在仅支持 NFSv4 的服务器上使用 showmount 命令会超时且收不到响应,因为服务器上没有运行 rpcbind 服务。但是,查询 NFSv4 服务器比查询 NFSv3 服务器更为简单。
NFSv4 引入了包含服务器导出目录的所有路径的导出树。要查看所有导出的目录,请挂载服务器导出树的根目录 (/)。挂载导出树的根目录可为所有导出的目录提供可浏览的路径,作为树根目录的子级,但不挂载(“绑定”)任何导出的目录。
[root@host ~]# mkdir /mountpoint
[root@host ~]# mount server:/ /mountpoint
[root@host ~]# ls /mountpoint
手动挂载导出的 NFS 目录
在您确定要挂载的 NFS 导出后,请创建本地地挂载点(如果尚不存在)。虽然 /mnt 目录可用作临时挂载点,但建议的做法是不要将 /mnt 用于长期或持久挂载。
[root@host ~]# mkdir /mountpoint
与本地卷文件系统一样,挂载 NFS 导出以访问其内容。NFS 共享只能由特权用户临时或永久挂载。
[root@host ~]# mount -t nfs -o rw,sync server:/export /mountpoint
- -t nfs 选项指定 NFS 文件系统类型。但是,当 mount 命令检测到 server:/export 语法时,该命令默认为 NFS 类型。使用 -o 标志,您可以将逗号分隔选项列表添加到 mount 命令。在示例中,rw 选项指定以读 / 写访问权限挂载导出的文件系统。sync 选项指定与导出的文件系统的同步事务。强烈建议将此方法用于必须完成事务否则返回失败的所有生产网络挂载。
使用手动 mount 命令是不持久的。当系统重新启动时,该 NFS 导出仍不会挂载。手动挂载可用于提供对导出目录的临时访问,或者在持久挂载之前测试挂载 NFS 导出。
持久挂载导出的 NFS 目录
要永久挂载 NFS 导出,请编辑 /etc/fstab 文件,并使用与手动挂载类似的语法添加挂载条目。
[root@host ~]# vim /etc/fstab
…
server:/export /mountpoint nfs rw 0 0
然后,您可以仅使用挂载点来挂载 NFS 导出。mount 命令从 /etc/fstab 文件中的匹配条目获取 NFS 服务器和挂载选项。
[root@host ~]# mount /mountpoint
卸载导出的 NFS 目录
以特权用户身份,使用 umount 命令卸载 NFS 导出。卸载共享不会删除其在 /etc/fstab 文件中的条目(如果存在此文件)。/etc/fstab 文件中的条目是持久的,会在启动过程中重新挂载。
[root@host ~]# umount /mountpoint
挂载的目录有时可能无法卸载,并返回错误显示设备繁忙。至于设备忙碌的原因,可能是因为应用在文件系统内使文件保持打开,或者某个用户的 shell 在所挂载文件系统的根目录或其下级目录中具有工作目录。
要解决此错误,请检查您自己的活动 shell 窗口,然后使用 cd 命令退出挂载的文件系统。如果之后尝试卸载文件系统仍然失败,则使用 lsof(列出打开的文件)命令来查询挂载点。lsof 命令返回打开的文件名和使文件保持打开的进程的列表。
[root@host ~]# lsof /mountpoint
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
program 5534 user txt REG 252.4 910704 128 /home/user/program
使用此信息,正常关闭正在使用此文件系统上文件的所有进程,然后重新尝试卸载。仅在紧急情况下,无法正常关闭应用时可通过终止进程来关闭文件。或者,使用 umount -f 选项强制卸载,这可能会导致丢失所有打开文件的未写入数据。




