
私は持っています古い機器にインストールする/mntそして:
$ mount olddevice /mnt
デバイスを変更したい/mntマウントポイント。これを行うには、単にインストールするだけです。新しいデバイスその上:
$ mount newdevice /mnt
このように、プロセスにはまだファイル記述子があります。古い機器既存のデバイスで作業を続けることができますが、新しいプロセスでは/mnt使用する新しいデバイス。
いつ検知できますか?古い機器もう使用しなくなって削除することにしました。私の質問は削除する方法です。
$ umount olddevice
umount: olddevice: umount failed: Invalid argument.
自分で削除できますか?または強制的に削除しますか?新しいデバイスまず(私はそれをしたくない)?
答え1
デフォルトでは、マウント伝播が有効なsystemdをまだ実行していない場合は、まず次のコマンドを実行します。
mount --make-rshared /
それから:
mkdir /root.orig
mount --rbind / /root.orig
mount --make-rprivate /root.orig/mnt
mount newdevice /mnt
...
umount -R /root.orig/mnt # instead of umount olddevice
その後、魔法を安全に分解します。システム全体を取り外さないように注意してください。
mount --make-rprivate /root.orig
umount -l /root.orig
rmdir /root.orig
一般的に私はmount
/コマンドumount
の再帰的な変形を使用するのが好きです。最初は、以下にファイルシステムだけをマウントしたと言われました/mnt
。上記の手順ではumount -R /root.orig/mnt
。息子ディレクトリを使用する/mnt
と、このumount -R
コマンドが途中で失敗する可能性があります。これは、サブマウントには開いたファイルはありませんが、デフォルトのマウントにはまだ開いているファイルがあるためです。 IMO これはumount -l
仕組みと似ていると感じます。 umount -l /path
マウントツリーを分解して分離すると、開いているファイルがないとすぐに個々のファイルシステムが閉じます。