以前にchrootされたファイルシステムをアンマウントする方法は?


17

次のようなDebianサーバーの問題を解決するために、rescue-live-system(live-cdに似ています)を使用しています。

# 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/

これで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))

devprocおよびsysがマウントされたファイルシステムにバインドされているためだと思います。しかし、それらをアンマウントすることもできません...


アンマウントしようとするとどうなります/mnt/rescue/procか?その中でまだプロセスが実行されていchrootないのですか?
マット

試しlsof /mnt/rescueプロセスは、そのフォルダを使用しているかを確認します。
マルティンキャナバル

シャットダウンする前に、chrootされたシェルを終了する必要があります。
フォンブランド

回答:


14
  1. 最初にchrootセッションを終了exitする必要があります。通常は次のようにします:

    exit
    
  2. 次に、バインドされたすべてのディレクトリをアンマウントします。

    umount /mnt/rescue/dev/
    umount /mnt/rescue/proc/
    umount /mnt/rescue/sys/
    
  3. 次に:

    umount /mnt/rescue
    

syncここで使用されていないことが心配な場合は、アンマウントが可能かどうかには影響しないことに注意してください。いずれにせよ、アンマウントは保留中の書き込みをフラッシュします(アンマウント後に行かないようにする必要があります)。chrootされたプロセスの存在は無関係です(アンマウントを防止する点を除く)。通常のシステム操作では、同期による影響はありません。デバイスがマウント解除されずに物理的に切断された場合、またはデバイスのマウント中にシステムがクラッシュした場合にのみ、syncは違いを生じます。


1
おかげで、それだと...私のミスではなくのを/ mnt /救助/ SYS / ... /アンマウント/ sysにしようとしていた
AFR

2
sync全く役に立ちません。
ジル 'SO-悪であるのをやめる'

@Gilles sync役に立たない理由をもう少し詳しく説明してもらえますか?現在のカーネルでは役に立たなくなりますか?または、この場合のみ(レスキューモード)?chrootを終了した後のumountを妨げるディスクへの書き込みが大量に保留されている場合に備えて、そこに配置します。
ジョン・シウ

4
@JohnSiu syncは、アンマウントが可能かどうかには影響しません。いずれにせよ、アンマウントは保留中の書き込みをフラッシュします(アンマウント後に行かないようにする必要があります)。chrootされたプロセスの存在は無関係です(アンマウントを防止する点を除く)。通常のシステム操作でsyncは、目に見える影響はありません。syncデバイスがマウント解除されずに物理的に切断された場合、またはデバイスのマウント中にシステムがクラッシュした場合にのみ違いが生じます。
ジル 'SO-悪であるのをやめる'

@Gillesおっしゃるとおりです。ありがとうございました!!
ジョン・シウ

14

以下のコマンドを実行して、ファイルシステムをファイルシステム階層から強制的に切り離し、ビジーでなくなったらすぐに、ファイルシステムへのすべての参照をクリーンアップします。

umount -lf /mnt/rescue

4

「ターゲットが忙しい」という理由があります。メッセージは、マウントポイント(/mnt/rescue)がファイルブラウザーまたはターミナルセッションで開かれているためであり、アンマウントプロセスの順序(ここでは、dev/pts前にアンマウントする必要がありますdev/

さて、そこにすべてのfsを正常にアンマウントするために:

  • ファイルブラウザでマウントポイントが開いていないことを確認してください!
  • chrootを終了した後、chrootディレクトリからディレクトリを変更します(cd)!
  • 順序を考慮したfmount fs dev/pts => dev/ => proc/ => sys/

    sudo umount / mnt / rescue / dev / pts
    sudo umount / mnt / rescue / dev
    sudo umount / mnt / rescue / proc
    sudo umount / mnt / rescue / sys
    sudo umount / mnt / rescue


2

これはschroot、Ubuntuバージョン10.04 でのコマンドの実行方法です。

# list all sessions:
schroot --list --all-sessions
# if the above command does not work, just type `mount`. The bind mount
# points with something like this in the mount path is the session name you want to get:
precise-a4aac8e0-663c-4fec-8fb2-16e4b06557e3 (<chroot_name>-<id>)

# now run this to properly end the session:
schroot -e -c precise-ca6c72e4-0e9f-4721-8a0e-cca359e2c2fd

0

chrootを終了します。ホストシステムでは、コマンド「mount」はマウントされたすべてのパスを表示します。(chrootにマウントされているパスを含みます。)例えば:

binfmt_misc on /home/user/projects/jsroot/proc/sys/fs/binfmt_misc

次に、chroot環境に入ります。chroot環境でunmountを実行して、すべてのパスを順番にアンマウントします。(サブパスは親パスの前にアンマウントする必要があります。)

unmount /proc/sys/fs/binfmt_misc
unmount /proc/sys
unmount /proc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.