第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 ボリュームのプロビジョニングされた論理サイズを設定します。これは、重複排除と圧縮が行われる前に、アプリケーションがボリュームに書き込むことができるデータ量の上限です。
dm-vdo-
dm-vdoモジュールは、重複排除、圧縮、シンプロビジョニングされたブロックストレージボリュームを提供する Linux Device Mapper ターゲットです。 -
dm-vdoモジュールは、VDO プール LV が VDO LV の作成に使用するブロックデバイスを公開します。その後、VDO LV がシステムによって使用されます。 -
dm-vdoは、VDO ボリュームから論理的なデータブロックを読み取る要求を受け取ると、応答します。これは、要求された論理ブロックを基となる物理ブロックにマッピングします。次に、要求されたデータを読み込み、返します。 -
dm-vdoは、VDO ボリュームにデータブロックを書き込む要求を受け取ると、それが DISCARD、TRIM、またはゼロデータであるかどうかを確認します。これらの条件のいずれかが満たされた場合、dm-vdoはブロックマップを更新し、要求を確認します。そうでない場合は、VDO はデータを処理して最適化します。 -
dm-vdoモジュールは、ボリューム上の Universal Deduplication Service (UDS) インデックスを内部的に使用し、受信データを分析して重複を検出します。UDS は、新しいデータごとに、そのデータが以前に保存されたデータと同一であるかどうかを確認します。インデックスで一致が特定された場合、ストレージシステムはその一致の正確性を検証できます。そうすれば、重複データの保存を防ぐためにレコードを更新できます。
-
LVM シンプロビジョニング実装の構造をすでに理解している場合は、次の表を参照してください。これは、VDO のさまざまな側面がシステムにどのように提示されるかを示しています。
| 物理デバイス | プロビジョニングされるデバイス | |
|---|---|---|
| LVM 上の VDO | VDO プール LV | VDO LV |
| LVM シンプロビジョニング | シンプール | シンボリューム |
VDO はシンプロビジョニング方式を採用しているため、ファイルシステムとアプリケーションは実際に使用可能な物理容量ではなく、使用されている論理容量のみを認識します。スクリプトを使用して、使用可能な物理領域を監視し、使用量がしきい値を超えた場合にアラートを生成します。