![fstab 不会自动挂载 NFS 远程文件夹](https://linux22.com/image/101335/fstab%20%E4%B8%8D%E4%BC%9A%E8%87%AA%E5%8A%A8%E6%8C%82%E8%BD%BD%20NFS%20%E8%BF%9C%E7%A8%8B%E6%96%87%E4%BB%B6%E5%A4%B9.png)
我无法在引导期间自动安装远程目录。我在 Ubuntu 14.04 LTS 下使用 NFS 协议。服务器是192.168.1.1
,客户端是192.168.1.2
/etc/exports
服务器端的设置是
/home/export 192.168.1.2(ro,no_root_squash,sync)
尽管\home\user
客户端的目录是加密的,但请注意,本文中提到的所有目录都未加密。服务器计算机一直处于开机状态,两台机器可以互相 ping 通。另请注意,在两台计算机中,该\home
目录都安装在自己的分区上。
命令行运行良好,我可以在安装点后看到远程内容
sudo mount 192.168.1.1:/home/export /home/import/server1
。
像如何正确编辑网络驱动器的/etc/fstab?
我想通过编辑来安装网络驱动器/etc/fstab
。但是,当我将其中任何一行添加到/etc/fstab
[1]192.168.1.1:/home/export /home/import/server1 nfs rsize=8192,wsize=8192,timeo=14 0 0
[2]192.168.1.1:/home/export /home/import/server1 nfs auto 0 0
[3]192.168.1.1:/home/export /home/import/server1 nfs auto, rsize=8192,wsize=8192,timeo=14 0 0
[4]192.168.1.1:/home/export /home/import/server1 nfs defaults 0 0
我需要启动一个sudo mount -a
手动启动才能获取服务器端的视图。这违背了我和那些人的期望这篇 U&L 帖子以及。
如何让自动挂载功能自行运行?
启示/抄袭披露:
[1]https://help.ubuntu.com/14.04/serverguide/network-file-system.html
[3] = [1] + [2]
[4] 模仿本地设备分区的挂载选项etc/fstab
答案1
如果您的 mount -a 选项有效,那么您应该在 fstab 中添加 _netdev。
192.168.1.1:/home/export /home/import/server1 nfs defaults,_netdev 0 0
还要确保“chkconfig netfs on”
答案2
在以下位置创建一个文件:
/etc/network/if-up.d/fstab
将其添加到其中:
#!/bin/sh mount -a
使文件可执行:
sudo chmod +x /etc/network/if-up.d/fstab
您在启动时指示系统在
mount -a
网络堆栈启动和操作后发出 a ,如果它类似于 fstab 中的 cifs 挂载,则这就是您的共享在启动时未挂载的原因。
从这个答案:在 18.04 中启动时未加载 /etc/fstab 中的 nfs 共享 在Ubuntu 论坛。
答案3
长话短说:然后尝试sudo apt install openvswitch-switch-dpdk
重新启动看看是否有效。
我在 Ubuntu 22.04 上遇到了同样的问题并设法解决了它。
按照链接(在 18.04 中启动时未加载 /etc/fstab 中的 nfs 共享) 共享于答案的@LiberiFatali,我发现有人提到:
对我来说,解决方案是编辑 netplan 配置(/etc/netplan/50-cloud-init.yaml)文件并将接口设置为
optional: false
这应该是 netplan 的默认行为,但我决定尝试一下。编辑配置并执行后netplan apply
,我收到警告:Cannot call Open vSwitch: ovsdb-server.service is not running.
尽管这个帖子说这是一个错误,警告可以忽略,我不喜欢警告并试图通过 摆脱它sudo apt install openvswitch-switch-dpdk
。重新启动后,nfs 就神奇地挂载了!我进一步恢复了 netplan 配置文件中的更改,以确认只需安装该软件包就可以使 fstab 自动安装工作。
我不是 Linux 系统专家,也不知道奇迹是如何发生的,但对于相同条件的系统来说可能值得一试。祝你好运。
答案4
正如众多答案所示,原因可能有多种。挖掘日志文件可能是强制性的。
就我而言(这是在 RHEL 7 上),这是由依赖循环引起的。 Systemd 已将 fstab 条目转换为依赖于 nfs-server 服务的安装单元,反之亦然。我不完全明白为什么,但就我而言,这并不是解决问题所必需的。
这是我在 /var/log/messages 中找到的内容
systemd: Found dependency on home.mount/start
systemd: Found dependency on nfs-server.service/start
systemd: Breaking ordering cycle by deleting job home.mount/start
systemd: Job home.mount/start deleted to break ordering cycle starting with nfs-server.service/start
两者中的哪一个被删除是随机的,这意味着安装有时可以在启动时工作,有时则不能。
就我而言,nfs 服务器一开始就不应该处于活动状态。这使得解决方案变得简单:
systemctl disable nfs-server.service
如果您确实需要 nfs-server,则需要以不同的方式打破依赖循环。我没有确切的答案,但总体轮廓是(当然,替换您的安装单元的名称等):
找出systemd创建的服务的详细信息,并将其变成您控制的挂载单元:
systemctl cat home.mount >/etc/systemd/system/home.mount
删除 /etc/fstab 中的条目。 home.mount 文件将取代它。
根据需要编辑 home.mount 文件以删除循环依赖项。这是我无能为力的地方,因为我没有深入调查问题出在哪里。
您现在可以测试您的坐骑:
systemctl daemon-reload
umount /home
mount -a
除了使用 mount -a 之外,你还可以使用以下命令挂载目录
systemctl start home.mount
测试安装后,重新启动系统以查看问题是否消失。由于安装有时是随机的,我建议检查 /var/log/messages 以确保不再有循环依赖,并且重新启动不是一次而是多次。