RHEL での論理ボリュームの重複排除および圧縮

Red Hat Enterprise Linux 8

LVM に VDO をデプロイしてストレージ容量を増やす

Red Hat Customer Content Services

概要

Logical Volume Manager (LVM) の Virtual Data Optimizer (VDO) 機能を使用して、重複排除および圧縮された論理ボリュームを管理します。VDO は、LVM のシンプロビジョニングボリュームと同様に、LVM の論理ボリューム (LV) の一種として管理できます。
VDO on LVM (LVM-VDO) をデプロイして、ブロックアクセス、ファイルアクセス、ローカルストレージ、およびリモートストレージ用の重複排除ストレージを提供できます。VDO ボリュームの物理スペースが 100% 使用されることを避けるために、シンプロビジョニングされた VDO ボリュームを設定することもできます。
VDO ボリュームを LVM にインポートした後、LVM ツールを使用して VDO ボリュームを管理できます。

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

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ を参照してください。

Red Hat ドキュメントへのフィードバック (英語のみ)

Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。

Jira からのフィードバック送信 (アカウントが必要)

  1. Jira の Web サイトにログインします。
  2. 上部のナビゲーションバーで Create をクリックします。
  3. Summary フィールドにわかりやすいタイトルを入力します。
  4. Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
  5. ダイアログの下部にある Create をクリックします。

第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 ボリュームのプロビジョニングされた論理サイズを設定します。これは、重複排除と圧縮が行われる前にアプリケーションがボリュームに書き込みできるデータ量です。

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

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

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

LVM 上の VDO

VDO プール LV

VDO LV

LVM シンプロビジョニング

シンプール

シンボリューム

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

第2章 LVM-VDO の要件

LVM 上の VDO には、配置とシステムリソースに関する特定の要件があります。

2.1. VDO メモリー要件

各 VDO ボリュームには、2 つの異なるメモリー要件があります。

VDO モジュール

VDO には、固定メモリー 38 MB と変動用に容量を確保する必要があります。

  • 設定済みのブロックマップキャッシュサイズ 1 MB ごとに 1.15 MB のメモリー。ブロックマップキャッシュには、少なくとも 150 MB のメモリーが必要です。
  • 1 TB の論理領域ごとに 1.6 MB のメモリー。
  • ボリュームが管理する物理ストレージの 1 TB ごとに 268 MB のメモリー。
UDS インデックス

Universal Deduplication Service (UDS) には、最低 250 MB のメモリーが必要です。このメモリー量は、重複排除が使用するデフォルトの容量です。この値は、インデックスに必要なストレージ容量にも影響するため、VDO ボリュームをフォーマットするときに設定できます。

UDS インデックスに必要なメモリーは、インデックスタイプと、重複排除ウィンドウに必要なサイズで決定されます。

インデックスタイプ重複排除ウィンドウ備考

Dense

RAM 1 GB あたり 1 TB

通常、最大 4 TB の物理ストレージには、1 GB の dense インデックスで十分です。

Sparse

RAM 1 GB あたり 10 TB

通常、最大 40 TB の物理ストレージには、1 GB の sparse インデックスで十分です。

注記

VDO ボリュームの最小ディスク使用量は、デフォルト設定のスラブサイズ 2 GB、dense インデックス 0.25 を使用した場合、約 4.7 GB が必要です。これにより、0% の重複排除または圧縮で書き込むための 2 GB 弱の物理データが提供されます。

ここでの最小のディスク使用量は、デフォルトのスラブサイズと dense インデックスの合計です。

VDO で推奨されるモードは、UDS の sparse インデックス機能です。この機能は、データの一時的な局所性に依存し、メモリー内で最も関連性の高いインデックスエントリーのみを保持しようとします。sparse インデックスでは、UDS は、同じ量のメモリーを使用しながら、dense を使用したときの 10 倍以上長い重複排除ウィンドウを維持できます。

sparse インデックスを使用すると対象範囲が広くなりますが、dense インデックスの方が提供する重複排除アドバイスが多くなります。ほとんどのワークロードでは、メモリー量が同じであれば、dense インデックスと sparse インデックスの重複排除率の差はごくわずかです。

2.2. VDO ストレージの領域要件

VDO ボリュームを設定して、最大 256 TB の物理ストレージを使用するように設定できます。データを格納するのに使用できるのは、物理ストレージの一部のみです。このセクションでは、VDO に管理されるボリュームで使用可能なサイズを特定するための計算方法を説明します。

VDO では、2 種類の VDO メタデータと UDS インデックスにストレージが必要です。

  • 最初のタイプの VDO メタデータは、4 GB の 物理ストレージ ごとに約 1 MB を使用し、スラブごとにさらに 1 MB を使用します。
  • 2 番目のタイプの VDO メタデータは、論理ストレージ 1 GB ごとに約 1.25 MB を消費し、最も近いスラブに切り上げられます。
  • UDS インデックスに必要なストレージの容量は、インデックスの種類と、インデックスに割り当てられている RAM の容量によって異なります。RAM 1 GB ごとに、dense の UDS インデックスはストレージを 17 GB 使用し、sparse の UDS インデックスはストレージを 170 GB 使用します。

2.3. 物理サイズ別の VDO 要件の例

以下の表は、基盤となるボリュームの物理サイズに基づいた、VDO のシステム要件の概算を示しています。それぞれの表には、プライマリーストレージ、バックアップストレージなどの、目的のデプロイメントに適した要件が記載されています。

正確な数値は、VDO ボリュームの設定により異なります。

プライマリーストレージのデプロイメント

プライマリーストレージの場合、UDS インデックスのサイズは、物理サイズの 0.01% から 25% になります。

表2.1 プライマリーストレージのストレージ要件およびメモリー要件

物理サイズメモリー使用率: UDSメモリー使用率: VDOディスク使用率インデックスタイプ

10 GB - 1 TB

250 MB

472 MB

2.5 GB

Dense

2 - 10 TB

1 GB

3 GB

10 GB

Dense

250 MB

22 GB

Sparse

11 - 50 TB

2 GB

14 GB

170 GB

Sparse

51 - 100 TB

3 GB

27 GB

255 GB

Sparse

101 - 256 TB

12 GB

69 GB

1020 GB

Sparse

バックアップストレージのデプロイメント

バックアップストレージの場合、UDS インデックスは、バックアップセットのサイズよりは大きくなりますが、物理サイズと同じか、より小さくなります。バックアップセットや物理サイズが今後大きくなる可能性がある場合は、これをインデックスサイズに組み込んでください。

表2.2 バックアップストレージのストレージ要件およびメモリー要件

物理サイズメモリー使用率: UDSメモリー使用率: VDOディスク使用率インデックスタイプ

10 GB - 1 TB

250 MB

472 MB

2.5 GB

Dense

2 - 10 TB

2 GB

3 GB

170 GB

Sparse

11 - 50 TB

10 GB

14 GB

850 GB

Sparse

51 - 100 TB

20 GB

27 GB

1700 GB

Sparse

101 - 256 TB

26 GB

69 GB

3400 GB

Sparse

2.4. ストレージスタックでの LVM-VDO の配置

VDO 論理ボリュームの下に配置する必要があるストレージ層と、その上に配置する必要があるストレージ層があります。

シックプロビジョニングの層を VDO の上に配置することもできますが、その場合はシックプロビジョニングの保証に頼ることができません。VDO 層はシンプロビジョニングされているため、シンプロビジョニングの影響は、上記のすべての層に及びます。VDO ボリュームが監視されていない場合には、VDO 層の上にあるシックプロビジョニングのボリュームで、物理領域が不足する可能性があります。

以下の層は、VDO の配下にある場合にサポートされます。VDO 層の上に配置しないでください。

  • DM Multipath
  • DM Crypt
  • ソフトウェア RAID (LVM または MD RAID)

以下の設定には 対応していません

  • ループバックデバイスの上に VDO を配置する
  • VDO の上に暗号化されたボリュームを配置する
  • VDO ボリュームにパーティションを作成する
  • VDO ボリュームの上に RAID (LVM RAID、MD RAID、またはその他のタイプ) を配置する
  • LVM-VDO に Ceph ストレージをデプロイする

第3章 重複排除および圧縮された論理ボリュームの作成

VDO 機能を使用してデータの重複排除と圧縮を行う LVM 論理ボリュームを作成できます。

3.1. LVM-VDO のデプロイメントシナリオ

LVM 上の VDO (LVM-VDO) は、さまざまな方法でデプロイして、以下に対して、重複排除したストレージを提供できます。

  • ブロックアクセス
  • ファイルアクセス
  • ローカルストレージ
  • リモートストレージ

LVM-VDO は、通常の論理ボリューム (LV) として重複排除したストレージを公開するため、そのストレージを標準ファイルシステム、iSCSI および FC のターゲットドライバーとともに、または統合ストレージとして使用できます。

注記

現在、LVM-VDO への Ceph Storage のデプロイはサポートされていません。

KVM

LVM-VDO は、Direct Attached Storage を使用して設定された KVM サーバーにデプロイできます。

KVM を使用した LVM-VDO デプロイメント
ファイルシステム

VDO LV 上にファイルシステムを作成し、NFS サーバーまたは Samba を使用して NFS または CIFS ユーザーに公開できます。

NAS を使用した LVM-VDO デプロイメント
iSCSI ターゲット

VDO LV 全体を、iSCSI ターゲットとしてリモート iSCSI イニシエーターにエクスポートできます。

ブロックストレージターゲットを使用した LVM-VDO デプロイメント
暗号化

DM Crypt などのデバイスマッパー (DM) メカニズムは VDO と互換性があります。VDO LV ボリュームを暗号化すると、データのセキュリティーを確保しながら、VDO LV より上のファイルシステムを重複排除できます。

暗号化を使用した LVM-VDO デプロイメント
重要

VDO LV の上に暗号化層を適用しても、データの重複排除はほとんど行われません。VDO が重複ブロックを排除する前に、暗号化によって重複ブロックが変更されます。

暗号化層は常に VDO LV の下に配置してください。

3.2. LVM-VDO ボリュームの物理サイズおよび論理サイズ

このセクションでは、VDO が使用できる物理サイズ、利用可能な物理サイズ、論理サイズを説明します。

物理サイズ

これは、VDO プール LV に割り当てられた物理エクステントと同じサイズです。VDO は、以下の目的でこのストレージを使用します。

  • 重複排除および圧縮される可能性があるユーザーデータ
  • UDS インデックスなどの VDO メタデータ
利用可能な物理サイズ

これは、VDO がユーザーデータに使用できる物理サイズの一部です。

これは、物理サイズからメタデータのサイズを引いたものに相当し、スラブサイズの倍数に切り捨てられます。

論理サイズ

これは、VDO LV がアプリケーションに提示するプロビジョニングされたサイズです。通常、これは利用可能な物理サイズよりも大きくなります。VDO は現在、絶対最大論理サイズ 4 PB の物理ボリュームの最大 254 倍の論理サイズに対応します。

VDO 論理ボリューム (LV) をセットアップする際には、VDO LV が提示する論理ストレージのサイズを指定します。アクティブな仮想マシンまたはコンテナーをホストする場合、Red Hat は、論理と物理の割合が 10 対 1 のストレージをプロビジョニングすることを推奨します。つまり、物理ストレージを 1 TB 使用している場合は、論理ストレージを 10 TB にします。

--virtualsize オプションを指定しないと、VDO はボリュームを 1:1 の比率でプロビジョニングします。たとえば、VDO LV を 20 GB の VDO プール LV 上に配置すると、VDO はデフォルトのインデックスサイズが使用されている場合に UDS インデックス用に 2.5 GB を確保します。残りの 17.5 GB は、VDO メタデータおよびユーザーデータに提供されます。そのため、使用可能なストレージは 17.5 GB 以下になります。実際の VDO ボリュームを設定するメタデータにより、これよりも少なくなる可能性があります。

3.3. VDO のスラブサイズ

VDO ボリュームの物理ストレージは、複数のスラブに分割されます。各スラブは、物理領域における連続した領域です。特定のボリュームのスラブはすべて同じサイズで、128 MB の 2 のべき乗倍のサイズ (最大 32 GB) になります。

小規模なテストシステムで VDO を評価しやすくするため、デフォルトのスラブサイズは 2 GB です。1 つの VDO ボリュームには、最大 8192 個のスラブを含めることができます。したがって、デフォルト設定の 2 GB のスラブを使用する場合、許可される物理ストレージは最大 16 TB です。32 GB のスラブを使用する場合、許可される物理ストレージは最大 256 TB です。VDO は常に少なくとも 1 つのスラブ全体をメタデータ用に予約します。そのため、この予約されたスラブをユーザーデータの保存に使用することはできません。

スラブサイズは、VDO ボリュームのパフォーマンスには影響しません。

表3.1 物理ボリュームサイズ別の推奨 VDO スラブサイズ

物理ボリュームのサイズ推奨されるスラブサイズ

10 - 99 GB

1 GB

100 GB - 1 TB

2 GB

2 - 256 TB

32 GB

注記

VDO ボリュームの最小ディスク使用量は、デフォルト設定のスラブサイズ 2 GB、dense インデックス 0.25 を使用した場合、約 4.7 GB が必要です。これにより、0% の重複排除または圧縮で書き込むための 2 GB 弱の物理データが提供されます。

ここでの最小のディスク使用量は、デフォルトのスラブサイズと dense インデックスの合計です。

lvcreate コマンドに --config 'allocation/vdo_slab_size_mb=size-in-megabytes' オプションを指定すると、スラブサイズを制御できます。

3.4. VDO のインストール

この手順では、VDO ボリュームの作成、マウント、および管理に必要なソフトウェアをインストールします。

手順

  • VDO ソフトウェアをインストールします。

    # yum install lvm2 kmod-kvdo vdo

3.5. LVM-VDO ボリュームの作成

この手順では、VDO プール LV に VDO 論理ボリューム (LV) を作成します。

前提条件

  • VDO ソフトウェアをインストールしている。詳細は、VDO のインストール を参照してください。
  • 空きストレージ容量を持つ LVM ボリュームグループがシステムに存在する。

手順

  1. vdo1 などの VDO LV の名前を選択します。システムの VDO LV ごとに、異なる名前とデバイスを使用する必要があります。

    以下のすべてのステップで、vdo-name をその名前に置き換えてください。

  2. VDO LV を作成します。

    # lvcreate --type vdo \
               --name vdo-name
               --size physical-size
               --virtualsize logical-size \
               vg-name
    • vg-name を、VDO LV を配置する既存の LVM ボリュームグループの名前に置き換えます。
    • logical-size を、VDO LV が提供する論理ストレージのサイズに置き換えます。
    • 物理サイズが 16 TiB を超える場合は、以下のオプションを指定して、ボリューム上のスラブサイズを 32 GiB に増やします。

      --config 'allocation/vdo_slab_size_mb=32768'

      物理サイズが 16 TiB を超える場合にデフォルトのスラブサイズ 2 GiB を使用すると、lvcreate コマンドは次のエラーで失敗します。

      ERROR - vdoformat: formatVDO failed on '/dev/device': VDO Status: Exceeds maximum number of slabs supported

      例3.1 コンテナーストレージ用の VDO LV の作成

      たとえば、1 TB の VDO プール LV で、コンテナーストレージ用に VDO LV を作成するには、次のコマンドを実行します。

      # lvcreate --type vdo \
                 --name vdo1
                 --size 1T
                 --virtualsize 10T \
                 vg-name
      重要

      VDO ボリュームの作成中に問題が発生した場合は、ボリュームを削除してください。

  3. VDO LV にファイルシステムを作成します。

    • XFS ファイルシステムの場合:

      # mkfs.xfs -K /dev/vg-name/vdo-name
    • ext4 ファイルシステムの場合:

      # mkfs.ext4 -E nodiscard /dev/vg-name/vdo-name

関連情報

  • lvmvdo(7) man ページ

3.6. LVM-VDO ボリュームのマウント

この手順では、手動で、または永続的に、LVM-VDO ボリュームにファイルシステムをマウントします。

前提条件

手順

  • LVM-VDO ボリュームに手動でファイルシステムをマウントするには、以下のコマンドを使用します。

    # mount /dev/vg-name/vdo-name mount-point
  • 起動時にファイルシステムを自動的にマウントするように設定するには、/etc/fstab ファイルに以下の行を追加します。

    • XFS ファイルシステムの場合:

      /dev/vg-name/vdo-name mount-point xfs defaults 0 0
    • ext4 ファイルシステムの場合:

      /dev/vg-name/vdo-name mount-point ext4 defaults 0 0

    LVM-VDO ボリュームが、iSCSI などのネットワークを必要とするブロックデバイスに配置されている場合は、_netdev マウントオプションを追加します。iSCSI や、ネットワークを必要とするその他のブロックデバイスの _netdev マウントオプションに関する情報は、systemd.mount(5) の man ページの を参照してください。

関連情報

  • systemd.mount(5) man ページ

3.7. LVM-VDO ボリュームでの圧縮および重複排除設定の変更

この手順では、VDO プール論理ボリューム (LV) の圧縮および重複排除を有効または無効にします。

注記

圧縮と重複排除はデフォルトで有効になっています。

前提条件

  • LVM-VDO ボリュームがシステム上にある。

手順

  1. 論理ボリュームで圧縮および重複排除が有効かどうかを調べるには、次のコマンドを実行します。

    # lvs -o+vdo_compression,vdo_deduplication
  2. 稼働中の VDOPoolLV の重複排除インデックスと圧縮のステータスを確認します。

    # lvs -o+vdo_compression_state,vdo_index_state

    vdo_index_state は、errorcloseopeningclosingonline、および offline として表示されます。

  3. VDOPoolLV の圧縮を有効または無効にするには、次のコマンドを実行します。

    # lvchange --compression y|n  vg-name/vdopoolname
  4. VDOPoolLV の重複排除を有効または無効にするには、次のコマンドを実行します。

    # lvchange --deduplication y|n vg-name/vdopoolname

関連情報

  • lvmvdo(7) man ページ

3.8. Virtual Data Optimizer を使用したシンプロビジョニングの管理

VDO ボリュームの物理領域の使用率が 100% に近づいている場合、その状況に対処するために、シンプロビジョニングされた VDO ボリュームを設定し、今後の物理領域の拡張に備えることができます。たとえば、lvcreate 操作で -l 100%FREE を 使用する代わりに、'95%FREE' を使用して、必要に応じて後で回復できるように予約スペースを確保します。この手順では、以下の問題を解決する方法を説明します。

  • ボリュームの領域が不足している
  • ファイルシステムが読み取り専用モードになる
  • ボリュームにより ENOSPC が報告される
注記

VDO ボリュームの物理領域の高使用率に対処する最善の方法は、未使用のファイルを削除し、オンライン廃棄または fstrim を使用して、その未使用ファイルが使用しているブロックを破棄することです。VDO ボリュームの物理領域は、8192 スラブまでしか拡張できません。これは、デフォルトのスラブサイズが 2 GB の VDO ボリュームの場合は 16 TB、最大スラブサイズが 32 GB の VDO ボリュームの場合は 256 TB に相当します。

以下のすべての手順で、myvgmyvdo を、それぞれボリュームグループ名および VDO 名に置き換えます。

前提条件

  1. VDO ソフトウェアをインストールしている。詳細は、VDO のインストール を参照してください。
  2. 空きストレージ容量を持つ LVM ボリュームグループがシステムに存在する。
  3. lvcreate --type vdo --name myvdo myvg -L logical-size-of-pool --virtualsize virtual-size-of-vdo コマンドを使用した、シンプロビジョニングされた VDO ボリューム。詳細は、LVM-VDO ボリュームの作成 を参照してください。

手順

  1. シンプロビジョニングの VDO ボリュームに最適な論理サイズを判断します。

    # vdostats myvg-vpool0-vpool
    
    Device               1K-blocks Used     Available  Use% Space saving%
    myvg-vpool0-vpool   104856576  29664088 75192488   28%   69%

    領域の節約率を計算するには、以下の式を使用します。

    Savings ratio = 1 / (1 - Space saving%)

    この例では、次のようになります。

    • 約 80 GB のデータセットでは、約 3.22:1 の領域削減率が得られます。
    • データセットのサイズにこの比率を乗算すると、潜在的な論理サイズが得られます。同じ領域節約率でより多くのデータが VDO ボリュームに書き込まれる場合、これは 256 GB になります。
    • この数を 200 GB まで下げると、同じ領域節約率の場合、空き物理領域に安全なマージンを確保できる論理サイズになります。
  2. VDO ボリュームの空き物理領域を監視します。

    # vdostats myvg-vpool0-vpool

    このコマンドは定期的に実行して、VDO ボリュームの使用済み物理領域および空き物理領域の監視を行うことができます。

  3. オプション: 利用可能な /usr/share/doc/vdo/examples/monitor/monitor_check_vdostats_physicalSpace.pl スクリプトを使用して、VDO ボリュームの物理領域の使用状況に関する警告を表示します。

    # /usr/share/doc/vdo/examples/monitor/monitor_check_vdostats_physicalSpace.pl myvg-vpool0-vpool
  4. VDO ボリュームを作成すると、dmeventd 監視サービスは、VDO ボリュームの物理領域の使用を監視します。これは、VDO ボリュームの作成時または起動時にデフォルトで有効になります。

    VDO ボリュームの監視中に、journalctl コマンドを使用して、ログ内の dmeventd の出力を表示します。

    lvm[8331]: Monitoring VDO pool myvg-vpool0-vpool.
    ...
    
    lvm[8331]: WARNING: VDO pool myvg-vpool0-vpool is now 84.63% full.
    lvm[8331]: WARNING: VDO pool myvg-vpool0-vpool is now 91.01% full.
    lvm[8331]: WARNING: VDO pool myvg-vpool0-vpool is now 97.34% full.
  5. 利用可能な物理領域がほとんどない VDO ボリュームを修復します。VDO ボリュームに物理領域を追加できても、ボリュームを拡張する前に領域がいっぱいになった場合は、そのボリュームへの I/O を一時的に停止する必要があるかもしれません。

    ボリュームへの I/O を一時的に停止するには、以下の手順を実行します。VDO ボリューム myvdo には、/users/homeDir パスにマウントされたファイルシステムが含まれています。

    1. ファイルシステムをフリーズします。

      # xfs_freeze -f /users/homeDir
      
      # vgextend myvg /dev/vdc2
      
      # lvextend -l new_size myvg/vpool0-name
      
      # xfs_freeze -u /users/homeDir
    2. ファイルシステムをアンマウントします。

      # umount /users/homeDir
      
      # vgextend myvg /dev/vdc2
      
      # lvextend -l new_size myvg/vpool0-name
      
      # mount -o discard /dev/myvg/myvdo /users/homeDir
      注記

      キャッシュされたデータを含むファイルシステムをアンマウントまたはフリーズすると、キャッシュされたデータの書き込みが発生します。これにより、VDO ボリュームの物理領域がいっぱいになる可能性があります。VDO ボリュームの空き物理領域の監視しきい値を設定する場合は、ファイルシステムのデータキャッシュの最大量を考慮してください。

  6. ファイルシステムが使用しなくなったブロックは、fstrim ユーティリティーを使用してクリーンアップできます。VDO ボリュームにマウントしたファイルシステムに対して fstrim を実行すると、そのボリュームの空き物理領域が増える可能性があります。fstrim ユーティリティーは、VDO ボリュームに破棄を送信します。これは、以前使用したブロックへの参照を削除するのに使用されます。これらのブロックのいずれかが単一参照されている場合は、物理領域が使用可能になります。

    1. VDO の統計情報を確認して、現在の空き領域の量を確認します。

      # vdostats --human-readable myvg-vpool0-vpool
      
       Device             Size  Used  Available Use%  Space saving%
      myvg-vpool0-vpool  100.0G 95.0G 5.0G      95%   73%
    2. 未使用のブロックを破棄します。

      # fstrim /users/homeDir
    3. VDO ボリュームの空き物理領域を表示します。

      # vdostats --human-readable myvg-vpool0-vpool
      
      
       Device             Size    Used   Available Use%  Space saving%
      myvg-vpool0-vpool  100.0G   30.0G  70.0G     30%    43%

      この例では、ファイルシステムで fstrim を実行した後、VDO ボリュームで使用する物理領域 65 G が破棄によって回収されました。

      注記

      重複排除と圧縮のレベルが低いボリュームを破棄すると、重複排除と圧縮のレベルが高いボリュームを破棄するよりも、物理領域を回収できます。重複排除と圧縮のレベルが高いボリュームでは、物理領域を回収するために、未使用のブロックを破棄するだけでなく、より詳細なクリーンアップが必要になる可能性があります。

第4章 LVM への既存 VDO ボリュームのインポート

VDO マネージャーによって作成された VDO ボリュームを LVM にインポートできます。その結果、LVM ツールを使用して、ボリュームを論理ボリュームとして管理できます。

注記

インポート操作は元に戻せません。既存 VDO ボリュームを LVM に変換した後に VDO データにアクセスするには、必ず LVM コマンドを使用する必要があります。VDO マネージャーはボリュームを制御しなくなります。

前提条件

  • VDO ソフトウェアをインストールしている。詳細は、VDO のインストール を参照してください。

手順

  1. VDO マネージャーによって作成された既存の VDO ボリュームを論理ボリュームに変換します。以下のコマンドでは、vg-name をボリュームグループ名に、lv-name を論理ボリューム名に、/dev/sdg1 を VDO デバイスに置き換えます。

    # lvm_import_vdo --name vg-name/lv-name /dev/sdg1
    
    
    Convert VDO device "/dev/sdg1" to VDO LV "vg-name/lv-name"? [y|N]: Yes
    Stopping VDO vdo-name
    Converting VDO vdo-name
         Opening /dev/disk/by-id/scsi-36d094660575ece002291bd67517f677a-part1 exclusively
         Loading the VDO superblock and volume geometry
         Checking the VDO state
         Converting the UDS index
         Converting the VDO
         Conversion completed for '/dev/disk/by-id/scsi-36d094660575ece002291bd67517f677a-part1': VDO is now offset by 2097152 bytes
     Physical volume "/dev/sdg1" successfully created.
     Volume group "vg-name" successfully created
     WARNING: Logical volume vg-name/lv-name_vpool not zeroed.
     Logical volume "lv-name_vpool" created.
     WARNING: Converting logical volume vg-name/lv-name_vpool to VDO pool volume WITHOUT formating.
     WARNING: Using invalid VDO pool data MAY DESTROY YOUR DATA!
     Logical volume "lv-name" created.
     Converted vg-name/lv-name_vpool to VDO pool volume and created virtual vg-name/lv-name VDO volume.
  2. オプション: VDO LV にファイルシステムを作成します。
  3. オプション: LVM-VDO ボリュームをマウントします。詳細は、LVM-VDO ボリュームのマウント を参照してください。

検証

  • LVM デバイスを一覧表示して、VDO ボリュームの LVM へのインポートが成功したことを確認します。

    # lvs -a -o +devices
      LV                    VG      Attr       LSize  Pool          Origin Data%  Meta%  Move Log Cpy%Sync Convert Devices
      lv-name               vg-name vwi-a-v--- 25.00g lv-name_vpool        0.00                                    lv-name_vpool(0)
      lv-name_vpool         vg-name dwi------- <1.82t                      0.31                                    lv-name_vpool_vdata(0)
      [lv-name_vpool_vdata] vg-name Dwi-ao---- <1.82t                                                              /dev/sdg1(0)

関連情報

  • lvm_import_vdo(8)lvmvdo(7)、および systemd.mount(5) man ページ

第5章 LVM-VDO ボリュームの縮小オプション

ファイルシステムは、discard オプションを使用してマウントできます。これを使用すると、VDO ボリュームに未使用領域が通知されます。また、fstrim アプリケーション (オンデマンドでの破棄) を使用する方法や、mount -o discard コマンドを使用して即座に破棄する方法もあります。

fstrim アプリケーションを使用する場合、管理者は追加のプロセスをスケジュールして監視する必要がありますが、mount -o Discard コマンドを使用すると、可能な場合はすぐに領域を回復できます。

現在、未使用のブロックを破棄する場合は、discard マウントオプションではなく、fstrim アプリケーションを使用することが推奨されています。このオプションは、パフォーマンスに非常に大きな影響を及ぼす可能性があるためです。そのため、nodiscard がデフォルトになっています。

5.1. VDO での discard マウントオプションの有効化

この手順では、VDO ボリュームで discard オプションを有効にします。

前提条件

  • LVM-VDO ボリュームがシステム上にある。

手順

  • ボリュームで discard を有効にします。

    # mount -o discard /dev/vg-name/vdo-name mount-point

関連情報

  • xfs(5)mount(8)、および lvmvdo(7) man ページ

5.2. 定期的な TRIM 操作の設定

この手順では、システムで TRIM 操作のスケジューリングを有効にします。

前提条件

  • LVM-VDO ボリュームがシステム上にある。

手順

  • タイマーを有効にして起動します。

    # systemctl enable --now fstrim.timer

検証

  • タイマーが有効化されていることを確認します。

    # systemctl list-timers fstrim.timer

    例5.1 検証手順での出力例

    # systemctl list-timers fstrim.timer
    NEXT                         LEFT         LAST  PASSED  UNIT         ACTIVATES
    Mon 2021-05-10 00:00:00 EDT  5 days left  n/a   n/a     fstrim.timer fstrim.service
注記

fstrim.timer は、マウントされている全ファイルシステムで実行されるため、VDO ボリュームへの参照は表示されません。

関連情報

  • fstrim(8) man ページ

法律上の通知

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.