使用 nfs 挂载选项 bg、hard、nointr 时,存储脱机时系统锁定

Raz*_*aza 7 nfs

我在我的系统上定义了以下挂载选项。在任何存储中断的情况下,这些(bg,hard,nointr)原因是否会锁定控制台访问?

        storage:/vol/myvol on /test type nfs (rw,bg,hard,nointr,rsize=65536,wsize=65536,tcp,nfsvers=3,timeo=600)
Run Code Online (Sandbox Code Playgroud)

nfs 选项的哪些组合被认为是正确的做法?

Mar*_*ick 18

所有 NFS 挂载选项都有优点和缺点。

  • bg这意味着,当您尝试访问mount文件系统时(通常在系统启动期间),如果服务器没有及时响应,则挂载会分叉一个在后台运行的进程并定期重试挂载。

    如果您不使用该bg选项,mount将重试并且不会退出(如果您使用了,也不会继续安装其他文件系统mount -a),直到安装成功或失败。

    如果您需要从经常停机的服务器挂载文件系统,并且您不希望系统启动被它延迟,请使用该bg选项(或自动挂载程序)。

    bg选项的缺点是系统可能会在没有挂载远程文件系统的情况下启动,这可能会导致希望使用该文件系统的应用程序失败(或者更糟的是,将要写入的内容填满本地磁盘)远程文件系统)。

    因此,使用bg是您必须做出的选择。

  • hardsoft在文件系统挂载后应用。

    如果远程服务器崩溃或无法访问,硬安装将无限期地继续重试 i/o 请求。

    软挂载会向应用程序返回一个错误,通常应用程序会将其视为不可恢复的错误,就像本地磁盘驱动器已断电一样。如果应用程序可执行文件本身在软安装的远程文件系统上并且变得不可访问,那么当本地内核需要从远程文件系统获取页面时,应用程序将被终止。

    所以选择取决于您:当远程服务器(或您的网络)出现故障时,您是希望程序失败,还是希望它们无限期地重试 i/o,直到再次可以访问远程服务器?

  • 使用硬安装,如果远程服务器宕机,任何使用远程文件系统的程序都不会被信号中断,就像使用本地磁盘的程序在(通常很小)时间内不会中断一样需要做磁盘 i/o。这会让用户感到沮丧,因为他们的程序会挂起,而且他们无法使用control-C. 如果您希望能够中断等待 NFS i/o 的程序,请包括intr挂载选项。使用该intr选项通常是安全的;请记住,它可能会导致程序EINTR在中断时看到 i/o 错误(错误)。

一个建议,我有:使用硬装与远程服务器的NFS文件系统可能往下走的时候,不要安装在一个目录下的文件系统中/(如/test),或者实际上在任何处于同一水平的目录,许多人使用目录,比如/home/username。这是因为pwd或者它的 C 库等效项遍历目录树,stat对目录执行s。如果应用程序stat在没有响应的硬挂载 NFS 挂载点上执行 a,它将挂起。这是用户对 NFS 抱怨的主要原因:他们无法登录,因为他们的 shell 做了一个pwd并且一些他们甚至不需要使用的 NFS 文件系统已经关闭。 这是对主目录使用自动挂载程序的另一个很好的理由。

这是 NFS 挂载的最佳实践:

  • 使用自动挂载器
  • 如果不能,则使用 options将每个远程文件系统挂载在 /n/ remoteservername / filesystemnamehard,intr
  • /n 和 /n/ remoteservername是本地目录,它们从来都不是 NFS 挂载点。
  • configureupdatedb或其他任何可以查看整个目录树以不查看/n.