web-dev-qa-db-ja.com

怠惰なMNT_DETACHまたは `umount -l`が安全でない/危険なのはなぜですか?

umount -lが安全でない場所をいくつか読んだことがあります。

@ casによる回答

外付けドライブを安全に取り外すことができる場合を気にする場合は、umount--lazyオプションを使用しないでください。

@ frostschutzによるコメント

umount --lazyは安全ではないため、安全にすることはできません。 [...]

これutil-linuxRuediger Meierによるコメント

umount -lは使用しないでください。 /tmp/mountpointを使用しているすべてのプロセスを強制終了し、オプション-lなしでアンマウントします。

umount -lが安全でない/危険なのはなぜですか?

安全にする方法はありますか?

10
Tom Hale

遅延アンマウントは シュレーディンガーの猫 マウントを作成します

  • デバイスが実際にマウント解除されているかどうかはわかりません
  • 「マウント解除された」ファイルシステムは、状況によってはアクセス可能なまま
  • 「アンマウントされた」ファイルシステムは、一部の状況ではアクセスできません

誤った安心感があります:ファイルシステムはマウント解除されているようですが、実際にはファイルの名前空間/階層からのみ隠されています。

  • プロセスはまだオープンファイル記述子を介して書き込むことができます
  • 相対パス名を介して、マウントポイント内の作業ディレクトリを使用して、プロセスが書き込み用に新規または既存のファイルを開くことができます

つまり、umount -l /media/hddを使用すると/media/hdd/dir/file絶対パス名)にアクセスできなくなりますが、作業ディレクトリ/media/hddのプロセスがある場合は、./dir/file(相対パス名)を読み書きできる新しいプロセスを引き続き作成できます。

デバイスをアンマウントしようとすると、混乱するメッセージが表示されます。

# umount --force --all-targets /dev/sdb2
umount: /dev/sdb2: not mounted

これにより、デバイスはununtuntされたように見えますが、ディスクに書き込むプロセスがstillあります。

Umountをブロックする可能性のあるさまざまな_(非自明な状況= があるため、lsof +f -- /dev/deviceに何も表示されていなくても、ファイルシステムはアンマウントされない可能性があります。

ファイルシステムが実際にマウント解除されているかどうかはわかりません。調べる方法はありません。

取り外しできる装置

リムーバブルディスクをumount -lする場合は、不安定な状態にあります。保留中のすべてのデータがディスクに書き込まれたかどうかはわかりません。

umount -lの後にできる最善の方法は、 すべての書き込みが完了し、今後の書き込みを防止する にすることですが、アンマウントされていることを保証することはできません。

リムーバブルデバイスでは、デバイスが適切にアンマウントされていないと、次に接続したときに奇妙な動作が発生する可能性があります。

  • デバイスはインクリメントされたデバイス名を取得します。つまり、/dev/sdb/dev/sdcになります。そのデバイスが/dev/sdbの下のファイルとして存在しなくなった場合でも、カーネルログメッセージは/devを参照している可能性があります。 (これを解決する唯一の方法は、再起動することです。)

  • btrfsの破損が発生する可能性があります。 btrfsは、特定のUUIDを持つファイルシステムが一度に1つだけ存在することを期待しています。カーネルは、ファントムデバイスと新しいデバイスで利用可能な同じUUIDをまだ認識しています。 (btrfsバックアップHDDを再構築する必要がありました)。

systemd gotchas

12
Tom Hale