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


10

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

@casによる回答

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

@frostschutzのコメント

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

util-linux Ruediger Meierによるこのコメント

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

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

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

回答:


12

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

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

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

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

これは、(絶対パス名)umount -l /media/hddにアクセスできなくても/media/hdd/dir/file、作業ディレクトリを持つプロセスがある場合、/media/hdd読み取り/書き込みが可能な新しいプロセス./dir/file(相対パス名)を作成できることを意味します。

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

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

これにより、デバイスはununtuntされたように見えますが、ディスクに書き込むプロセスがまだ存在する可能性があります。

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

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

取り外しできる装置

その場合はumount -lリムーバブルディスクを、あなたはどっちつかずの状態-地にいる:あなたはすべての保留中のデータがディスクに書き込まれていることを確認することはできません。

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

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

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

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

systemd 落とし穴


「新規または既存のファイルは、相対パス名を介して、マウントポイント内の作業ディレクトリを持つプロセスによって書き込み用に開くことができます」これは私が探していた情報です。追加のリンクまたは参照がありますか?
Jonathon Reinhart

@Jonathonは男のマウントをチェックします。そうでなければグーグルする必要があります。これを行う場合は、調査結果を投稿してください。
トム・ヘイル

umount(2)最近何回か読みました。それだけで言うのマウントポイントがビジーでなくなったときに、新たなアクセスのために使用できないマウントポイントを作る、すぐにファイルシステムを切断し、すべてのファイルシステムは、互いにおよびマウントテーブルからその下に取り付けられており、実際にアンマウントを実行します。」怠惰なアンマウントを実行します」しかし残念ながら、これはあなたが提供したものよりも詳細ではありません。
Jonathon Reinhart、

umount(8)ファイルシステムがビジー状態であると言います。たとえば、開いているファイルがある場合、プロセスに作業ディレクトリがある場合、またはスワップファイルが使用されている場合などです。これは決定的なリストのように聞こえませんが、おそらく私が見つけることができるほど良いものです。
Jonathon Reinhart、

私はあなたが言ったことについて少し詳しく説明し、この回答にいくつかの他の例を追加しました。情報のおかげで!
Jonathon Reinhart、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.