この質問は、Ubuntuチャットルームで 問題を提起した別のユーザー に代わって行います。
ジャーナリングファイルシステムは、電源障害が発生しても破損しないことを保証しますか?
この回答がファイルシステムに依存している場合は、どれが破損から保護され、どれが保護されていないかを示してください。
保証はありません。ジャーナリングファイルシステムは、より回復力があり、破損する可能性は低くなりますが、耐性はありません。
すべてのジャーナルは、ファイルシステムに対して最近行われた操作のリストです。重要な部分は、操作が行われる前にジャーナルエントリが作成されることです。ほとんどの操作には複数のステップがあります。たとえば、ファイルを削除するには、ファイルシステムの目次からファイルのエントリを削除し、ドライブ上のセクターに空きマークを付ける必要があります。 2つのステップの間に何かが発生した場合、ジャーナルファイルシステムは即座に通知し、必要なクリーンアップを実行してすべての一貫性を維持できます。これは、エラーを見つけるためにボリュームの内容全体を調べる必要がある非ジャーナルファイルシステムには当てはまりません。
このジャーナリングは、ジャーナリングを行わない場合よりも破損しにくい傾向がありますが、それでも破損が発生する可能性があります。たとえば、ハードドライブが機械的に誤動作している場合、またはジャーナル自体への書き込みが失敗しているか中断されている場合です。
ジャーナリングの基本的な前提は、ジャーナルエントリの記述は通常、それが記述する実際のトランザクションよりもはるかに速いということです。そのため、OSが(ジャーナル)書き込みを注文してからハードドライブがそれを実行するまでの期間は、通常の書き込みの場合よりもはるかに短くなります。
番号。
メタデータジャーナリングと呼ばれる最も一般的なタイプのジャーナリングは、データではなくファイルシステムの整合性のみを保護します。これには、xfs
、およびデフォルトのext3
モードのext4
/data=ordered
が含まれます。
非ジャーナリングファイルシステムがクラッシュした場合、次回の起動時にfsck
を使用してチェックされます。 fsck
は、ファイルシステム上のすべての inode をスキャンし、使用済みとしてマークされているが到達できない(つまり、ファイル名がない)ブロックを探し、それらのブロックを未使用としてマークします。これを行うには時間がかかります。
メタデータジャーナリングファイルシステムでは、fsck
を実行する代わりに、変更中のブロックを認識しているため、パーティション全体を検索することなく、それらを空きブロックとしてマークできます。
データジャーナリングと呼ばれるそれほど一般的でない種類のジャーナリングがあります。これは、ext3
オプションを使用してマウントした場合のdata=journal
の機能です。
論理操作のリストだけでなく、各書き込みの内容全体をジャーナルに書き込むことにより、すべてのデータを保護しようとします。ただし、データが2回書き込まれるため、処理速度が大幅に低下する可能性があります。
他の人が指摘したように、これは保証ではありません。なぜなら、ハードドライブは、データを格納したオペレーティングシステムに、それがまだハードドライブのキャッシュにあったときに通知した可能性があるからです。
詳細については、 ウィキペディアジャーナリングファイルシステムの記事 および ext4のドキュメント のデータモードセクションを参照してください。
ハードウェアが何をするかわからないため、停電が発生した場合、ファイルシステムはファイルシステムの一貫性を保証できません。
ハードドライブが書き込み用にデータをバッファリングするが、データを書き込んだことと適切な書き込みバリアをサポートしていないことをOSに通知する場合、順序の乱れた書き込みは、以前の書き込みがPlatterに到達せず、後の書き込みに発生する可能性があります持っています。詳細は this serverfault answer を参照してください。
また、磁気HDDのヘッド位置は電磁石で制御されています。書き込みの途中で電源障害が発生した場合、ヘッドの移動中に一部のデータの書き込みが続行され、ファイルシステムが書き込みを意図していないブロックのデータが破損する可能性があります。
ZFSは近いですが、ジャーナリングファイルシステムではありませんが、電源障害後の破損を防ぐために設計によって保証されています。
このような場合、進行中の書き込みが途中で中断されても問題はありません。そのチェックサムは確かに正しくないため、ブロックは無視されます。ファイルシステムはコピーオンライトであるため、以前の正しいデータ(またはメタデータ)はまだディスク上にあり、代わりに使用されます。
答えはほとんどの場合ノーです: