我在我的系统上定义了以下安装选项。如果发生任何存储中断,这些(bg,hard,nointr)
原因会导致锁定控制台访问吗?
storage:/vol/myvol on /test type nfs (rw,bg,hard,nointr,rsize=65536,wsize=65536,tcp,nfsvers=3,timeo=600)
哪些 nfs 选项组合被认为是正确的做法?
答案1
所有 NFS 挂载选项都有优点和缺点。
bg
这意味着,当您尝试访问mount
文件系统时(通常在系统引导期间),如果服务器没有及时响应,挂载将分叉出一个在后台运行的进程,并定期重试挂载。如果您不使用该
bg
选项,mount
将重试并且不会退出(如果您使用了,也不会继续挂载其他文件系统mount -a
),直到挂载成功或失败。如果您需要从经常关闭的服务器挂载文件系统,并且您不希望系统启动因此而延迟,请使用该
bg
选项(或自动挂载程序)。该选项的缺点
bg
是系统可能在没有安装远程文件系统的情况下启动,这可能会导致希望使用该文件系统的应用程序失败(或更糟糕的是,用本来要写入远程文件系统的内容填满本地磁盘)远程文件系统)。因此,使用
bg
是您必须做出的选择。hard
并soft
在安装文件系统后应用。如果远程服务器崩溃或无法访问,硬安装将无限期地继续重试 i/o 请求。
软安装将向应用程序返回错误,通常应用程序会将其视为不可恢复的错误,就像本地磁盘驱动器已断电一样。如果应用程序可执行文件本身位于软安装且无法访问的远程文件系统上,则当本地内核需要从远程文件系统获取页面时,应用程序将被终止。
因此,选择取决于您:当远程服务器(或您的网络)出现故障时,您希望程序失败,还是希望它们无限期地重试 I/O,直到再次可以访问远程服务器为止?
使用硬挂载,如果远程服务器出现故障,任何使用远程文件系统的程序都不会被信号中断,就像使用本地磁盘的程序在(通常很短的)时间内不会被中断一样。执行磁盘 I/O 所需的时间。这可能会让用户感到沮丧,因为他们的程序将挂起并且他们无法使用control-C.如果您希望能够中断等待 NFS i/o 的程序,请包含
intr
mount 选项。使用该intr
选项通常是安全的;请记住,它可能会导致程序EINTR
在中断时看到 I/O 错误(错误)。
我的一项建议是:当使用硬挂载 NFS 文件系统与可能出现故障的远程服务器时,不要/
将文件系统挂载到(例如)中的目录上/test
,或者实际上挂载在任何目录与许多人使用的目录处于同一级别,例如/home/username
.这是因为pwd
或其 C 库等效项会遍历目录树,stat
对目录执行 s 操作。如果应用程序stat
在没有响应的硬挂载 NFS 挂载点上执行操作,它将挂起。这是用户抱怨 NFS 的主要原因:他们无法登录,因为他们的 shell 执行了pwd
某些他们甚至不需要使用的 NFS 文件系统已关闭。这是对主目录使用自动挂载器的另一个很好的理由。
这是我们 NFS 挂载的最佳实践:
- 使用自动安装程序
- 如果不能,则将每个远程文件系统挂载在 /n/ 上远程服务器名称/文件系统名与选项
hard,intr
。 - /n 和 /n/远程服务器名称是绝不是 NFS 挂载点的本地目录。
- 配置
updatedb
或其他任何查看整个目录树而不是查找/n
.