第22章 書き込みバリア


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

22.1. 書き込みバリアの重要性

ファイルシステムはメタデータを安全に更新し、整合性を確保します。ジャーナル化されたファイルシステムは、メタデータの更新をトランザクションにバンドルし、次の方法で永続ストレージに送信します。
  1. ファイルシステムは、トランザクションの本文をストレージデバイスに送信します。
  2. ファイルシステムは、コミットブロックを送信します。
  3. トランザクションとそれに対応するコミットブロックがディスクに書き込まれる場合、ファイルシステムは、トランザクションが電源障害に耐えられると想定します。
ただし、電源障害時のファイルシステムの整合性は、キャッシュが余分にあるストレージデバイスでは複雑になります。ローカルの S-ATA や SAS ドライブのようなストレージターゲットデバイスには、32MB から 64MB のサイズの書き込みキャッシュがある場合があります (最新のドライブを使用する場合)。ハードウェア RAID コントローラーには、多くの場合、内部書き込みキャッシュが含まれます。さらに、Net App、IBM、Hitachi、EMC などのハイエンドアレイにも大きなキャッシュがあります。
書き込みキャッシュがあるストレージデバイスは、データがキャッシュにあると I/O を完了と報告します。キャッシュが電力を失うと、そのデータも失われます。さらに悪いことに、キャッシュが永続ストレージにデステージされると、元のメタデータの順序が変更される可能性があります。これが発生すると、完全に関連付けられたトランザクションがない状態で、コミットブロックがディスクに存在する可能性があります。その結果、ジャーナルは、電力損失からの復旧中に、初期化されていないトランザクションブロックをファイルシステムに再生する場合があります。これにより、データの不整合や破損が発生する可能性があります。

書き込みバリアのしくみ

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

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.