ファイルの移動中に中断が発生した場合、ファイルシステムは一貫性を失いますか?

ファイルの移動中に中断が発生した場合、ファイルシステムは一貫性を失いますか?

同じパーティション(EXT2)に2つのフォルダーがあります。mv folder1/file folder2停電などの中断が発生した場合、ファイルシステムは一貫性を失いますか?

仕事はmvアトミックではありませんか?

修正する: これまで私はIRCについて次の見解を得ました。

  1. アトミックなので、不一致が発生することはありません。
  2. 最初にディレクトリエントリが新しいディレクトリにコピーされ、次に古いディレクトリのエントリが削除されるため、ファイルは2回参照されますが、参照数が1の不一致が発生する可能性があります。
  3. 最初にポインタを消去してからコピーするので、ファイルへの参照がゼロであるという不一致があります。

誰かがこれを明確にすることができますか?

ベストアンサー1

名前変更操作はすべてのファイルシステムで非常に高速であるため、中断される可能性はありませんが、クラシックファイルシステムでは確実に中断されます。できる破損 - ターゲットリンクを最初に作成した場合、ファイルに2つのリンクが残る可能性があります。これは正当ですが、ファイルは考える1つしかありませんが、後で削除すると問題が発生する可能性があります。一方、ソースリンクを最初に削除すると、ファイルが失われる可能性があります。 fsckを実行すると、通常、2つの状況のうちの1つを検出して修正しますが、ファイルが見つからない場合は、目的の場所に配置されず、任意の名前の "lost + found"ディレクトリに配置されます。リンクが2つある場合、countは単に更新されるため、ファイルシステムがサポートしている場合、ファイルは両方の場所に存在します。

停電に強いファイルシステムが必要な場合、ジャーナリングファイルシステムを使用する必要があります。、NTFS、EXT3、XFSなど。ほとんどの最新システムは基本的にジャーナリングファイルシステムを使用しますが、外付けドライブでFATを使用する場合はジャーナリングファイルシステムではないことに注意してください。

ジャーナリングファイルシステムは「デュアル入力」システムを使用します。つまり、ジャーナルファイルが移動される予定であることを記録し、移動を実行します。起動時にファイルシステムを確認するときに中断した場合は、移動がまだ完了していないことを通知して再実行します。

ジャーナリングファイルシステムには、メタデータジャーナリングとフルジャーナリングの2種類があります。メタデータのロギングは、ロギングシステムのファイル内容に対する変更を追跡しませんが(したがってファイルに書き込むと内容が失われる可能性があります)、ディレクトリの内容、ファイルのプロパティなどの重要なファイルシステム情報を追跡し続けることを意味します。 。


人々がアトミック名の変更操作について話すとき、これはシステムの他のプロセスが変換中にそれを観察できず、例えば割り込みmvコマンド自体を使用して半分を完了できないことを意味します^C。各ディレクトリ(ストレージスペースがディスク上のまったく異なる場所にある可能性があります)に書き込む物理プロセスは、ハードウェアレベルで実際にアトミックな操作にすることはできません。


完全性を期すために、ターゲットディレクトリに新しいリンクを作成し、古いディレクトリから削除することに加えて、名前の変更に関連する付随的なI / O操作があることに注意してください。つまり、両方のディレクトリのmtimeを更新することです。宛先ディレクトリの割り当てサイズを拡張し、ファイルがディレクトリ..の場合は、親ディレクトリのリンク数とリンク数を変更します。また、ファイル自体のatimeが影響を受けるかどうかはわかりません。

おすすめ記事