ファイル/ディレクトリが使用されているパーティションをアンマウントすることは可能ですか?
基になるファイルとディレクトリはメモリ内にあるため、パーティションのアンマウントは技術的に安全です(私は推測します)
しかし、umount
は私がそれをアンマウントすることを許可していません。
(この操作を拒否しているのは誰ですか:umountまたはkernel?)
「レイジーアンマウント」を行うことができます。
レイジーアンマウントにより、起動された新しいプロセスはファイルシステムを使用できなくなりますが、現在ファイルシステムを使用しているプロセスはファイルシステムを引き続き使用できます。次に、現在それを使用しているプロセスが終了すると、ファイルシステムはアンマウントされます。
これを行うには、次のようにします。
umount -l /mount/point
強制アンマウントを試みることができます。特定のパーティションでファイルが使用されている間は適切でない可能性があるため、これを使用する場合は注意が必要です。 -f
オプションは、Linuxに、そうでなければ失敗する可能性のあるアンマウント操作を強制するように指示します。これを行うためのコマンドは次のとおりです。
umount -f <partition name>
基になるファイルとディレクトリはメモリ内にあるため、パーティションのアンマウントは技術的に安全です(私は推測します)。
逆に、ファイルシステムからのファイルが開いている場合、パーティションのアンマウントは不可能です。プロセスによって開かれているファイルは、プロセスがファイルを開いたときに実際にはメモリにロードされません(これは非効率的であり、使用可能なメモリよりも大きいファイルを操作することさえ完全に不可能になります)。代わりに、ファイルが開かれると、その内容は必要に応じてRAMにロードされ、カーネルがそのRAMのより適切な使用法を見つけたときにRAMから削除されます。
ファイルが開いている限り、そのファイルのコンテンツは、ファイルが保存されているファイルシステムから削除できません。ファイルを削除した場合(たとえば、rm
コマンドを使用)、これが実際に行うことは、そのファイルのディレクトリエントリを削除することです。ただし、ファイルが閉じられるまで、データはディスクに残ります。 (これは、使用済みディスク領域を監視することで確認できます。開いているファイルが削除されたときではなく、ファイルが閉じられたときにのみ低下します。)
同様に、ファイルが開いている場合、そのファイルシステムをアンマウントすることはできません。これは、必要なときにファイルのコンテンツを取得できなくなるためです。
Linuxには、「レイジーアンマウント」のオプションがあります。ファイルシステムのレイジーアンマウントは、ファイルでrm
を呼び出すことに相当します。ファイルシステムが接続されているポイント(マウントポイント)は消えますが、ファイルシステムは最後のファイルが閉じられるまでマウントされたままです(ちょうどファイルを削除するのと同じように、ファイルを含むディレクトリからファイルをデタッチしますが、データはディスクに保持します)。
これはすべてカーネルで発生します。 umount
コマンドは、/etc/mtab
を解析してデバイスまたはマウントポイントのいずれかを指定できるようにすることを除けば、あまり効果がありません。
ファイルシステムでファイルを開いているプロセスを一覧表示する場合は、 fuser または lsof を使用します。ファイルシステムでファイルを開いているすべてのプロセスを強制終了するには、fuser -k /path/to/mount/point
を実行します。