我有一些samba驱动器,每天都有多个用户访问。我已经有了识别共享驱动器(从SQL表)的代码,并将它们挂载到所有用户都可以访问它们的特殊目录中。

我想知道,如果我从我的SQL表中删除驱动器(有效地使其脱机)如何,甚至是,有一种方法来卸载繁忙的设备?到目前为止,我发现任何形式的umount都不起作用。

忽略破坏数据的可能性-是否有可能卸载当前正在读取的设备?


当前回答

当您尝试卸载时,请确保您不在已安装的设备中。

其他回答

在我的例子中,我无法卸载挂载到AFP共享目录的分区。(分享到Apple bonjour/avahi mdns世界) 我把服务器上的所有登录都移动到它们的主目录;我把所有远程连接的mac电脑都移到了其他目录下。 即使使用umount -f,我仍然无法卸载分区 所以我重启了服务器上的netatalk守护进程。 (/etc/netatalk/afp.conf中有共享分配) 日志含义重启netatalk后,不带-f参数,umount成功。

当您尝试卸载时,请确保您不在已安装的设备中。

使用exportfs -v检查导出的NFS文件系统。如果发现,使用exportfs -d share:/directory删除。这些不会在fuser/lsof列表中显示,并且会阻止umount成功。

文件夹内的多个挂载

另一个原因可能是在你的主挂载文件夹中有一个副挂载,例如,在你为嵌入式设备使用SD卡后:

# mount /dev/sdb2 /mnt       # root partition which contains /boot
# mount /dev/sdb1 /mnt/boot  # boot partition

卸载/mnt将失败:

# umount /mnt
umount: /mnt: target is busy.

首先我们必须卸载引导文件夹,然后卸载根目录:

# umount /mnt/boot
# umount /mnt
sudo fusermount -u -z <mounted path>

注意:不要对路径使用补全,因为这也会冻结终端。