現在の作業ディレクトリまたはルートディレクトリがマウントされているファイルシステムにある場合は、ファイルシステムをマウント解除/再マウントできますか?
プロセスにマウントされたファイルシステムに読み取り/書き込みファイル記述子または読み取り/書き込み/共有マッピングされたファイルがある場合は、ファイルシステムを読み取り専用で再マウントできますか?それでは、これらのファイル記述子とmmapに書き込むときに何が起こりますか?
答え1
プロセスの作業ディレクトリとルートディレクトリは、開かれたファイルと同様に、ファイルシステムへのアクティブな参照と見なされます。これにより、ファイルシステムがマウント解除されるのを防ぎます。カーネルが「使用中」エラーを返します。
EBUSYターゲットは使用中なので、マウント解除できません。
書き込み用に開いているファイルがない場合は、ファイルシステムを読み取り専用で再マウントできます。プロセスの作業ディレクトリとルートディレクトリは、書き込み用に開かれたファイルとは見なされず、ファイルシステムが読み取り専用で再マウントされるのを防ぎません。
EBUSYソースはまだ書き込み用にファイルを開いたままにしているため、読み取り専用モードでは再マウントできません。
別のケースがあります。少なくとも一部のファイルシステムでは、リンクされていないファイルが開いている場合は読み取り専用であっても、そのファイルを読み取り専用で再マウントすることはできません。接続されていないファイルを閉じるとスペースを解放できますが、そのためにはディスク上のファイルシステムメタデータブロックを更新する必要があります。
このコマンドumount -l
(使用umount2(..., MNT_DETACH)
)は、マウントツリーで使用されているファイルシステムを分離できます。ファイルシステムはアクティブのままです。最後に開いたファイルが閉じられると閉じます。ドキュメントには、バックグラウンドでクローズが発生するか、最後の close() 呼び出しが返された後にファイルシステムが完全にクローズされるかを信頼できるかどうかは記載されていません。