RHEL での論理ボリュームの重複排除および圧縮
LVM に VDO をデプロイしてストレージ容量を増やす
概要
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ を参照してください。
Red Hat ドキュメントへのフィードバック (英語のみ)
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
Jira からのフィードバック送信 (アカウントが必要)
- Jira の Web サイトにログインします。
- 上部のナビゲーションバーで Create をクリックします。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- ダイアログの下部にある 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 サーバーにデプロイできます。
- ファイルシステム
VDO LV 上にファイルシステムを作成し、NFS サーバーまたは Samba を使用して NFS または CIFS ユーザーに公開できます。
- iSCSI ターゲット
VDO LV 全体を、iSCSI ターゲットとしてリモート iSCSI イニシエーターにエクスポートできます。
- 暗号化
DM Crypt などのデバイスマッパー (DM) メカニズムは VDO と互換性があります。VDO LV ボリュームを暗号化すると、データのセキュリティーを確保しながら、VDO LV より上のファイルシステムを重複排除できます。
重要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 ボリュームグループがシステムに存在する。
手順
vdo1
などの VDO LV の名前を選択します。システムの VDO LV ごとに、異なる名前とデバイスを使用する必要があります。以下のすべてのステップで、vdo-name をその名前に置き換えてください。
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 ボリュームの作成中に問題が発生した場合は、ボリュームを削除してください。
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 ボリュームがシステム上にある。詳細は、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 ボリュームがシステム上にある。
手順
論理ボリュームで圧縮および重複排除が有効かどうかを調べるには、次のコマンドを実行します。
# lvs -o+vdo_compression,vdo_deduplication
稼働中の VDOPoolLV の重複排除インデックスと圧縮のステータスを確認します。
# lvs -o+vdo_compression_state,vdo_index_state
vdo_index_state
は、error
、close
、opening
、closing
、online
、およびoffline
として表示されます。VDOPoolLV の圧縮を有効または無効にするには、次のコマンドを実行します。
# lvchange --compression y|n vg-name/vdopoolname
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 に相当します。
以下のすべての手順で、myvg と myvdo を、それぞれボリュームグループ名および VDO 名に置き換えます。
前提条件
- VDO ソフトウェアをインストールしている。詳細は、VDO のインストール を参照してください。
- 空きストレージ容量を持つ LVM ボリュームグループがシステムに存在する。
-
lvcreate --type vdo --name myvdo myvg -L logical-size-of-pool --virtualsize virtual-size-of-vdo
コマンドを使用した、シンプロビジョニングされた VDO ボリューム。詳細は、LVM-VDO ボリュームの作成 を参照してください。
手順
シンプロビジョニングの 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 まで下げると、同じ領域節約率の場合、空き物理領域に安全なマージンを確保できる論理サイズになります。
-
約 80 GB のデータセットでは、約
VDO ボリュームの空き物理領域を監視します。
# vdostats myvg-vpool0-vpool
このコマンドは定期的に実行して、VDO ボリュームの使用済み物理領域および空き物理領域の監視を行うことができます。
オプション: 利用可能な
/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
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.
利用可能な物理領域がほとんどない VDO ボリュームを修復します。VDO ボリュームに物理領域を追加できても、ボリュームを拡張する前に領域がいっぱいになった場合は、そのボリュームへの I/O を一時的に停止する必要があるかもしれません。
ボリュームへの I/O を一時的に停止するには、以下の手順を実行します。VDO ボリューム myvdo には、/users/homeDir パスにマウントされたファイルシステムが含まれています。
ファイルシステムをフリーズします。
# xfs_freeze -f /users/homeDir # vgextend myvg /dev/vdc2 # lvextend -l new_size myvg/vpool0-name # xfs_freeze -u /users/homeDir
ファイルシステムをアンマウントします。
# umount /users/homeDir # vgextend myvg /dev/vdc2 # lvextend -l new_size myvg/vpool0-name # mount -o discard /dev/myvg/myvdo /users/homeDir
注記キャッシュされたデータを含むファイルシステムをアンマウントまたはフリーズすると、キャッシュされたデータの書き込みが発生します。これにより、VDO ボリュームの物理領域がいっぱいになる可能性があります。VDO ボリュームの空き物理領域の監視しきい値を設定する場合は、ファイルシステムのデータキャッシュの最大量を考慮してください。
ファイルシステムが使用しなくなったブロックは、
fstrim
ユーティリティーを使用してクリーンアップできます。VDO ボリュームにマウントしたファイルシステムに対してfstrim
を実行すると、そのボリュームの空き物理領域が増える可能性があります。fstrim
ユーティリティーは、VDO ボリュームに破棄を送信します。これは、以前使用したブロックへの参照を削除するのに使用されます。これらのブロックのいずれかが単一参照されている場合は、物理領域が使用可能になります。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%
未使用のブロックを破棄します。
# fstrim /users/homeDir
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 のインストール を参照してください。
手順
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.
- オプション: VDO LV にファイルシステムを作成します。
- オプション: 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 ページ