58.3. LVM ボリュームグループの管理
ボリュームグループ (VG) を作成および使用すると、複数の物理ボリューム (PV) を 1 つのストレージエンティティーにまとめて管理およびサイズ変更できます。
LVM で割り当てることができる最小単位の領域のことを、エクステントといいます。物理エクステント (PE) と論理エクステント (LE) のデフォルトサイズは 4 MiB です。このサイズは設定可能です。すべてのエクステントは同じサイズです。
VG 内に論理ボリューム (LV) を作成すると、LVM が PV に物理エクステントを割り当てます。LV 内の論理エクステントは、VG 内の物理エクステントと 1 対 1 で対応します。LV を作成するために PE を指定する必要はありません。LVM は利用可能な PE を検出してそれらを組み合わせて、要求されたサイズの LV を作成します。
VG 内では、複数の LV を作成できます。各 LV は、従来のパーティションのように機能しますが、複数の物理ボリュームにまたがって動的にサイズを変更する機能を備えています。VG はディスク領域の割り当てを自動的に管理できます。
58.3.1. LVM ボリュームグループの作成
vgcreate
コマンドを使用してボリュームグループ (VG) を作成できます。非常に大きいボリュームまたは非常に小さいボリュームのエクステントサイズを調整すると、パフォーマンスとストレージ効率を最適化できます。エクステントサイズは、VG を作成するときに指定できます。エクステントサイズを変更するには、ボリュームグループを再作成する必要があります。
前提条件
- 管理アクセスがある。
-
lvm2
パッケージがインストールされている。 - 1 つ以上の物理ボリュームが作成されている。物理ボリュームの作成方法は、LVM 物理ボリュームの作成 を参照してください。
手順
VG に含める PV をリスト表示して特定します。
# pvs
VG を作成します。
# vgcreate VolumeGroupName PhysicalVolumeName1 PhysicalVolumeName2
VolumeGroupName は、作成するボリュームグループの名前に置き換えます。PhysicalVolumeName は、PV の名前に置き換えます。
VG を作成するときにエクステントサイズを指定するには、
-s ExtentSize
オプションを使用します。ExtentSize は、エクステントサイズに置き換えます。サイズの接尾辞を指定しなかった場合、このコマンドではデフォルトで MB が使用されます。
検証
VG が作成されたことを確認します。
# vgs VG #PV #LV #SN Attr VSize VFree VolumeGroupName 1 0 0 wz--n- 28.87g 28.87g
関連情報
-
システム上の
vgcreate(8)
、vgs(8)
、およびpvs(8)
man ページ
58.3.2. Web コンソールでボリュームグループの作成
1 つ以上の物理ドライブまたは他のストレージデバイスからボリュームグループを作成します。
論理ボリュームは、ボリュームグループから作成されます。各ボリュームグループに、複数の論理ボリュームを追加できます。
前提条件
RHEL 8 Web コンソールがインストールされている。
手順は、Web コンソールのインストールおよび有効化 を参照してください。
-
cockpit-storaged
パッケージがシステムにインストールされている。 - ボリュームグループを作成する物理ドライブ、またはその他の種類のストレージデバイス。
手順
RHEL 8 Web コンソールにログインします。
詳細は、Web コンソールへのログイン を参照してください。
- をクリックします。
- Storage テーブルで、メニューボタンをクリックします。
ドロップダウンメニューから、Create LVM2 volume group を選択します。
- Name フィールドにボリュームグループの名前を入力します。名前にスペースを含めることはできません。
ボリュームグループを作成するために組み合わせるドライブを選択します。
RHEL Web コンソールは、未使用のブロックデバイスのみを表示します。リストにデバイスが表示されない場合は、そのデバイスがシステムで使用されていないことを確認するか、デバイスを空で未使用の状態にフォーマットしてください。使用されるデバイスには、たとえば次のようなものがあります。
- ファイルシステムでフォーマットしたデバイス
- 別のボリュームグループの物理ボリューム
- 別のソフトウェアの RAID デバイスのメンバーになる物理ボリューム
ボリュームグループが作成されている。
検証
- Storage ページで、新しいボリュームグループが Storage テーブルにリストされているかどうかを確認します。
58.3.3. LVM ボリュームグループの名前変更
vgrename
コマンドを使用してボリュームグループ (VG) の名前を変更できます。
前提条件
- 管理アクセスがある。
-
lvm2
パッケージがインストールされている。 - 1 つ以上の物理ボリュームが作成されている。物理ボリュームの作成方法は、LVM 物理ボリュームの作成 を参照してください。
- ボリュームグループが作成されている。ボリュームグループの作成の詳細は、「LVM ボリュームグループの作成」 を参照してください。
手順
名前を変更する VG をリスト表示して特定します。
# vgs
VG の名前を変更します。
# vgrename OldVolumeGroupName NewVolumeGroupName
OldVolumeGroupName は、VG の名前に置き換えます。NewVolumeGroupName は、VG の新しい名前に置き換えます。
検証
VG に新しい名前が付けられたことを確認します。
# vgs VG #PV #LV #SN Attr VSize VFree NewVolumeGroupName 1 0 0 wz--n- 28.87g 28.87g
関連情報
-
vgrename(8)
、vgs(8)
man ページ
58.3.4. LVM ボリュームグループの拡張
vgextend
コマンドを使用して、物理ボリューム (PV) をボリュームグループ (VG) に追加できます。
前提条件
- 管理アクセスがある。
-
lvm2
パッケージがインストールされている。 - 1 つ以上の物理ボリュームが作成されている。物理ボリュームの作成方法は、LVM 物理ボリュームの作成 を参照してください。
- ボリュームグループが作成されている。ボリュームグループの作成の詳細は、「LVM ボリュームグループの作成」 を参照してください。
手順
拡張する VG をリスト表示して特定します。
# vgs
VG に追加する PV をリスト表示して特定します。
# pvs
VG を拡張します。
# vgextend VolumeGroupName PhysicalVolumeName
VolumeGroupName は、VG の名前に置き換えます。PhysicalVolumeName は、PV の名前に置き換えます。
検証
VG に新しい PV が含まれていることを確認します。
# pvs PV VG Fmt Attr PSize PFree /dev/sda VolumeGroupName lvm2 a-- 28.87g 28.87g /dev/sdd VolumeGroupName lvm2 a-- 1.88g 1.88g
関連情報
-
vgextend(8)
、vgs(8)
、pvs(8)
man ページ
58.3.5. LVM ボリュームグループの結合
vgmerge
コマンドを使用して、既存の 2 つのボリュームグループ (VG) を結合できます。結合元ボリュームが結合先ボリュームにマージされます。
前提条件
- 管理アクセスがある。
-
lvm2
パッケージがインストールされている。 - 1 つ以上の物理ボリュームが作成されている。物理ボリュームの作成方法は、LVM 物理ボリュームの作成 を参照してください。
- 2 つ以上のボリュームグループが作成されている。ボリュームグループの作成の詳細は、「LVM ボリュームグループの作成」 を参照してください。
手順
マージする VG をリスト表示して特定します。
# vgs VG #PV #LV #SN Attr VSize VFree VolumeGroupName1 1 0 0 wz--n- 28.87g 28.87g VolumeGroupName2 1 0 0 wz--n- 1.88g 1.88g
結合元 VG を結合先 VG にマージします。
# vgmerge VolumeGroupName2 VolumeGroupName1
VolumeGroupName2 は、結合元 VG の名前に置き換えます。VolumeGroupName1 は、結合先 VG の名前に置き換えます。
検証
VG に新しい PV が含まれていることを確認します。
# vgs VG #PV #LV #SN Attr VSize VFree VolumeGroupName1 2 0 0 wz--n- 30.75g 30.75g
関連情報
-
システム上の
vgmerge(8)
man ページ
58.3.6. ボリュームグループからの物理ボリュームの削除
ボリュームグループ (VG) から未使用の物理ボリューム (PV) を削除するには、vgreduce
コマンドを使用します。vgreduce
コマンドは、空の物理ボリュームを 1 つまたは複数削除して、ボリュームグループの容量を縮小します。これにより、物理ボリュームが解放され、異なるボリュームグループで使用したり、システムから削除できるようになります。
手順
物理ボリュームがまだ使用中の場合は、同じボリュームグループから別の物理ボリュームにデータを移行します。
# pvmove /dev/vdb3 /dev/vdb3: Moved: 2.0% ... /dev/vdb3: Moved: 79.2% ... /dev/vdb3: Moved: 100.0%
既存のボリュームグループ内の他の物理ボリュームに空きエクステントが十分にない場合は、以下を行います。
/dev/vdb4 から、物理ボリュームを新規作成します。
# pvcreate /dev/vdb4 Physical volume "/dev/vdb4" successfully created
新しく作成した物理ボリュームをボリュームグループに追加します。
# vgextend VolumeGroupName /dev/vdb4 Volume group "VolumeGroupName" successfully extended
データを /dev/vdb3 から /dev/vdb4 に移動します。
# pvmove /dev/vdb3 /dev/vdb4 /dev/vdb3: Moved: 33.33% /dev/vdb3: Moved: 100.00%
ボリュームグループから物理ボリューム /dev/vdb3 を削除します。
# vgreduce VolumeGroupName /dev/vdb3 Removed "/dev/vdb3" from volume group "VolumeGroupName"
検証
/dev/vdb3 物理ボリュームが VolumeGroupName ボリュームグループから削除されていることを確認します。
# pvs PV VG Fmt Attr PSize PFree Used /dev/vdb1 VolumeGroupName lvm2 a-- 1020.00m 0 1020.00m /dev/vdb2 VolumeGroupName lvm2 a-- 1020.00m 0 1020.00m /dev/vdb3 lvm2 a-- 1020.00m 1008.00m 12.00m
関連情報
-
システム上の
vgreduce(8)
、pvmove(8)
、およびpvs(8)
man ページ
58.3.7. LVM ボリュームグループの分割
この物理ボリュームに未使用領域が十分にあれば、新たにディスクを追加しなくてもボリュームグループを作成できます。
初期設定では、ボリュームグループ VolumeGroupName1 は、/dev/vdb1、/dev/vdb2、および /dev/vdb3 で構成されます。この手順を完了すると、ボリュームグループ VolumeGroupName1 は /dev/vdb1 と /dev/vdb2 で構成され、2 番目のボリュームグループ VolumeGroupName2 は /dev/vdb3 で構成されます。
前提条件
-
ボリュームグループに十分な空き領域がある。
vgscan
コマンドを使用すると、現在ボリュームグループで利用可能な空き領域の容量を確認できます。 -
既存の物理ボリュームの空き容量に応じて、
pvmove
コマンドを使用して、使用されている物理エクステントをすべて他の物理ボリュームに移動します。詳細は、ボリュームグループからの物理ボリュームの削除 を参照してください。
手順
既存のボリュームグループ VolumeGroupName1 を、新しいボリュームグループ VolumeGroupName2 に分割します。
# vgsplit VolumeGroupName1 VolumeGroupName2 /dev/vdb3 Volume group "VolumeGroupName2" successfully split from "VolumeGroupName1"
注記既存のボリュームグループを使用して論理ボリュームを作成した場合は、次のコマンドを実行して論理ボリュームを非アクティブにします。
# lvchange -a n /dev/VolumeGroupName1/LogicalVolumeName
論理ボリュームを作成する方法は、LVM 論理ボリュームの管理 を参照してください。
2 つのボリュームグループの属性を表示します。
# vgs VG #PV #LV #SN Attr VSize VFree VolumeGroupName1 2 1 0 wz--n- 34.30G 10.80G VolumeGroupName2 1 0 0 wz--n- 17.15G 17.15G
検証
新しく作成したボリュームグループ VolumeGroupName2 が、/dev/vdb3 物理ボリュームで構成されていることを確認します。
# pvs PV VG Fmt Attr PSize PFree Used /dev/vdb1 VolumeGroupName1 lvm2 a-- 1020.00m 0 1020.00m /dev/vdb2 VolumeGroupName1 lvm2 a-- 1020.00m 0 1020.00m /dev/vdb3 VolumeGroupName2 lvm2 a-- 1020.00m 1008.00m 12.00m
関連情報
-
システム上の
vgsplit(8)
、vgs(8)
、およびpvs(8)
man ページ
58.3.8. ボリュームグループを別のシステムへ移動
次のコマンドを使用して、LVM ボリュームグループ (VG) 全体を別のシステムに移動できます。
vgexport
- 既存のシステムでこのコマンドを使用して、システムから非アクティブな VG にアクセスできないようにします。VG にアクセスできなくなったら、その物理ボリューム (PV) の接続を解除できます。
vgimport
- 他のシステムでこのコマンドを使用して、新しいシステムで、古いシステムで非アクティブだった VG にアクセスできるようにします。
前提条件
- 移動するボリュームグループ内のアクティブなボリュームのファイルにアクセスしているユーザーがいない。
手順
LogicalVolumeName 論理ボリュームをアンマウントします。
# umount /dev/mnt/LogicalVolumeName
ボリュームグループ内のすべての論理ボリュームを非アクティブ化します。これにより、ボリュームグループでこれ以上の動作が発生しないようにします。
# vgchange -an VolumeGroupName vgchange -- volume group "VolumeGroupName" successfully deactivated
ボリュームグループをエクスポートして、削除元のシステムがボリュームグループにアクセスできないようにします。
# vgexport VolumeGroupName vgexport -- volume group "VolumeGroupName" successfully exported
エクスポートされたボリュームグループを表示します。
# pvscan PV /dev/sda1 is in exported VG VolumeGroupName [17.15 GB / 7.15 GB free] PV /dev/sdc1 is in exported VG VolumeGroupName [17.15 GB / 15.15 GB free] PV /dev/sdd1 is in exported VG VolumeGroupName [17.15 GB / 15.15 GB free] ...
- システムをシャットダウンし、ボリュームグループを構成するディスクを取り外し、新しいシステムに接続します。
ディスクを新しいシステムに接続し、ボリュームグループをインポートして、新しいシステムからアクセスできるようにします。
# vgimport VolumeGroupName
注記vgimport
コマンドの--force
引数を使用すると、物理ボリュームがないボリュームグループをインポートし、その後vgreduce --removemissing
コマンドを実行できます。ボリュームグループをアクティブ化します。
# vgchange -ay VolumeGroupName
ファイルシステムをマウントして使用できるようにします。
# mkdir -p /mnt/VolumeGroupName/users # mount /dev/VolumeGroupName/users /mnt/VolumeGroupName/users
関連情報
-
システム上の
vgimport(8)
、vgexport(8)
、およびvgchange(8)
man ページ
58.3.9. LVM ボリュームグループの削除
vgremove
コマンドを使用して、既存のボリュームグループを削除できます。削除できるボリュームグループは、論理ボリュームが含まれていないものだけです。
前提条件
- 管理アクセスがある。
- ボリュームグループには論理ボリュームがありません。ボリュームグループから論理ボリュームを削除するには、LVM 論理ボリュームの削除 を参照してください。
手順
ボリュームグループに論理ボリュームが含まれていないことを確認します。
# vgs -o vg_name,lv_count VolumeGroupName VG #LV VolumeGroupName 0
VolumeGroupName は、ボリュームグループの名前に置き換えます。
ボリュームグループを削除します。
# vgremove VolumeGroupName
VolumeGroupName は、ボリュームグループの名前に置き換えます。
関連情報
-
システム上の
vgs(8)
、vgremove(8)
man ページ
58.3.10. クラスター環境での LVM ボリュームグループの削除
クラスター環境では、LVM は lockspace
<qualifier> を使用して、複数のマシン間で共有されるボリュームグループへのアクセスを調整します。ボリュームグループを削除する前に lockspace
を停止し、削除プロセス中に他のノードがボリュームグループにアクセスしたり変更したりしないようにする必要があります。
前提条件
- 管理アクセスがある。
- ボリュームグループには論理ボリュームがありません。
手順
ボリュームグループに論理ボリュームが含まれていないことを確認します。
# vgs -o vg_name,lv_count VolumeGroupName VG #LV VolumeGroupName 0
VolumeGroupName は、ボリュームグループの名前に置き換えます。
ボリュームグループを削除するノードを除くすべてのノードで
lockspace
を停止します。# vgchange --lockstop VolumeGroupName
VolumeGroupName は、ボリュームグループの名前に置き換えます。ロックが停止するまで待ちます。
ボリュームグループを削除します。
# vgremove VolumeGroupName
VolumeGroupName は、ボリュームグループの名前に置き換えます。
関連情報
-
vgremove(8)
、vgchange(8)
man ページ