在服务器 1 上,我们从服务器 2 挂载了一个 NFS 共享,如下所示:
/nfs/server2/share
最近,我们关闭了 server2 以在其上安装新的操作系统。现在我们无法像以前一样设置 NFS。当我执行此操作时:
ls -l /nfs/server2
而且它是空的。因此我无法在 上挂载我的共享/nfs/server2/share
。
当我尝试创建/nfs/server2/share
目录时,我得到了
mkdir: cannot create directory `share': No such file or directory
我认为这是因为它并不认为该/nfs/server2
目录确实存在。即使我将 -p 选项与 mkdir 一起使用,它也不起作用。
接下来我尝试删除它/nfs/server2
,以便重新创建它。我尝试 rm -r /nfs/server2
,但得到
rm: cannot remove directory `/nfs/server2': Device or resource busy
所以现在我不知所措。我需要在server1
(at /nfs/server2/share
) 上的相同位置安装此 NFS 共享,因为 server1 上的其他软件依赖于此。但如果我无法创建该共享目录并且无法删除该目录,我该怎么办?
另外,为了测试,我尝试安装共享,/nfs/testing/share
安装得很好。但就像我说的,我需要将其安装回相同的位置。
更新
server2 未以任何方式安装在 server1 上。我认为问题始于另一位管理员关闭 server2 以重新安装操作系统,而没有先卸载 server1 上的共享。我不确定这是否有区别。无论如何,什么mount | grep server2
都没有显示,也没有任何东西fstab
。
解决了
显然,自动挂载正在 server1 上运行,并且该服务阻止我删除旧的 NFS 目录。系统管理员之间缺乏沟通 FTL...
我认为解决这个问题的方法是使用 grep 查找使用我试图删除的目录的某个进程或服务。但我不知道该怎么做。
答案1
供将来参考,此mount --move
开关对于将行为不当的安装架移开非常有用。另请参阅选项umount -l
。
答案2
您可以使用 来找出哪些进程正在使用哪些文件lsof(1)
。
您需要以 root 身份运行此程序才能访问有关机器上进程的所有信息。
Unix 几乎将所有内容视为文件,因此您还可以获取正在使用的网络资源列表。
尝试:
lsof | grep TCP
非常棒的诊断工具!
答案3
要查看当前挂载,请查看/etc/mtab
,而不是/etc/fstab
。 /etc/fstab
显示机器在系统启动时尝试挂载的内容。 /etc/mtab
是一个动态文件,显示现在挂载的内容。例如,mount
没有任何选项的命令显示当前挂载。信息通过阅读提供/etc/mtab
。所以现在你有两种方法可以查看挂载的内容。它们还显示每个挂载的所有选项,包括 中未显示的默认选项/etc/fstab
。