Ubuntuチャットルームで問題を提起した別のユーザーに代わってこの質問をしています。
ジャーナリングファイルシステムは、電源障害が発生した場合に破損が発生しないことを保証していますか?
この回答がファイルシステムに依存する場合、どのシステムが破損を防止し、どのシステムが保護しないかを示してください。
Ubuntuチャットルームで問題を提起した別のユーザーに代わってこの質問をしています。
ジャーナリングファイルシステムは、電源障害が発生した場合に破損が発生しないことを保証していますか?
この回答がファイルシステムに依存する場合、どのシステムが破損を防止し、どのシステムが保護しないかを示してください。
回答:
保証はありません。ジャーナリングファイルシステムは回復力があり、破損の可能性は低くなりますが、耐性はありません。
ジャーナルとは、ファイルシステムに対して最近行われた操作のリストです。重要な部分は、操作が行われる前に仕訳入力が行われることです。ほとんどの操作には複数のステップがあります。たとえば、ファイルを削除するには、ファイルシステムの目次でファイルのエントリを削除してから、ドライブ上のセクターを空きとしてマークする必要があります。2つのステップの間に何かが発生した場合、ジャーナリングされたファイルシステムはすぐに通知し、すべての整合性を保つために必要なクリーンアップを実行できます。これは、エラーを見つけるためにボリュームの内容全体を調べる必要がある非ジャーナリングファイルシステムの場合ではありません。
このジャーナリングは、ジャーナリングを行わない場合よりも破損しにくい傾向がありますが、破損は依然として発生する可能性があります。たとえば、ハードドライブが機械的に誤動作している場合、またはジャーナル自体への書き込みが失敗または中断している場合。
ジャーナリングの基本的な前提は、通常、ジャーナルエントリの記述が、記述されている実際のトランザクションよりもはるかに高速であることです。そのため、OSが(ジャーナル)書き込みを注文してからそれを実行するハードドライブまでの期間は、通常の書き込みよりもはるかに短くなります。
いや
メタデータジャーナリングと呼ばれる最も一般的なタイプのジャーナリングは、データではなくファイルシステムの整合性のみを保護します。これにはxfs
、デフォルトモードの、およびext3
/ ext4
が含まれdata=ordered
ます。
非ジャーナリングファイルシステムがクラッシュしfsck
た場合、次回の起動時にチェックされます。 ファイルシステム上のfsck
すべてのiノードをスキャンし、使用済みとしてマークされているが到達できない(ファイル名がない)ブロックを探し、それらのブロックを未使用としてマークします。これを行うには長い時間がかかります。
メタデータジャーナリングファイルシステムでは、を実行する代わりにfsck
、変更中のブロックを認識しているため、パーティション全体を検索せずに空きブロックとしてマークできます。
データジャーナリングと呼ばれる、あまり一般的ではないタイプのジャーナリングext3
がありdata=journal
ます。これは、オプションでマウントすると実行されます。
論理演算のリストだけでなく、ジャーナルへの各書き込みの内容全体を書き込むことにより、すべてのデータを保護しようとします。ただし、データを2回書き込むため、はるかに遅くなる可能性があります。
他の人が指摘しているように、ハードドライブがまだハードドライブのキャッシュにあるにもかかわらず、ハードドライブがデータを保存したことをオペレーティングシステムに伝えた可能性があるため、これでも保証ではありません。
詳細については、Wikipedia Journaling File Systemの記事とext4ドキュメントの Data Modeセクションをご覧ください。
data=journal
が、機能としてはまったく意味がありませんか?
ファイルシステムは、電源障害が発生した場合、ハードウェアが何をするのかわからないため、ファイルシステムの一貫性を保証できません。
ハードドライブが書き込み用にデータをバッファリングするが、データを書き込み済みで適切な書き込みバリアをサポートしていないことをOSに伝えると、前の書き込みがプラッターにヒットせず、後の書き込みが順不同の書き込みが発生する可能性があります持っています。詳細については、このserverfaultの回答をご覧ください。
また、磁気HDDのヘッドの位置は電磁石で制御されます。書き込みの途中で電源が落ちた場合、ヘッドの移動中に一部のデータが引き続き書き込まれ、ファイルシステムが書き込みを意図していないブロックのデータが破損する可能性があります。
ほとんどの場合、答えは「いいえ」です。