4.4.4. シンプロビジョニングされた論理ボリュームの作成
Red Hat Enterprise Linux 6.4 リリースでは、論理ボリュームのシンプロビジョニングが可能です。これにより、利用可能なエクステントより大きい論理ボリュームを作成することができます。シンプロビジョニングを使用すると、空き領域のストレージプール (シンプールと呼ばれる) を管理して、アプリケーションが必要とする場合に、これを任意の数のデバイスに割り当てることができます。その後、アプリケーションが実際に論理ボリュームに書き込む際など後で割り当てられるように、シンプールにバインドできるデバイスを作成できます。シンプールでは、ストレージ領域のコスト効率の良い割り当てに必要となる動的な拡張が可能です。
注記
このセクションでは、シンプロビジョニングされた論理ボリュームを作成し、拡張するために使用する基本的なコマンドの概要を説明します。LVM シンプロビジョニングの詳細情報と、シンプロビジョニングされた論理ボリュームと共に LVM コマンドおよびユーティリティーを使用する方法についての情報は、
lvmthin
(7) man ページを参照してください。
注記
シンボリュームはクラスター内のノード間ではサポートされません。シンプールとそのすべてのシンボリュームは、1 つのクラスターノードでのみ排他的にアクティブ化する必要があります。
シンボリュームを作成するには、以下のタスクを実行してください。
vgcreate
コマンドを使用して、ボリュームグループを作成します。lvcreate
コマンドを使用して、シンプールを作成します。lvcreate
コマンドを使用して、シンプール内にシンボリュームを作成します。
lvcreate
コマンドに -T
(または --thin
) オプションを使用して、シンプールまたはシンボリュームを作成します。また、lvcreate
コマンドの -T
オプションを使用して、1 つのコマンドで同時にシンプールとプール内のシンボリュームの両方を作成することも可能です。
以下のコマンドは、
lvcreate
コマンドに -T
オプションを使用して、mythinpool
という名前のシンプールを作成します。これは、ボリュームグループ vg001
内にあり、サイズは 100M です。物理領域のプールを作成しているため、プールのサイズを指定する必要があります。lvcreate
コマンドの -T
オプションは引数を取りません。コマンドが指定する他のオプションから作成されるデバイスのタイプを推定します。
#lvcreate -L 100M -T vg001/mythinpool
Rounding up size to full physical extent 4.00 MiB Logical volume "mythinpool" created #lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert my mythinpool vg001 twi-a-tz 100.00m 0.00
以下のコマンドは、
lvcreate
コマンドに -T
オプションを使用して、シンプール vg001/mythinpool
に thinvolume
という名前のシンボリュームを作成します。ここでは、仮想サイズを指定して、ボリュームを含むプールよりも大きなボリュームの仮想サイズを指定している点に注意してください。
#lvcreate -V1G -T vg001/mythinpool -n thinvolume
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 -V1G -n thinvolume
Rounding up size to full physical extent 4.00 MiB 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
コマンドの --thinpool
パラメーターを指定して、シンプールを作成することもできます。-T
オプションとは異なり、--thinpool
パラメーターには作成しているシンプール論理ボリューム名の引数が必要です。以下の例は、lvcreate
コマンドで --thinpool
パラメーターを指定して、mythinpool
という名前のシンプールを作成します。これは、ボリュームグループ vg001
内にあり、サイズは 100M です。
#lvcreate -L 100M --thinpool mythinpool vg001
Rounding up size to full physical extent 4.00 MiB Logical volume "mythinpool" created #lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert mythinpool vg001 twi-a-tz 100.00m 0.00
ストライピングはプールを作成するためにサポートされています。以下のコマンドは、2 つの 64 kB のストライプがあり、チャンクサイズが 256 kB のボリュームグループ
vg001
内に pool
という名前の 100M のシンプールを作成します。また、1T のシンボリューム vg00/thin_lv
も作成します。
# lvcreate -i 2 -I 64 -c 256 -L100M -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.