検索

2.4. VDO 書き込みモードの選択

download PDF

基となるブロックデバイスでの要件に応じて、VDO ボリュームに書き込みモードを設定できます。デフォルトでは、VDO は書き込みモードを自動的に選択します。

2.4.1. VDO 書き込みモード

VDO は、以下の書き込みモードに対応します。

sync

VDO が sync モードの場合、その上の層は、書き込みコマンドがデータを永続ストレージに書き込むことを想定します。したがって、このモードは、ファイルシステムやアプリケーションには必要ありません。FLUSH リクエストまたは FUA (強制ユニットアクセス) リクエストを発行すると、データは、重要な点で持続します。

VDO は、書き込みコマンドが完了したときに、基となるストレージが、データが永続ストレージに書き込まれることを保証する場合に限り、sync モードに設定する必要があります。つまり、ストレージには揮発性の書き込みキャッシュがないか、ライトスルーキャッシュが存在する必要があります。

async

VDO が async モードの場合は、書き込みコマンドが承認されたときに、データが永続ストレージに書き込まれることを VDO が保証しません。ファイルシステムまたはアプリケーションは、各トランザクションの重要な点でデータの永続性を保証するために、FLUSH リクエストまたは FUA リクエストを発行する必要があります。

書き込みコマンドが完了したときに、基となるストレージが永続ストレージに対するデータの書き込みを保証しない場合は、VDO を async モードに設定する必要があります。これは、ストレージに揮発性のあるライトバックキャッシュがある場合です。

async-unsafe

このモードには、async と同じプロパティーがありますが、ACID (Atomicity, Consistency, Isolation, Durability) に準拠していません。async と比較して、async-unsafe のパフォーマンスは向上します。

警告

VDO ボリュームに関する ACID コンプライアンスを想定するアプリケーションまたはファイルシステムが稼働する場合は、async-unsafe モードにより予想外のデータ損失が生じる可能性があります。

auto
auto モードは、各デバイスの性質に基づいて、sync または async を自動的に選択します。以下はデフォルトのオプションになります。

2.4.2. VDO 書き込みモードの内部処理

VDO の書き込みモードは syncasync です。以下では、これらのモードの操作について説明します。

kvdo モジュールが同期 (synch) モードで動作している場合は、以下を行います。

  1. リクエストのデータを一時的に、割り当てられたブロックに書き込み、リクエストを承認します。
  2. 承認が完了すると、ブロックデータの MurmurHash-3 署名を計算してブロックの重複排除が試行されます。これは、VDO インデックスに送信されます。
  3. VDO インデックスに同じ署名とともにブロックのエントリーが含まれる場合、kvdo は示されたブロックを読み込み、同一であるかを検証するために 2 つのブロックのバイト対バイトの比較を行います。
  4. 同一であることが確認されると、kvdo はブロックマップを更新して、論理ブロックが、一致する物理ブロックを指定し、割り当てられた物理ブロックをリリースします。
  5. VDO インデックスに、書き込まれているブロックの署名のエントリーを含まない場合や、示されたブロックが同じデータを含まない場合は、kvdo はブロックマップを更新して、一時的な物理ブロックを永続的にします。

kvdo が非同期 (async) モードで動作している場合は、以下のコマンドを実行します。

  1. データを書き込む代わりに、リクエストをすぐに承認します。
  2. 上記の説明と同じように、ブロックの重複排除試行が行われます。
  3. ブロックが重複していることになると、kvdo はブロックマップを更新し、割り当てられたブロックを解放します。解放しない場合は、リクエストのデータが、割り当てられたブロックに書き込み、ブロックマップを更新して物理ブロックを永続的にします。

2.4.3. VDO ボリュームにおける書き込みモードの確認

この手順では、選択した VDO ボリュームに対するアクティブな書き込みモードをリスト表示します。

手順

  • 以下のコマンドを使用して、VDO ボリュームが使用する書き込みモードを表示します。

    # vdo status --name=my-vdo

    出力されるファイルには、以下が記載されます。

    • 設定した書き込みポリシー - syncasync、または auto から選択されるオプションです。
    • 書き込みポリシー - VDO が適用される特定の書き込みモードで、sync または async になります。

2.4.4. 揮発性キャッシュの確認

この手順では、ブロックデバイスに揮発性キャッシュがあるかどうかを確認します。情報を使用して、VDO 書き込みモードである syncasync のいずれかを選択できます。

手順

  1. デバイスにライトバックキャッシュがあるかどうかを判断する場合は、以下のいずれか方法を使用します。

    • sysfs ファイルの /sys/block/block-device/device/scsi_disk/identifier/cache_type を読み込みます。以下に例を示します。

      $ cat '/sys/block/sda/device/scsi_disk/7:0:0:0/cache_type'
      
      write back
      $ cat '/sys/block/sdb/device/scsi_disk/1:2:0:0/cache_type'
      
      None
    • また、カーネルブートログでは、上記のデバイスに書き込みキャッシュがあるかどうかを調べることができます。

      sd 7:0:0:0: [sda] Write cache: enabled, read cache: enabled, does not support DPO or FUA
      sd 1:2:0:0: [sdb] Write cache: disabled, read cache: disabled, supports DPO and FUA
  2. 上の例では、以下のようになります。

    • デバイス sda には、ライトバックキャッシュがある ことが示されています。async モードを使用します。
    • デバイス sdb には、ライトバックキャッシュが ない ことが示されています。sync モードを使用します。

    cache_type の値が None または write through である場合は、sync 書き込みモードを使用するように VDO を設定する必要があります。

2.4.5. VDO 書き込みモードの設定

この手順では、既存のボリュームの場合、またはボリュームの新規作成時に、VDO ボリュームに書き込みモードを設定します。

重要

誤った書き込みモードを使用すると、停電、システムクラッシュ、またはディスクとの接続が予期せず失われた時に、データが失われることがあります。

前提条件

手順

  • 既存の VDO ボリュームまたは新規ボリュームの作成時に、書き込みモードを設定できます。

    • 既存の VDO ボリュームを変更するには、以下のコマンドを使用します。

      # vdo changeWritePolicy --writePolicy=sync|async|async-unsafe|auto \
                              --name=vdo-name
    • VDO ボリュームの作成時に書き込みモードを指定するには、--writePolicy=sync|async|async-unsafe|auto オプションを vdo create コマンドに追加します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.