Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第22章 Write Barriers

書き込みバリアは、揮発性の書き込みキャッシュを持つストレージデバイスが切れた場合も、ファイルシステムのメタデータが正しく書き込まれ、永続ストレージで順序付けられないように使用されるカーネルメカニズムです。書き込みバリアが有効にされたファイルシステムにより、fsync() を介して送信されるデータが、電源ロス全体で永続化されるようにします。
書き込みバリアを有効にすると、一部のアプリケーションのパフォーマンスが大幅に低下します。具体的には、fsync() を使用する、または大量の小規模なファイルを作成/削除するアプリケーションは、かなり遅くなる可能性があります。

22.1. Write Barriers の重要性

ファイルシステムはメタデータを安全に更新し、一貫性を確保します。ジャーナル化されたファイルシステムバンドルメタデータの更新をトランザクションにアップデートし、以下のように永続ストレージに送信します。
  1. ファイルシステムはトランザクションのボディーをストレージデバイスに送信します。
  2. 次に、コミットブロックが送信されます。
  3. トランザクションとそれに対応するコミットブロックがディスクに書き込まれた場合、ファイルシステムはトランザクションが電源障害後も存続することを想定します。
ただし、電源障害時のファイルシステムの整合性は、追加のキャッシュがあるストレージデバイスにより複雑になります。ローカルの S-ATA や SAS ドライブなどのストレージターゲットデバイスには、サイズ(最新のドライブ)で 32MB から 64MB への書き込みキャッシュが搭載される場合があります。ハードウェア RAID コントローラーには、多くの場合、内部書き込みキャッシュが含まれます。NetApp、IBM、Hitachi、EMC(among others)からの、さらに終了アレイは大規模なキャッシュでもあります。
データがキャッシュにあると、書き込みキャッシュを含むストレージデバイスは I/O を「complete」と報告します。キャッシュが電源を失った場合は、そのデータも失います。また、キャッシュが永続ストレージに非アクティブ化されると、元のメタデータの順序が変わる可能性があります。これが発生すると、完了済みのトランザクションが配置されていない状態でコミットブロックがディスクに存在することがあります。その結果、ジャーナルはこれらの初期化されていないトランザクションブロックを後の用語リカバリー時にファイルシステムに再生することがあります。これにより、データの不整合と破損が生じます。

Write Barriers の仕組み

書き込みバリアは、ストレージ書き込みキャッシュのフラッシュを使用する Linux カーネルで、I/O の前後に実装されます。これは、順序クリティカルです。トランザクションが書き込まれると、ストレージキャッシュはフラッシュされ、コミットブロックが書き込まれ、キャッシュが再びフラッシュされます。これにより、以下が確保されます。
  • ディスクにはすべてのデータが含まれます。
  • 並べ替えは実行されません。
バリアを有効にすると、fsync() 呼び出しにより、ストレージキャッシュのフラッシュも発行されます。これにより、fsync() が返した直後に電源の損失が発生した場合でも、ファイルデータがディスク上の永続化されるようになります。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。