如何卸载以前 chroot 的文件系统?

Afr*_*Afr 22 chroot mount unmounting

我正在使用一个救援实时系统(类似于实时 CD)来修复我的 Debian 服务器的一些问题,如下所示:

# mkdir -p /mnt/rescue
# mount /dev/md2 /mnt/rescue
# mount --bind /dev /mnt/rescue/dev/
# mount --bind /proc /mnt/rescue/proc/
# mount --bind /sys /mnt/rescue/sys/
Run Code Online (Sandbox Code Playgroud)

现在我可以 chroot 到/mnt/rescue- 但是完成后,如何再次卸载文件系统?

umount: /mnt/rescue: target is busy.
    (In some cases useful info about processes that use
     the device is found by lsof(8) or fuser(1))
Run Code Online (Sandbox Code Playgroud)

我猜这是因为dev,proc并且sys绑定到挂载的文件系统。但是也无法卸载它们......

Joh*_*Siu 22

  1. 你必须先退出 chroot 会话,通常一个简单的方法exit

    exit
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后卸载所有绑定的目录:

    umount /mnt/rescue/dev/
    umount /mnt/rescue/proc/
    umount /mnt/rescue/sys/
    
    Run Code Online (Sandbox Code Playgroud)
  3. 然后:

    umount /mnt/rescue
    
    Run Code Online (Sandbox Code Playgroud)

如果您担心sync此处未使用它,请注意它对是否可以卸载没有影响。卸载刷新挂起的写入无论如何(它必须,因为卸载后它们无处可去)。chroot 进程的存在是无关紧要的(除非它阻止卸载)。在正常的系统操作中,同步没有明显的影响。仅当设备在未卸载的情况下物理断开连接或系统在设备安装时崩溃时,同步才会有所不同。

  • @JohnSiu `sync` 对是否可以卸载没有影响。卸载刷新挂起的写入无论如何(它必须,因为卸载后它们无处可去)。chroot 进程的存在是无关紧要的(除非它阻止卸载)。在正常的系统操作中,`sync` 没有可观察到的效果。“同步”仅在设备未卸载而物理断开连接,或者系统在设备安装时崩溃时才起作用。 (4认同)
  • `sync` 完全没用。 (2认同)
  • @Gilles 你能详细说明一下为什么 `sync` 没用吗?它在当前内核中变得无用吗?或者仅在这种情况下(救援模式)?我把它放在那里,以防万一有大量待写入磁盘,这将阻止退出 chroot 后的卸载。 (2认同)

shg*_*Inc 16

执行以下命令强制并从文件系统层次结构中分离文件系统,并在文件系统不再繁忙时立即清除对文件系统的所有引用。

umount -lf /mnt/rescue
Run Code Online (Sandbox Code Playgroud)