挂载USB子目录用于NFS导出

挂载USB子目录用于NFS导出

Ubuntu 18.04.1 LTS

我在从 USB 驱动器导出目录时遇到问题。我有许多类似权限配置的导出,它们都很好。

这是错误:

mount --bind /mnt/usb2T/inbox /export/inbox
mount: /export/inbox: mount(2) system call failed: No such file or directory.

以下是该问题涉及的目录:

USB 驱动器:

ls -la /mnt/
drwxrwxr-x  7 root users 4096 Sep 14 14:29 usb2T

成功安装导出为

/mnt/usb2T /export/usb2T nfs bind 0 0

并被客户成功导出并安装为

/export/usb2T 10.0.0.0/24(rw,nohide,insecure,no_subtree_check,async)

然而,当我对 usb2T 的子目录尝试相同的方法时,我遇到了麻烦:

ls -la /mnt/usb2T/inbox | wc -l
96

所以它确实存在并且那里有文件。

/export/inbox 目录也是如此:

ls -la /export
drwxrwxr-x  0 root users    0 Sep 14 14:29 inbox
drwxrwxr-x  7 root users 4096 Sep 14 14:29 usb2T

尝试使用 fstab 中的以下行进行绑定安装:

/mnt/usb2T/inbox /export/inbox nfs bind 0 0

为什么我会收到此错误?

答案1

Ubuntu 18.04.1 LTS 足够新,可以使用systemd,并且systemd不会挂载/etc/fstab传统的mount -a.

相反,它会自动生成一个.mount-type系统单元文件对于每一/etc/fstab行,向这些单元添加一些默认依赖项,然后在启动时并行运行这些单元,基本上尽快。

诀窍是,除非systemd明确告知一个安装依赖于另一个已完成的安装,否则无法保证任何特定的顺序。行的顺序/etc/fstab没有任何意义,就像以前可能具有的那样mount -a

/mnt/usb2T仅当已安装时,第二个绑定安装才能成功。要将此要求告知systemd,您需要将其fstab行更改为:

/mnt/usb2T/inbox /export/inbox nfs bind,x-systemd.requires=/mnt/usb2T 0 0

或者,根据所systemd使用的版本,可以是:

/mnt/usb2T/inbox /export/inbox nfs bind,x-systemd.requires-mounts-for=/mnt/usb2T 0 0

(从技术上讲,在绑定安装上,该行中的文件系统类型fstab可能应该none而不是nfs,但我认为无论如何绑定安装都会忽略这一点。)

相关内容