
次のコマンドシーケンスは、CentOS 7(カーネルバージョン:3.10.0-327.10.1.el7.x86_64)で失敗します。
[hidden]$ mkdir -p A B/a C/b
[hidden]$ sudo mount --bind A B/a
[hidden]$ sudo mount --rbind B C/b
[hidden]$ sudo mount --make-rslave C/b
[hidden]$ sudo umount C/b/a
[hidden]$ sudo umount C/b
[hidden]$ rmdir C/b
rmdir: failed to remove ‘C/b’: Device or resource busy
mount
、、、、、cat /proc/mounts
ディレクトリcat /etc/mtab
を使用するプロセスは表示されませsudo lsof
ん。 inodeと区別されるということは、そのディレクトリが正常にアンマウントされたことを意味します。sudo fuser C/b
C/b
stat C/b
B
/dev
このコマンドは、rbindとサンドボックスを試みたときに見つかった問題を再現するための最小限の例です。/proc
しかし、サンドボックスを破壊しようとすると失敗しました。 make-rslave
そうしないと、下のサブインストールが/dev/
削除され、システムが混乱します。
このコマンドは、Ubuntu 14.04(カーネルバージョン3.13.xx)とFedora 23(カーネルバージョン4.x)で動作します。
私の質問は、何らかの理由でCentOS 7を引き続き使用する必要がある場合は、この問題を解決し、サンドボックスを完全に破壊することができることです。
答え1
umount -a
環境内で試して失敗した場合はchroot
終了してください。umount -l
umount -R
(chroot) # umount -a
(chroot) # exit
(liveos) #
(liveos) # umount -R /mnt/point/
(liveos) # umount -l /mnt/point/
-R, --recursive
Recursively unmount each specified directory. Recursion for each directory will stop if any unmount
operation in the chain fails for any reason. The relationship between mountpoints is determined by
/proc/self/mountinfo entries. The filesystem must be specified by mountpoint path; a recursive
unmount by device name (or UUID) is unsupported.
-l, --lazy
Lazy unmount. Detach the filesystem from the file hierarchy now, and clean up all references to this
filesystem as soon as it is not busy anymore. (Requires kernel 2.4.11 or later.)