CentOS 7はrbindとrslaveを使用してバンドルインストールを完全に削除することはできません。

CentOS 7はrbindとrslaveを使用してバンドルインストールを完全に削除することはできません。

次のコマンドシーケンスは、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/bC/bstat C/bB

/devこのコマンドは、rbindとサンドボックスを試みたときに見つかった問題を再現するための最小限の例です。/procしかし、サンドボックスを破壊しようとすると失敗しました。 make-rslaveそうしないと、下のサブインストールが/dev/削除され、システムが混乱します。

このコマンドは、Ubuntu 14.04(カーネルバージョン3.13.xx)とFedora 23(カーネルバージョン4.x)で動作します。

私の質問は、何らかの理由でCentOS 7を引き続き使用する必要がある場合は、この問題を解決し、サンドボックスを完全に破壊することができることです。

答え1

umount -a環境内で試して失敗した場合はchroot終了してください。umount -lumount -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.)

関連情報