Red Hat Training

A Red Hat training course is available for RHEL 8

68.9.2. シンプロビジョニングされた論理ボリュームの作成

この手順では、シンプロビジョニングされた論理ボリュームを作成し、拡張するために使用する基本的なコマンドの概要を説明します。LVM シンプロビジョニングの詳細情報と、シンプロビジョニングされた論理ボリュームと共に LVM コマンドおよびユーティリティーを使用する方法は、man ページの lvmthin(7) を参照してください。

シンボリュームを作成する場合は、以下のタスクを実行します。

  1. vgcreate コマンドを使用して、ボリュームグループを作成する。
  2. lvcreate コマンドを使用して、シンプールを作成する。
  3. lvcreate コマンドを使用して、シンプール内にシンボリュームを作成する。

lvcreate コマンドに -T (または --thin) オプションを付けて、シンプールまたはシンボリュームを作成できます。また、lvcreate-T オプションを使用して、1 つのコマンドで同時にプール内にシンプールとシンプロビジョニングされたボリュームの両方を作成することもできます。

以下のコマンドは、lvcreate コマンドの -T オプションを使用して、mythinpool という名前のシンプールを作成します。これは、ボリュームグループ vg001 内にあり、サイズは 100M です。物理領域のプールを作成しているため、プールのサイズを指定する必要があります。lvcreate コマンドの -T オプションは引数を取りません。コマンドで指定するその他のオプションから、作成されるデバイスのタイプが推定されます。

# lvcreate -L 100M -T vg001/mythinpool
  Thin pool volume with chunk size 64.00 KiB can address at most 15.81 TiB of data.
  Logical volume "mythinpool" created.
# lvs
  LV         VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mythinpool vg001 twi-a-tz-- 100.00m             0.00   10.84

以下のコマンドは、lvcreate コマンドに -T オプションを使用して、シンプール vg001/mythinpoolthinvolume という名前のシンボリュームを作成します。ここでは、ボリュームを含むプールよりも大きなボリュームの仮想サイズを指定している点に注意してください。

# lvcreate -V 1G -T vg001/mythinpool -n thinvolume
  WARNING: Sum of all thin volume sizes (1.00 GiB) exceeds the size of thin pool vg001/mythinpool (100.00 MiB).
  WARNING: You have not turned on protection against thin pools running out of space.
  WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full.
  Logical volume "thinvolume" created.
# lvs
  LV          VG       Attr     LSize   Pool       Origin Data%  Move Log Copy%  Convert
  mythinpool  vg001    twi-a-tz 100.00m                     0.00
  thinvolume  vg001    Vwi-a-tz   1.00g mythinpool          0.00

以下のコマンドは、lvcreate コマンドに -T オプションを使用して、プール内にシンプールとシンプロビジョニングされたボリュームを作成します。その際、lvcreate コマンドでサイズと仮想サイズの引数を指定します。また、このコマンドは、ボリュームグループ vg001 にシンプール mythinpool を作成し、そのプールにシンプロビジョニングされたボリューム thinvolume も作成します。

# lvcreate -L 100M -T vg001/mythinpool -V 1G -n thinvolume
  Thin pool volume with chunk size 64.00 KiB can address at most 15.81 TiB of data.
  WARNING: Sum of all thin volume sizes (1.00 GiB) exceeds the size of thin pool vg001/mythinpool (100.00 MiB).
  WARNING: You have not turned on protection against thin pools running out of space.
  WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full.
  Logical volume "thinvolume" created.
# lvs
  LV         VG    Attr       LSize   Pool       Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mythinpool vg001 twi-aotz-- 100.00m                   0.00   10.94
  thinvolume vg001 Vwi-a-tz--   1.00g mythinpool        0.00

また、lvcreate コマンドの --thinpool パラメーターを指定して、シンプールを作成することもできます。-T オプションとは異なり、--thinpool パラメーターには、作成しているシンプールの論理ボリューム名の引数が必要です。以下の例は、lvcreate--thinpool パラメーターを指定して、mythinpool という名前のシンプールを作成します。これは、ボリュームグループ vg001 にあり、サイズは 100M です。

# lvcreate -L 100M --thinpool mythinpool vg001
  Thin pool volume with chunk size 64.00 KiB can address at most 15.81 TiB of data.
  Logical volume "mythinpool" created.
# lvs
  LV         VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mythinpool vg001 twi-a-tz-- 100.00m             0.00   10.84

チャンクサイズを使用するには、以下の基準を使用します。

  • チャンクサイズが小さいほどメタデータが増え、パフォーマンスも低下しますが、スナップショットで領域の使用率が向上します。
  • チャンクサイズが大きいほどメタデータ操作は少なくなりますが、スナップショットの領域効率が低下します。

デフォルトでは、lvm2 は 64KiB のチャンクサイズで始まり、シンプールメタデータデバイスのサイズが 128MiB を超えると、その値を増やします。これにより、メタデータサイズが圧縮されます。ただし、これにチャンクサイズの値が大きくなる場合があり、スナップショットを使用するるための領域の効率が低下します。このような場合は、チャンクのサイズが小さく、メタデータサイズが大きくなる方が適しています。

ボリュームデータサイズが TiB の範囲にある場合は、サポートされる最大サイズであるメタデータサイズとして ~15.8GiB を使用し、要件に応じてチャンクサイズを設定します。ただし、ボリュームのデータサイズを拡張し、チャンクサイズを小さくする必要がある場合には、メタデータサイズを拡大できないことに注意してください。

警告

Red Hat は、デフォルト値よりも小さいチャンクサイズを設定することは推奨していません。チャンクサイズが小さすぎる場合で、ボリュームのメタデータの容量が不足すると、ボリュームはデータを作成できません。論理ボリュームを監視して、拡張またはメタデータボリュームが完全に満杯になる前にストレージをさらに作成します。メタデータ用の領域が不足しないように、シンプールのチャンクサイズは十分な大きさになるようにしてください。

プールの作成で、ストライピングに対応しています。以下のコマンドは、2 つの 64 kB のストライプがあり、チャンクサイズが 256 kB のボリュームグループ vg001 に、pool という名前の 100M のシンプールを作成します。また、1T のシンボリューム vg00/thin_lv も作成します。

# lvcreate -i 2 -I 64 -c 256 -L 100M -T vg00/pool -V 1T --name thin_lv

lvextend コマンドを使用して、シンボリュームのサイズを拡張できます。ただし、シンプールのサイズを縮小することはできません。

以下のコマンドは、既存のシンプールのサイズ (100M) を変更し、100M 拡張します。

# lvextend -L+100M vg001/mythinpool
  Extending logical volume mythinpool to 200.00 MiB
  Logical volume mythinpool successfully resized
# lvs
  LV           VG       Attr     LSize   Pool     Origin Data%  Move Log Copy%  Convert
  mythinpool   vg001    twi-a-tz 200.00m                   0.00
  thinvolume   vg001    Vwi-a-tz   1.00g mythinpool          0.00

他の論理ボリュームのタイプと同様に、lvrename を使用してボリューム名を変更したり、lvremove を使用してボリュームを削除したりできます。また、lvs コマンドおよび lvdisplay コマンドを使用して、ボリュームの情報を表示することもできます。

デフォルトでは、lvcreate コマンドは、計算式 (Pool_LV_size / Pool_LV_chunk_size * 64) から、シンプールのメタデータ論理ボリュームのサイズを設定します。スナップショットが大量にある場合や、シンプールのサイズが小さく、後で急激に大きくなることが予測される場合は、lvcreate コマンドの --poolmetadatasize パラメーターで、シンプールのメタデータボリュームのデフォルト値を大きくしないといけない場合があります。シンプールのメタデータ論理ボリュームで対応している値は 2MiB ~ 16GiB です。

lvconvert コマンドの --thinpool パラメーターを使用して、既存の論理ボリュームをシンプールボリュームに変換できます。既存の論理ボリュームをシンプールボリュームに変換する場合は、lvconvert コマンドの --thinpool パラメーターとともに --poolmetadata パラメーターを使用して、既存の論理ボリュームをシンプールボリュームのメタデータボリュームに変換する必要があります。

注記

論理ボリュームをシンプールボリュームまたはシンプールメタデータボリュームに変換すると、論理ボリュームのコンテンツが破棄されます。なぜなら、lvconvert は、デバイスのコンテンツを保存するのではなく、コンテンツを上書きするためです。

以下の例は、ボリュームグループ vg001 の既存の論理ボリューム lv1 を、シンプールボリュームに変換します。また、ボリュームグループ vg001 の既存の論理ボリューム lv2 を、そのシンプールボリュームのメタデータボリュームに変換します。

# lvconvert --thinpool vg001/lv1 --poolmetadata vg001/lv2
  Converted vg001/lv1 to thin pool.