Red Hat Training

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

30.3. VDO の使用

30.3.1. はじめに

VDO(Virtual Data Optimizer)は、重複排除、圧縮、およびシンプロビジョニングの形で、Linux でインラインのデータ削減を行います。VDO ボリュームを設定する場合は、VDO ボリュームを構築するブロックデバイスと、作成する論理ストレージのサイズを指定します。
  • アクティブな仮想マシンまたはコンテナーをホストする場合、Red Hat は、物理と論理の割合を 1 対 10 にすることを推奨します。つまり、物理ストレージを 1 TB にした場合は、論理ストレージを 10 TB にします。
  • Ceph が提供するタイプなどのオブジェクトストレージの場合、Red Hat は、物理と論理の割合を 1 対 3 にすることを推奨します。つまり、物理ストレージを 1 TB にした場合は、論理ストレージを 3 TB にします。
いずれの場合も、VDO が提示する論理デバイスにファイルシステムを置くだけで、直接使用することも、分散クラウドストレージアーキテクチャーの一部として使用することもできます。
本章は、VDO デプロイメントのユースケースを説明します。
  • Red Hat Virtualization を使用して構築した場合など、仮想サーバーで直接接続するユースケース
  • Ceph Storage を使用してビルドされたオブジェクトベースの分散ストレージクラスターのクラウドストレージのユースケース。
    注記
    Ceph での VDO デプロイメントは現在サポートされていません。
本章では、いずれかのユースケースで簡単にデプロイできる標準の Linux ファイルシステムで使用する VDO 「デプロイメントの例」。の図を参照してください。

30.3.2. VDO のインストール

VDO は、以下の RPM パッケージを使用してデプロイされます。
  • vdo
  • kmod-kvdo
VDO をインストールするには、yum パッケージマネージャーを使用して RPM パッケージをインストールします。
# yum install vdo kmod-kvdo

30.3.3. VDO ボリュームの作成

ブロックデバイス用に VDO ボリュームを作成します。同じマシン上に別々のデバイスに対して、複数の VDO ボリュームを作成できます。この方法を選択する場合は、システムの VDO の各インスタンスに、異なる名前とデバイスを指定する必要があります。
重要
拡張可能なストレージをバッキングブロックデバイスとして使用している。「システム要件」
以下の手順では、vdo_name を、VDO ボリュームに使用する識別子 (vdo1 など)に置き換えます。
  1. VDO Manager を使用して VDO ボリュームを作成します。
    # vdo create \
           --name=vdo_name \
           --device=block_device \
           --vdoLogicalSize=logical_size \
           [--vdoSlabSize=slab_size]
    • block_device を、VDO ボリュームを作成するブロックデバイスの永続名に置き換えます。For example, /dev/disk/by-id/scsi-3600508b1001c264ad2af21e903ad031f.
      重要
      永続的なデバイス名を使用します。永続的なデバイス名を使用しないと、今後デバイス名が変更されても、VDO が正しく起動しない場合があります。
    • logical_size を、VDO ボリュームが含まれる論理ストレージのサイズに置き換えます。
      • アクティブな仮想マシンまたはコンテナーストレージの場合は、使用する論理サイズが、ブロックデバイスの物理サイズの 10 倍になるようにします。たとえば、ブロックデバイスのサイズが 1 TB の場合は、10T を使用します。
      • オブジェクトストレージの場合は、使用する論理サイズを、ブロックデバイスの物理サイズの 3 倍になるようにします。たとえば、ブロックデバイスのサイズが 1 TB の場合は、3T を使用します。
    • ブロックデバイスが 16 TiB を超える場合は、--vdoSlabSize=32G を追加して、ボリュームのスラブサイズを 32 GiB に増やします。
      16 TiB を超えるブロックデバイスでデフォルトのスラブサイズ 2 GiB を使用すると、vdo create コマンドが以下のエラーで失敗します。
      vdo: ERROR - vdoformat: formatVDO failed on '/dev/device': VDO Status: Exceeds maximum number of slabs supported

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

    たとえば、1 TB ブロックデバイスでコンテナーストレージ用に VDO ボリュームを作成するには、次のコマンドを実行します。
    # vdo create \
           --name=vdo1 \
           --device=/dev/disk/by-id/scsi-3600508b1001c264ad2af21e903ad031f \
           --vdoLogicalSize=10T
    VDO ボリュームが作成されると、VDO は、エントリーを /etc/vdoconf.yml 設定ファイルに追加します。次に、vdo.service systemd ユニットは、エントリーを使用して、デフォルトでボリュームを起動します。
    重要
    VDO ボリュームの作成中に問題が発生した場合は、ボリュームを削除します。詳しくは 「作成に失敗したボリュームの削除」、を参照してください。
  2. ファイルシステムを作成します。
    • XFS ファイルシステムの場合:
      # mkfs.xfs -K /dev/mapper/vdo_name
    • ext4 ファイルシステムの場合:
      # mkfs.ext4 -E nodiscard /dev/mapper/vdo_name
  3. ファイルシステムをマウントします。
    # mkdir -m 1777 /mnt/vdo_name
    # mount /dev/mapper/vdo_name /mnt/vdo_name
  4. ファイルシステムを自動的にマウントするように設定するには、/etc/fstab ファイルまたは systemd マウントユニットを使用します。
    • /etc/fstab 設定ファイルを使用する場合は、以下の行をファイルに追加します。
      • XFS ファイルシステムの場合:
        /dev/mapper/vdo_name /mnt/vdo_name xfs defaults,_netdev,x-systemd.device-timeout=0,x-systemd.requires=vdo.service 0 0
      • ext4 ファイルシステムの場合:
        /dev/mapper/vdo_name /mnt/vdo_name ext4 defaults,_netdev,x-systemd.device-timeout=0,x-systemd.requires=vdo.service 0 0
    • または、systemd ユニットを使用する場合は、適切なファイル名で systemd マウントユニットファイルを作成します。VDO ボリュームのマウントポイントの場合は、以下の内容で /etc/systemd/system/mnt-vdo_name.mount ファイルを作成します。
      [Unit]
      Description = VDO unit file to mount file system
      name = vdo_name.mount
      Requires = vdo.service
      After = multi-user.target
      Conflicts = umount.target
      
      [Mount]
      What = /dev/mapper/vdo_name
      Where = /mnt/vdo_name
      Type = xfs
      
      [Install]
      WantedBy = multi-user.target
      
      systemd ユニットファイルの例は、/usr/share/doc/vdo/examples/systemd/VDO.mount.example にもインストールされます。
  5. VDO デバイスのファイルシステムで discard 機能を有効にします。バッチ操作とオンライン操作はいずれも、VDO で機能します。
    破棄機能の設定方法は 「未使用ブロックの破棄」

30.3.4. VDO の監視

VDO はシンプロビジョニングされているため、ファイルシステムとアプリケーションは、使用中の論理領域のみを確認するため、実際に利用可能な物理領域は認識しません。
VDO 領域の使用量と効率は、vdostats ユーティリティーを使用して監視できます
# vdostats --human-readable

Device                   1K-blocks    Used     Available    Use%    Space saving%
/dev/mapper/node1osd1    926.5G       21.0G    905.5G       2%      73%             
/dev/mapper/node1osd2    926.5G       28.2G    898.3G       3%      64%
VDO ボリュームの物理ストレージ領域が不足しそうになると、VDO は、システムログに、以下のような警告を報告します。
Oct  2 17:13:39 system lvm[13863]: Monitoring VDO pool vdo_name.
Oct  2 17:27:39 system lvm[13863]: WARNING: VDO pool vdo_name is now 80.69% full.
Oct  2 17:28:19 system lvm[13863]: WARNING: VDO pool vdo_name is now 85.25% full.
Oct  2 17:29:39 system lvm[13863]: WARNING: VDO pool vdo_name is now 90.64% full.
Oct  2 17:30:29 system lvm[13863]: WARNING: VDO pool vdo_name is now 96.07% full.
重要
VDO ボリュームで物理領域を監視し、領域不足を回避します。物理ブロックが不足すると、VDO ボリュームに最近書き込まれたデータや、未承認のデータが失われる可能性があります。

30.3.5. デプロイメントの例

以下の例では、KVM とその他のディプロイメントで VDO を使用できる方法を示しています。

KVM を使用した VDO デプロイメント

Direct Attached Storage で設定された KVM サーバーに VDO 図30.2「KVM を使用した VDO デプロイメント」

図30.2 KVM を使用した VDO デプロイメント

KVM を使用した VDO デプロイメント

より多くのデプロイメントシナリオ


このページには機械翻訳が使用されている場合があります (詳細はこちら)。