web-dev-qa-db-ja.com

ジャーナルされたファイルシステムと電源障害

EXT3/EXT4などのジャーナリングファイルシステムでさえ、停電時に破損する可能性があると聞きました。ウィキペディアから[1]:

In the event of a system crash or power failure, 
such file systems are quicker to bring back online and 
less likely to become corrupted.

誰かが次のような例を挙げて詳細を提供できますか

  1. 破損が発生する可能性があります
  2. ジャーナル化されたファイルシステムによって破損が回避されます

[1] http://en.wikipedia.org/wiki/Journaling_file_system

3
Ryan

ディスク内の並べ替えが原因で、最近のほとんどのディスクでも破損が発生する可能性があります。

最近のディスクは通常、パフォーマンスを高速化するために使用されるリクエストの並べ替えを行います(書き込みを並べ替えてリクエストのリスト全体の見栄えを悪くすることにより)、これは タグ付きコマンドキューイング と呼ばれます。

現在のヘッド位置から、オペレーティングシステムが実際の順序として要求した順序とは異なる順序で書き込む方が効率的であるため、ディスク上のジャーナルへの書き込みが遅れる可能性があります。つまり、ジャーナルがコミットされる前にブロックをコミットできます。

これを解決する方法は、オペレーティングシステムに、ジャーナルがコミットされるのを明示的に待機させてから、それ以上の書き込みをコミットすることです。これはバリアとして知られています。ほとんどのファイルシステムはデフォルトでこれを使用せず、マウントオプションで明示的に有効にする必要があります。

mount -o barrier=1 /dev/sda /mntpnt

バリアの大きな欠点は、I/Oが遅くなる傾向があり、場合によっては劇的に(約30%)、デフォルトで有効になっていないことです。これに加えて、LVMやRaidなどの標準ディスクの上に論理レイヤーを追加し始めると、事態は二重になります。 LVM(比較的最近)はほとんどのLV構成にバリアサポートを追加し、mdadmはしばらくの間それを持っていたようです。

12
Matthew Ife

ほとんどのジャーナルファイルシステム(ext3/4、ntfs)は、メタデータのみをトランザクションで保護します。停電が発生した場合、ユーザーデータに一貫性がなくなる可能性がありますが、メタデータは問題ありません。

Zfsと私はxfsがトランザクションとログを使用してメタデータとユーザーデータの両方を保護すると思います。

1
longneck

バリア は停電時の破損を回避する方法ですが、この安全機能には パフォーマンスヒット が付属しています。両方の長所(パフォーマンス/バリア=オフで、破損のリスクはほとんどありません)は、もう少しコストがかかります。不揮発性のバッテリバックアップ式書き込みキャッシュを備えたデバイスを使用してください。

0
Gaia