第1章 LVM 上の VDO の概要

Virtual Data Optimizer (VDO) 機能は、ストレージ用にインラインのブロックレベルの重複排除、圧縮、およびシンプロビジョニングを提供します。VDO は、LVM シンプロビジョニングボリュームと同様に、論理ボリュームマネージャー (LVM) 論理ボリューム (LV) の一種として管理できます。

LVM 上の VDO ボリューム (LVM-VDO) には、次のコンポーネントが含まれます。

VDO プール LV
  • これは、VDO LV のデータを保存、重複排除、および圧縮するバッキング物理デバイスです。VDO プール LV は、VDO ボリュームの物理サイズを設定します。これは、VDO がディスクに保存できるデータ量です。
  • 現在、各 VDO プール LV は 1 つの VDO LV のみを保持できます。そのため、VDO は VDO LV ごとに重複排除と圧縮を行います。別々の LV に保存されている重複データは、同じ VDO ボリュームのデータ最適化の恩恵を受けません。
VDO LV
  • これは、VDO プール LV 上にプロビジョニングされた仮想デバイスです。VDO LV は、VDO ボリュームのプロビジョニングされた論理サイズを設定します。これは、重複排除と圧縮が行われる前にアプリケーションがボリュームに書き込みできるデータ量です。
kvdo
  • Linux Device Mapper 層に読み込まれるカーネルモジュールは、重複排除、圧縮、シンプロビジョニングされたブロックストレージボリュームを提供します。
  • kvdo モジュールは、VDO プール LV が VDO LV を作成するために使用するブロックデバイスを公開します。その後、VDO LV がシステムによって使用されます。
  • kvdo は、VDO ボリュームからデータ論理ブロックを読み取る要求を受信すると、要求された論理ブロックを基礎となる物理ブロックにマッピングし、要求したデータを読み取って返します。
  • kvdo は、データのブロックを VDO ボリュームに書き込む要求を受信すると、最初にその要求が DISCARD または TRIM 要求であるかどうか、またはデータが均一にゼロであるかどうかを確認します。これらの条件のいずれかが満たされた場合、kvdo はブロックマップを更新し、要求を承認します。そうでない場合は、VDO はデータを処理して最適化します。
  • kvdo モジュールは、ボリュームの Universal Deduplication Service (UDS) インデックスを内部的に利用し、受信したデータの重複を分析します。UDS は、新しいデータごとに、そのデータが以前に保存されたデータと同一であるかどうかを確認します。インデックスで一致が見つかった場合、ストレージシステムはその一致の正確性を検証し、内部参照を更新して、同じ情報を複数回保存しないようにすることができます。

LVM シンプロビジョニング実装の構造をすでによく理解している方は、表 1.1 を参照してください。VDO のさまざまな要素がシステムにどのように提示されるかを確認できます。

表1.1 LVM 上の VDO と LVM シンプロビジョニングのコンポーネントの比較

 物理デバイスプロビジョニングされるデバイス

LVM 上の VDO

VDO プール LV

VDO LV

LVM シンプロビジョニング

シンプール

シンボリューム

VDO はシンプロビジョニングされているため、ファイルシステムとアプリケーションは使用中の論理領域のみを認識し、実際に使用可能な物理領域は認識しません。スクリプトを使用して、使用可能な物理領域を監視し、使用量がしきい値を超えた場合にアラートを生成します。利用可能な VDO スペースの監視については、VDO の監視 セクションを参照してください。