如果 NFS 服务器暂时不可用或者在系统启动时它不可达,那么在 /etc/fstab
中简单配置的自动挂载将不会起作用。这种情况下,你可能需要一个更为动态的解决方案来监控 NFS 服务器的可用性,并在它重新恢复服务时自动挂载共享目录。
你可以使用 autofs
来实现这个目标。autofs
是一种 Linux 服务,它允许你在访问时自动挂载文件系统,并在一段时间的不活动后自动卸载它们。这对于网络文件系统(如 NFS)特别有用。
下面将通过一个安装使用实例,来介绍如何使用 autofs 来动态挂载NFS共享目录。在这个例子中,我们将会把来自 192.168.0.168 的三个NFS共享目录(电影、剧集、music)挂载到本地服务器(movies、tvshows、music)目录。此类场景适用于PVE宿主机黑群晖作为NFS服务器+LXC容器运行Jellyfin/Emby实现硬解播放的需求。当然 autofs 带给家庭、企业的便利使用不限于此,请自行探索。
配置教程
以下安装配置过程在 NFS 客户端(这里指 PVE LXC 容器)主机上进行,具体安装步骤如下:
-
安装 autofs 和 nfs 客户端软件:
如果你的系统还没有安装 autofs 和 NFS 客户端软件,你可以使用包管理器来安装。对于基于 Debian 的系统(如 Ubuntu),使用以下命令:
sudo apt-get update sudo apt-get install autofs nfs-common
对于基于 RHEL 的系统(如 CentOS),使用以下命令:
sudo yum install autofs nfs-utils
-
配置 autofs:
创建一个新的 auto.master 配置文件或编辑现有的文件。这个文件通常位于 /etc/auto.master。在这个文件中,你需要指定挂载点和 map 文件。
使用文本编辑器打开 auto.master 文件:
sudo nano /etc/auto.master
在文件中,添加以下内容:
/mnt /etc/auto.media --timeout=300 --ghost
这告诉 autofs,我们将使用一个叫做
auto.media
的 map 文件来配置在/mnt
目录下的挂载点,并设置超时为 300 秒。选项--ghost
意味着在文件系统实际被请求之前,都可以看到预期的目录结构。而默认情况只有成功挂载才会显示目录结构。保存并关闭文件。
-
创建和配置 map 文件:
创建一个新的 map 文件,我们将其命名为
auto.media
。使用文本编辑器创建并打开这个文件:
sudo nano /etc/auto.media
添加以下内容到这个文件中:
# 媒体文件推荐的挂载选项 (nfsvers指NFS服务端版本,请根据自己情况修改) movies -fstype=nfs,rw,async,noatime,nfsvers=4,soft,timeo=600,retrans=3 192.168.0.168:/volume1/video/电影 tvshows -fstype=nfs,rw,async,noatime,nfsvers=4,soft,timeo=600,retrans=3 192.168.0.168:/volume1/video/剧集 music -fstype=nfs,rw,async,noatime,nfsvers=4,soft,timeo=600,retrans=3 192.168.0.168:/volume1/music
保存并关闭文件。
-
设置适当的权限:
sudo chmod 644 /etc/auto.media
-
重启 autofs 服务:
#基于Debian的系统 sudo service autofs restart #基于RHEL的系统 sudo systemctl restart autofs
-
测试挂载点:
可使用
ls
命令来分别查看这些目录的内容。ls /mnt/movies ls /mnt/tvshows ls /mnt/music
注意事项
autofs
服务会在访问这些目录时自动挂载它们,并在一段时间不使用后自动卸载。你设置的超时时间是决定卸载的时间。- 当你使用
autofs
来管理NFS挂载时,你应该将相关的挂载配置从/etc/fstab
文件中移除,以避免可能的问题,并只通过autofs
来管理这些挂载。
写在最后
总结一下,通过使用 autofs,你可以确保即使在系统启动时 NFS 服务器不可用,或者在系统运行时 NFS 服务器变得不可用的情况下,NFS 共享也会在服务器恢复后自动挂载。这为网络文件系统提供了一个更加健壮和灵活的自动挂载解决方案。