fstab 不会自动挂载 NFS 远程文件夹

fstab 不会自动挂载 NFS 远程文件夹

我无法在引导期间自动安装远程目录。我在 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

[2]https://help.ubuntu.com/community/SettingUpNFSHowTo#Mounting_NFS_shares_in_encrypted_home_won.27t_work_on_boot

[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

  1. 在以下位置创建一个文件: /etc/network/if-up.d/fstab

  2. 将其添加到其中:

    #!/bin/sh
    mount -a
    
  3. 使文件可执行:

    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 以确保不再有循环依赖,并且重新启动不是一次而是多次。

相关内容