不确定是否更适合超级用户的Unix和Linux董事会,请告诉我。
我们有一台服务器,它是某个大型架构的主要关键点之一。这台服务器有一个备份磁盘,虽然它托管了非常旧的备份,但从未使用过。所以我决定设置它,虽然它一开始是一个分区,但我习惯以fdisk
与主驱动器相同的方式对其进行重新分区(两者相同)。
不幸的是,重新分区后,fdisk
无法让内核看到新的分区表, 、 或 也无法看到partrobe
。blockdev
都sfdisk
遇到了同样的问题:BLKRRPART: Device or resource busy
,尽管 和lsof
都fuser
没有显示任何使用该设备的信息。 这里我必须提到,我曾经umount -l
在使用前强制卸载fdisk
(是的,现在看来这很愚蠢,我应该更仔细地阅读文档)。
后来我发现 NFS 正在共享驱动器的一个目录,这就是它没有出现的原因lsof
——fuser
不要问我是谁想出这个愚蠢的想法,使用旧备份驱动器中的目录来共享 NFS 客户端的启动配置文件……
我无法重新启动此服务器,也不会重新启动 NFS。我读过我可以nfs-kernel-server reload
在重新加载时使用保留 NFS 传输/etc/exports
(如果我理解正确的话),但首先我不确定这是否可行,其次我真的不想尝试。我真的想避免干扰正在运行的进程。
现在,如果目录确实出现在 的输出中showmount -e
(这似乎与 基本相同/etc/exports
),它既不会出现在 中,showmount -a
也不会出现在 中showmount -d
。我猜这意味着目录未被使用,所以也许有某种方法可以强制从 NFS 卸载?
有什么建议 ?
答案1
NFSv2 和 NFSv3 是无状态协议。这意味着,特别是在使用 UDP 时,您可以重新启动服务器,而不会对连接的客户端产生任何影响。
我读过我可以使用 nfs-kernel-server reload 来在重新加载 /etc/exports 时保持 NFS 传输(如果我理解正确的话),但首先我不确定这是否有效,其次我真的不想尝试这样做。
如果您不相信所读内容,很难给出建议。编辑/etc/exports
并运行nfs-kernel-server reload
当然是正确的解决方案。运行此命令只会执行exportfs -r
,这是更新正在运行的服务器的导出而不重新启动它的正确方法。
顺便说一句,您说:
我必须提一下,
umount -l
在使用 fdisk 之前,我曾经强制卸载
umount -l
需要澄清的是,不是强制卸载。您的文件系统可能仍处于挂载状态,或者在您运行 fdisk 时仍处于挂载状态。