Menu Close

Red Hat Training

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

第30章 VDO 統合

30.1. VDO の理論的概要

VDO (Virtual Data Optimizer) は、ブロックストレージの圧縮および重複排除のプールを簡単に作成できるブロック仮想化技術です。
  • 重複排除 とは、重複ブロックの複数のコピーを削除することで、ストレージリソースの消費を低減させるための技術です。
    同じデータを複数回書き込むのではなく、VDO は各重複ブロックを検出し、元のブロックへの参照として記録します。VDO は、VDO の上にあるストレージ層により使用されている論理ブロックアドレスから、VDO の下にあるストレージ層で使用される物理ブロックアドレスへのマッピングを維持します。
    重複排除後、複数の論理ブロックアドレスは、同じ物理ブロックアドレスにマッピングできます。これらは、共有ブロック と呼ばれます。ブロックストレージの共有は、VDO が存在しない場合に、読み込みブロックと書き込みブロックが行われるストレージのユーザーには表示されません。共有ブロックを上書きすると、新しい物理ブロックが割り当てられて新しいブロックデータが保存され、共有物理ブロックにマッピングされているその他の論理ブロックアドレスが変更されないようにします。
  • 圧縮 は、ログファイルやデータベースなど、必ずしもブロックレベルの冗長性を示さないファイル形式で適切に機能するデータ削減技術です。詳細は、「圧縮の使用」 を参照してください。
VDO ソリューションは、以下のコンポーネントで構成されます。
kvdo
Linux Device Mapper 層に読み込まれるカーネルモジュールは、重複排除され、圧縮され、シンプロビジョニングされたブロックストレージボリュームを提供します。
uds
ボリューム上の Universal Deduplication Service (UDS) インデックスと通信し、データの重複を分析するカーネルモジュール。
コマンドラインツール
最適化されたストレージの設定および管理

30.1.1. UDS カーネルモジュール (uds)

UDS インデックスは、VDO 製品の基盤を提供します。新しい各データについて、その部分が保存してあるデータ内容と同一であるかどうかを素早く判断します。インデックスが一致すると、ストレージシステムは、同じ情報を複数格納しないように、既存の項目を内部的に参照できます。
UDS インデックスは、カーネル内でuds カーネルモジュールとして実行されます。

30.1.2. VDO カーネルモジュール (kvdo)

kvdo Linux カーネルモジュールは、Linux デバイスマッパー層内でブロック層の重複排除サービスを提供します。Linux カーネルでは、Device Mapper はブロックストレージのプールを管理する一般的なフレームワークとして機能し、カーネルのブロックインターフェースと実際のストレージデバイスドライバーとの間でストレージスタックにブロック処理モジュールを挿入できるようにします。
kvdo モジュールは、ブロックストレージ向けにダイレクトアクセスできるブロックデバイスとして公開されているか、XFS、ext4 など、利用可能な多くの Linux ファイルシステムのいずれかを介して提供されます。kvdo が VDO ボリュームからデータ論理ブロックを読み取る要求を受信すると、要求された論理ブロックを基礎となる物理ブロックにマッピングし、要求したデータを読み取り、返します。
kvdo は、データのブロックを VDO ボリュームに書き込む要求を受信すると、最初にそれが DISCARD または TRIM 要求であるかどうか、またはデータが均一にゼロであるかどうかを確認します。いずれかの条件が成立すると、kvdo はブロックマップを更新し、リクエストを承認します。それ以外の場合は、リクエストで使用する物理ブロックが割り当てられます。

VDO 書き込みポリシーの概要

kvdo モジュールが同期モードで動作している場合は、以下を行います。
  1. リクエストのデータを一時的に、割り当てられたブロックに書き込み、リクエストを承認します。
  2. 承認が完了すると、ブロックデータの MurmurHash-3 署名を計算してブロックの重複排除が試行されます。これは、VDO インデックスに送信されます。
  3. VDO インデックスに同じ署名とともにブロックのエントリーが含まれる場合、kvdo は示されたブロックを読み込み、同一であるかを検証するために 2 つのブロックのバイト対バイトの比較を行います。
  4. 同一であることが確認されると、kvdo はブロックマップを更新して、論理ブロックが、一致する物理ブロックを指定し、割り当てられた物理ブロックをリリースします。
  5. VDO インデックスに、書き込まれているブロックの署名のエントリーを含まない場合や、示されたブロックが同じデータを含まない場合は、kvdo はブロックマップを更新して、一時的な物理ブロックを永続的にします。
kvdo が非同期モードで動作している場合は、以下のコマンドを実行します。
  1. データを書き込む代わりに、リクエストをすぐに承認します。
  2. 上記の説明と同じように、ブロックの重複排除試行が行われます。
  3. ブロックが重複していることになると、kvdo はブロックマップを更新し、割り当てられたブロックを解放します。それ以外の場合は、要求のデータが割り当てられたブロックに書き込まれ、ブロックマップが更新されて物理ブロックが永続的になります。

30.1.3. VDO ボリューム

VDO は、バッキングストアとしてブロックデバイスを使用します。これは、複数のディスク、パーティション、またはフラットファイルで構成される物理ストレージの集約を含めることができます。ストレージ管理ツールで VDO ボリュームを作成すると、VDO は、UDS インデックスと VDO ボリュームの両方にボリュームから領域を確保します。これは相互作用し、重複排除されたブロックストレージをユーザーおよびアプリケーションに提供します。図30.1「VDO ディスクの構成」 を参照してください。

図30.1 VDO ディスクの構成

VDO ディスクの構成

スラブ

VDO ボリュームの物理ストレージは複数のスラブに分割され、それぞれが物理領域内の連続した領域になります。指定のボリュームのスラブはすべて同じサイズになります。この値は、128 MB の 2 乗で、最大 32 GB にすることができます。
小規模なテストシステムで VDO の評価を容易にするために、デフォルトのスラブサイズは 2 GB です。1 つの VDO ボリュームに、最大 8192 個のスラブが含まれる場合があります。したがって、2 GB のスラブを使用したデフォルト設定では、許容される物理ストレージの最大値は 16 TB です。32 GB のスラブを使用する場合、許可される物理ストレージは最大 256 TB です。スラブ全体が、メタデータ用に VDO により予約されているため、ユーザーデータの格納には使用できません。
スラブサイズは、VDO ボリュームのパフォーマンスには影響しません。

表30.1 物理ボリュームのサイズ別に推奨される VDO スラブサイズ

物理ボリュームのサイズ推奨されるスラブサイズ
10–99 GB1 GB
100 GB - 1 TB2 GB
2–256 TB32 GB
スラブのサイズは、vdo create コマンドに --vdoSlabSize=megabytes オプションを指定することで制御できます。

物理サイズと利用可能な物理サイズ

物理サイズと利用可能な物理サイズは、どちらも、VDO が利用できるブロックデバイスのディスク領域の量を表します。
  • 物理サイズ は、基盤となるブロックデバイスと同じサイズになります。VDO は、以下の目的でこのストレージを使用します。
    • 重複排除および圧縮される可能性があるユーザーデータ
    • UDS インデックスなどの VDO メタデータ
  • 利用可能な物理サイズ は、VDO がユーザーデータに使用できる物理サイズの一部です。
    これは、メタデータのサイズを引いた物理サイズと同等で、指定のスラブサイズでボリュームをスラブに分割した後の残りを引いたものと同じです。
さまざまなサイズのブロックデバイスで、ストレージ VDO メタデータに必要な量の例は、「物理ボリュームのサイズ別の VDO システム要件の例」 を参照してください。

論理サイズ

--vdoLogicalSize オプションを指定しない場合は、使用可能な物理ボリュームのサイズが、論理ボリュームのデフォルトサイズとなります。図30.1「VDO ディスクの構成」 では、VDO で重複排除したストレージターゲットがブロックデバイス上に完全に配置されています。つまり、VDO ボリュームの物理サイズは、基礎となるブロックデバイスと同じサイズになります。
VDO は現在、絶対最大論理サイズ 4PB の物理ボリュームの最大 254 倍の論理サイズに対応します。

30.1.4. コマンドラインツール

VDO には、設定および管理用の次のコマンドラインツールが同梱されています。
vdo
VDO ボリュームの作成、設定、および制御
vdostats
使用率とパフォーマンスの統計を提供します。