67.4. LVM 論理ボリュームの管理
論理ボリュームは、ファイルシステム、データベース、またはアプリケーションが使用できる仮想のブロックストレージデバイスです。LVM 論理ボリュームを作成する場合は、物理ボリューム (PV) をボリュームグループ (Volume Group: VG) に統合します。これによりディスク領域のプールが作成され、そこから LVM 論理ボリューム (Logical Volume: LV) を割り当てます。
67.4.1. 論理ボリューム機能の概要
論理ボリュームマネージャー (LVM) を使用すると、従来のパーティションスキームでは実現できない柔軟かつ効率的な方法でディスクストレージを管理できます。以下は、ストレージの管理と最適化に使用される主要な LVM 機能の概要です。
- 連結
- 連結では、1 つ以上の物理ボリュームの領域を 1 つの論理ボリュームに結合し、物理ストレージを効果的にマージします。
- ストライピング
- ストライピングは、データを複数の物理ボリュームに分散することで、データの I/O 効率を最適化します。並列 I/O 操作を可能にすることで、シーケンシャルな読み取りおよび書き込みのパフォーマンスを向上させます。
- RAID
- LVM は、RAID レベル 0、1、4、5、6、10 に対応します。RAID 論理ボリュームを作成するとき、LVM は、データまたはアレイ内のパリティーサブボリュームごとに、サイズが 1 エクステントのメタデータサブボリュームを作成します。
- シンプロビジョニング
- シンプロビジョニングを使用すると、使用可能な物理ストレージよりも大きい論理ボリュームを作成できます。シンプロビジョニングでは、事前に決められた量ではなく、実際の使用量に基づいてシステムがストレージを動的に割り当てます。
- スナップショット
- LVM スナップショットを使用すると、論理ボリュームの特定時点のコピーを作成できます。スナップショットは、最初は空の状態です。元の論理ボリュームに変更が発生すると、スナップショットがコピーオンライト (CoW) により変更前の状態をキャプチャーします。変更があった場合にのみ、元の論理ボリュームの状態を保持するためにサイズが増加します。
- キャッシュ
- LVM は、高速ブロックデバイス (SSD ドライブなど) を、大規模で低速なブロックデバイスのライトバックまたはライトスルーのキャッシュとして使用することに対応します。既存の論理ボリュームのパフォーマンスを改善するためにキャッシュ論理ボリュームを作成したり、大規模で低速なデバイスと共に小規模で高速なデバイスで構成される新規のキャッシュ論理ボリュームを作成したりできます。
67.4.2. 論理ボリュームのスナップショットの管理
スナップショットは、特定時点における別の LV の内容をミラーリングする論理ボリューム (LV) です。
67.4.2.1. 論理ボリュームスナップショットにてういて
スナップショットを作成すると、特定時点における別の LV のコピーとして機能する新しい LV が作成されます。スナップショット LV は、最初は実際のデータを含んでいません。代わりに、スナップショット作成時における元の LV のデータブロックを参照します。
スナップショットのストレージ使用率を定期的に監視することが重要です。スナップショットに割り当てられている領域の 100% に達すると、スナップショットが無効になります。
スナップショットが完全にいっぱいになる前に拡張することが重要です。これは、lvextend
コマンドを使用して手動で行うことも、/etc/lvm/lvm.conf
ファイルを使用して自動的に行うこともできます。
- シック LV スナップショット
- 元の LV のデータが変更されると、コピーオンライト (CoW) システムによって、変更前の元のデータがスナップショットにコピーされます。この方法では、変更が発生した場合にのみスナップショットのサイズが増加し、スナップショット作成時における元のボリュームの状態が保存されます。シックスナップショットは、事前に一定量のストレージ領域を割り当てる必要がある LV の一種です。この量は後で増減できますが、元の LV にどのような変更を加える予定かを検討してください。そうすることで、割り当てる領域が多すぎるためにリソースが無駄になったり、割り当てる領域が少なすぎるためにスナップショットのサイズを頻繁に増やす必要が生じたりすることがなくなります。
- シン LV スナップショット
シンスナップショットは、既存のシンプロビジョニングされた LV から作成される LV の一種です。シンスナップショットでは、事前に追加の領域を割り当てる必要はありません。最初は、元の LV とそのスナップショットの両方が同じデータブロックを共有します。元の LV に変更が加えられると、新しいデータが別のブロックに書き込まれますが、スナップショットは元のブロックを参照し続け、スナップショット作成時における LV データの特定時点のビューが保持されます。
シンプロビジョニングは、必要に応じてディスク領域を割り当てることで、ストレージを効率的に最適化および管理する方法です。そのため、各 LV に事前に大量のストレージを割り当てる必要がなく、複数の LV を作成できます。ストレージがシンプール内のすべての LV で共有されるため、リソースをより効率的に使用できます。シンプールは、必要に応じて LV に領域を割り当てます。
- シック LV スナップショットとシン LV スナップショットの選択
- シック LV スナップショットとシン LV スナップショットの選択は、スナップショットの作成元とする LV のタイプによって直接決まります。元の LV がシック LV である場合、スナップショットもシックになります。元の LV がシン LV の場合は、スナップショットもシンになります。
67.4.2.2. シック論理ボリュームスナップショットの管理
シック LV スナップショットを作成するときは、ストレージ要件とスナップショットの想定される有効期間を考慮することが重要です。元のボリュームに予想される変更に基づいて、十分なストレージを割り当てる必要があります。スナップショットは、想定される有効期間中の変更を取り込むのに十分なサイズである必要がありますが、元の LV のサイズを超えることはできません。変更頻度が低いと予想される場合は、10% - 15% の小さいスナップショットサイズで十分な場合があります。変更頻度が高い LV の場合は、30% 以上を割り当てる必要がある場合があります。
スナップショットが完全にいっぱいになる前に拡張することが重要です。スナップショットに割り当てられている領域の 100% に達すると、スナップショットが無効になります。lvs -o lv_name,data_percent,origin
コマンドを使用すると、スナップショットの容量を監視できます。
67.4.2.2.1. シック論理ボリュームスナップショットの作成
lvcreate
コマンドを使用して、シック LV スナップショットを作成できます。
前提条件
- 管理アクセスがある。
- 物理ボリュームが作成されている。詳細は、LVM 物理ボリュームの作成 を参照してください。
- ボリュームグループが作成されている。詳細は、LVM ボリュームグループの作成 を参照してください。
- 論理ボリュームが作成されている。詳細は、論理ボリュームの作成 を参照してください。
手順
スナップショットを作成する LV を特定します。
# lvs -o vg_name,lv_name,lv_size VG LV LSize VolumeGroupName LogicalVolumeName 10.00g
スナップショットのサイズは LV のサイズを超えることはできません。
シック LV スナップショットを作成します。
# lvcreate --snapshot --size SnapshotSize --name SnapshotName VolumeGroupName/LogicalVolumeName
SnapshotSize は、スナップショットに割り当てるサイズ (例: 10 G) に置き換えます。SnapshotName は、スナップショット論理ボリュームに付ける名前に置き換えます。VolumeGroupName は、元の論理ボリュームを含むボリュームグループの名前に置き換えます。LogicalVolumeName は、スナップショットの作成元とする論理ボリュームの名前に置き換えます。
検証
スナップショットが作成されたことを確認します。
# lvs -o lv_name,origin LV Origin LogicalVolumeName SnapshotName LogicalVolumeName
関連情報
-
lvcreate(8)
およびlvs(8)
man ページ
67.4.2.2.2. 論理ボリュームスナップショットの手動拡張
スナップショットに割り当てられている領域の 100% に達すると、スナップショットが無効になります。スナップショットが完全にいっぱいになる前に拡張することが重要です。これは、lvextend
コマンドを使用して手動で実行できます。
前提条件
- 管理アクセスがある。
手順
ボリュームグループ、論理ボリューム、スナップショットのソースボリュームの名前、使用率、およびサイズをリスト表示します。
# lvs -o vg_name,lv_name,origin,data_percent,lv_size VG LV Origin Data% LSize VolumeGroupName LogicalVolumeName 10.00g VolumeGroupName SnapshotName LogicalVolumeName 82.00 5.00g
シックプロビジョニングされたスナップショットを拡張します。
# lvextend --size +AdditionalSize VolumeGroupName/SnapshotName
AdditionalSize は、スナップショットに追加する容量 (例: +1G) に置き換えます。VolumeGroupName は、ボリュームグループの名前に置き換えます。SnapshotName は、スナップショットの名前に置き換えます。
検証
LV が拡張されたことを確認します。
# lvs -o vg_name,lv_name,origin,data_percent,lv_size VG LV Origin Data% LSize VolumeGroupName LogicalVolumeName 10.00g VolumeGroupName SnapshotName LogicalVolumeName 68.33 6.00g
67.4.2.2.3. シック論理ボリュームスナップショットの自動拡張
スナップショットに割り当てられている領域の 100% に達すると、スナップショットが無効になります。スナップショットが完全にいっぱいになる前に拡張することが重要です。これは自動的に実行できます。
前提条件
- 管理アクセスがある。
手順
-
root
ユーザーとして、任意のエディターで/etc/lvm/lvm.conf
ファイルを開きます。 snapshot_autoextend_threshold
行とsnapshot_autoextend_percent
行のコメントを解除し、各パラメーターを必要な値に設定します。snapshot_autoextend_threshold = 70 snapshot_autoextend_percent = 20
snapshot_autoextend_threshold
は、LVM がスナップショットの自動拡張を開始するパーセンテージを指定します。たとえば、このパラメーターを 70 に設定すると、容量の 70% に達したときに LVM がスナップショットの拡張を試みます。snapshot_autoextend_percent
は、しきい値に達したときにスナップショットを何パーセント拡張するかを指定します。たとえば、パラメーターを 20 に設定すると、スナップショットが現在のサイズの 20% 増加します。- 変更を保存し、エディターを終了します。
lvm2-monitor
を再起動します。# systemctl restart lvm2-monitor
67.4.2.2.4. シック論理ボリュームのスナップショットのマージ
シック LV スナップショットを、スナップショットの作成元となった元の論理ボリュームにマージできます。マージプロセスでは、元の LV がスナップショット作成時点の状態に戻されます。マージが完了すると、スナップショットは削除されます。
元の LV とスナップショット LV 間のマージは、どちらかがアクティブな場合、延期されます。両方の LV が再アクティブ化され、使用されていない場合にのみ続行されます。
前提条件
- 管理アクセスがある。
手順
LV、そのボリュームグループ、およびそのパスをリスト表示します。
# lvs -o lv_name,vg_name,lv_path LV VG Path LogicalVolumeName VolumeGroupName /dev/VolumeGroupName/LogicalVolumeName SnapshotName VolumeGroupName /dev/VolumeGroupName/SnapshotName
LV がマウントされている場所を確認します。
# findmnt -o SOURCE,TARGET /dev/VolumeGroupName/LogicalVolumeName # findmnt -o SOURCE,TARGET /dev/VolumeGroupName/SnapshotName
/dev/VolumeGroupName/LogicalVolumeName は、論理ボリュームへのパスに置き換えます。/dev/VolumeGroupName/SnapshotName は、スナップショットへのパスに置き換えます。
LV をアンマウントします。
# umount /LogicalVolume/MountPoint # umount /Snapshot/MountPoint
/LogicalVolume/MountPoint は、論理ボリュームのマウントポイントに置き換えます。/Snapshot/MountPoint は、スナップショットのマウントポイントに置き換えます。
LV を非アクティブ化します。
# lvchange --activate n VolumeGroupName/LogicalVolumeName # lvchange --activate n VolumeGroupName/SnapshotName
VolumeGroupName は、ボリュームグループの名前に置き換えます。LogicalVolumeName は、論理ボリュームの名前に置き換えます。SnapshotName は、スナップショットの名前に置き換えます。
シック LV スナップショットを元の LV にマージします。
# lvconvert --merge SnapshotName
SnapshotName は、スナップショットの名前に置き換えます。
LV をアクティブ化します。
# lvchange --activate y VolumeGroupName/LogicalVolumeName
VolumeGroupName は、ボリュームグループの名前に置き換えます。LogicalVolumeName は、論理ボリュームの名前に置き換えます。
LV をマウントします。
# umount /LogicalVolume/MountPoint
/LogicalVolume/MountPoint は、論理ボリュームのマウントポイントに置き換えます。
検証
スナップショットが削除されたことを確認します。
# lvs -o lv_name
関連情報
-
lvconvert(8)
、lvs(8)
man ページ
67.4.2.3. シン論理ボリュームスナップショットの管理
ストレージ効率を優先する場合は、シンプロビジョニングが適しています。ストレージ領域の動的割り当てにより、初期のストレージコストが削減され、利用可能なストレージリソースが最大限に使用されます。動的なワークロードがある環境や、時間の経過とともにストレージが増加する環境では、シンプロビジョニングによって柔軟性が向上します。これにより、ストレージ領域を事前に大量に割り当てることなく、ストレージシステムをニーズの変化に適応させることができます。動的な割り当てにより、オーバープロビジョニングが可能になります。つまり、すべての LV の合計サイズが、シンプールの物理サイズを超えることがあります。これは、すべての領域が同時に使用されるわけではないということを前提にしているためです。
67.4.2.3.1. シン論理ボリュームスナップショットの作成
lvcreate
コマンドを使用して、シン LV スナップショットを作成できます。シン LV スナップショットを作成するときは、スナップショットサイズを指定しないでください。サイズのパラメーターを含めると、代わりにシックスナップショットが作成されます。
前提条件
- 管理アクセスがある。
- 物理ボリュームが作成されている。詳細は、LVM 物理ボリュームの作成 を参照してください。
- ボリュームグループが作成されている。詳細は、LVM ボリュームグループの作成 を参照してください。
- 論理ボリュームが作成されている。詳細は、論理ボリュームの作成 を参照してください。
手順
スナップショットを作成する LV を特定します。
# lvs -o lv_name,vg_name,pool_lv,lv_size LV VG Pool LSize PoolName VolumeGroupName 152.00m ThinVolumeName VolumeGroupName PoolName 100.00m
シン LV スナップショットを作成します。
# lvcreate --snapshot --name SnapshotName VolumeGroupName/ThinVolumeName
SnapshotName は、スナップショット論理ボリュームに付ける名前に置き換えます。VolumeGroupName は、元の論理ボリュームを含むボリュームグループの名前に置き換えます。ThinVolumeName は、スナップショットの作成元とするシン論理ボリュームの名前に置き換えます。
検証
スナップショットが作成されたことを確認します。
# lvs -o lv_name,origin LV Origin PoolName SnapshotName ThinVolumeName ThinVolumeName
関連情報
-
lvcreate(8)
およびlvs(8)
man ページ
67.4.2.3.2. シン論理ボリュームスナップショットのマージ
シン LV スナップショットを、スナップショットの作成元となった元の論理ボリュームにマージできます。マージプロセスでは、元の LV がスナップショット作成時点の状態に戻されます。マージが完了すると、スナップショットは削除されます。
前提条件
- 管理アクセスがある。
手順
LV、そのボリュームグループ、およびそのパスをリスト表示します。
# lvs -o lv_name,vg_name,lv_path LV VG Path ThinPoolName VolumeGroupName ThinSnapshotName VolumeGroupName /dev/VolumeGroupName/ThinSnapshotName ThinVolumeName VolumeGroupName /dev/VolumeGroupName/ThinVolumeName
元の LV がマウントされている場所を確認します。
# findmnt -o SOURCE,TARGET /dev/VolumeGroupName/ThinVolumeName
VolumeGroupName/ThinVolumeName は、論理ボリュームへのパスに置き換えます。
LV をアンマウントします。
# umount /ThinLogicalVolume/MountPoint
/ThinLogicalVolume/MountPoint は、論理ボリュームのマウントポイントに置き換えます。/ThinSnapshot/MountPoint は、スナップショットのマウントポイントに置き換えます。
LV を非アクティブ化します。
# lvchange --activate n VolumeGroupName/ThinLogicalVolumeName
VolumeGroupName は、ボリュームグループの名前に置き換えます。ThinLogicalVolumeName は、論理ボリュームの名前に置き換えます。
シン LV スナップショットを元の LV にマージします。
# lvconvert --mergethin VolumeGroupName/ThinSnapshotName
VolumeGroupName は、ボリュームグループの名前に置き換えます。ThinSnapshotName は、スナップショットの名前に置き換えます。
LV をマウントします。
# umount /ThinLogicalVolume/MountPoint
/ThinLogicalVolume/MountPoint は、論理ボリュームのマウントポイントに置き換えます。
検証
元の LV がマージされたことを確認します。
# lvs -o lv_name
関連情報
-
lvremove(8)
、lvs(8)
man ページ
67.4.3. RAID0 ストライプ化論理ボリュームの作成
RAID0 論理ボリュームは、論理ボリュームデータをストライプサイズ単位で複数のデータサブボリューム全体に分散します。以下の手順では、ディスク間でデータをストライピングする mylv という LVM RAID0 論理ボリュームを作成します。
前提条件
- 3 つ以上の物理ボリュームを作成している。物理ボリュームの作成方法は、LVM 物理ボリュームの作成 を参照してください。
- ボリュームグループを作成している。詳細は、LVM ボリュームグループの作成 を参照してください。
手順
既存のボリュームグループから RAID0 論理ボリュームを作成します。次のコマンドは、ボリュームグループ myvg から RAID0 ボリューム mylv を作成します。このボリュームは、サイズが 2G で、ストライプが 3 つあります。ストライプのサイズは 4kB です。
# lvcreate --type raid0 -L 2G --stripes 3 --stripesize 4 -n mylv my_vg Rounding size 2.00 GiB (512 extents) up to stripe boundary size 2.00 GiB(513 extents). Logical volume "mylv" created.
RAID0 論理ボリュームにファイルシステムを作成します。以下のコマンドを使用すると、論理ボリュームに ext4 ファイルシステムが作成されます。
# mkfs.ext4 /dev/my_vg/mylv
論理ボリュームをマウントして、ファイルシステムのディスクの領域使用率を報告します。
# mount /dev/my_vg/mylv /mnt # df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/my_vg-mylv 2002684 6168 1875072 1% /mnt
検証
作成された RAID0 ストライピング論理ボリュームを表示します。
# lvs -a -o +devices,segtype my_vg LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices Type mylv my_vg rwi-a-r--- 2.00g mylv_rimage_0(0),mylv_rimage_1(0),mylv_rimage_2(0) raid0 [mylv_rimage_0] my_vg iwi-aor--- 684.00m /dev/sdf1(0) linear [mylv_rimage_1] my_vg iwi-aor--- 684.00m /dev/sdg1(0) linear [mylv_rimage_2] my_vg iwi-aor--- 684.00m /dev/sdh1(0) linear
67.4.4. 論理ボリュームからのディスクの削除
この手順では、ディスクを交換するか、別のボリュームで使用するために、既存の論理ボリュームからディスクを削除する方法を説明します。
ディスクを削除する前に、LVM 物理ボリュームのエクステントを、別のディスクまたはディスクセットに移動する必要があります。
手順
LV を使用する際に、物理ボリュームの使用済み容量と空き容量を表示します。
# pvs -o+pv_used PV VG Fmt Attr PSize PFree Used /dev/vdb1 myvg lvm2 a-- 1020.00m 0 1020.00m /dev/vdb2 myvg lvm2 a-- 1020.00m 0 1020.00m /dev/vdb3 myvg lvm2 a-- 1020.00m 1008.00m 12.00m
データを他の物理ボリュームに移動します。
既存のボリュームグループ内の他の物理ボリュームに空きエクステントが十分にある場合は、以下のコマンドを使用してデータを移動します。
# pvmove /dev/vdb3 /dev/vdb3: Moved: 2.0% ... /dev/vdb3: Moved: 79.2% ... /dev/vdb3: Moved: 100.0%
既存のボリュームグループ内の他の物理ボリュームに空きエクステントが十分にない場合は、以下のコマンドを使用して新しい物理ボリュームを追加し、新たに作成した物理ボリュームを使用してボリュームグループを拡張し、この物理ボリュームにデータを移動します。
# pvcreate /dev/vdb4 Physical volume "/dev/vdb4" successfully created # vgextend myvg /dev/vdb4 Volume group "myvg" successfully extended # pvmove /dev/vdb3 /dev/vdb4 /dev/vdb3: Moved: 33.33% /dev/vdb3: Moved: 100.00%
物理ボリュームを削除します。
# vgreduce myvg /dev/vdb3 Removed "/dev/vdb3" from volume group "myvg"
論理ボリュームに、障害のある物理ボリュームが含まれる場合は、その論理ボリュームを使用することはできません。見つからない物理ボリュームをボリュームグループから削除します。その物理ボリュームに論理ボリュームが割り当てられていない場合は、
vgreduce
コマンドの--removemissing
パラメーターを使用できます。# vgreduce --removemissing myvg
関連情報
-
システム上の
pvmove (8)
、vgextend (8)
、vereduce (8)
、およびpvs (8) の
man ページ
67.4.5. Web コンソールを使用してボリュームグループ内の物理ドライブを変更する
RHEL 8 Web コンソールを使用して、ボリュームグループ内のドライブを変更できます。
前提条件
- 古いまたは不具合がある物理ドライブを交換するための新しい物理ドライブ。
- この設定には、物理ドライブがボリュームグループに編成されていることが必要になります。
67.4.5.1. Web コンソールでボリュームグループに物理デバイスを追加
RHEL 8 Web コンソールを使用して、既存の論理ボリュームに新しい物理ドライブまたはその他のタイプのボリュームを追加できます。
前提条件
RHEL 8 Web コンソールがインストールされている。
手順は、Web コンソールのインストールおよび有効化 を参照してください。
-
cockpit-storaged
パッケージがシステムにインストールされている。 - ボリュームグループが作成されている。
- マシンに新しいドライブが接続されている。
手順
RHEL 8 Web コンソールにログインします。
詳細は、Web コンソールへのログイン を参照してください。
- Storage をクリックします。
- Storage テーブルで、物理ドライブを追加するボリュームグループをクリックします。
- LVM2 volume group ページで、 をクリックします。
- Add Disks ダイアログボックスでドライブを選択し、 をクリックします。
検証
- LVM2 volume group ページで、Physical volumes セクションをチェックして、新しい物理ドライブがボリュームグループで使用可能かどうかを確認します。
67.4.5.2. Web コンソールでボリュームグループから物理ドライブを削除
論理ボリュームに複数の物理ドライブが含まれている場合は、オンラインの物理ドライブのいずれかを削除できます。
システムは、削除時に、削除するドライブから全てのデータを自動的に別のデバイスに移動します。これには少し時間がかかる場合があります。
Web コンソールは、物理ドライブを削除するための十分な容量があるかどうかを検証します。
前提条件
RHEL 8 Web コンソールがインストールされている。
手順は、Web コンソールのインストールおよび有効化 を参照してください。
-
cockpit-storaged
パッケージがシステムにインストールされている。 - 複数の物理ドライブが接続するボリュームグループ
手順
- RHEL 8 Web コンソールにログインします。
- Storage をクリックします。
- Storage テーブルで、物理ドライブを追加するボリュームグループをクリックします。
- LVM2 volume group ページで、Physical volumes セクションまでスクロールします。
- 削除する物理ボリュームの横にあるメニューボタン をクリックします。
ドロップダウンメニューから
を選択します。ディスクを削除するための十分な容量が論理ボリュームにあるかどうかを RHEL 8 Web コンソールが検証します。データを転送するための空き領域がない場合は、ディスクを削除することはできず、最初に別のディスクを追加してボリュームグループの容量を増やす必要があります。詳細については、Web コンソールで物理ドライブを論理ボリュームに追加する を参照してください。
67.4.6. 論理ボリュームの削除
lvremove
コマンドを使用して、スナップショットを含む既存の論理ボリュームを削除できます。
前提条件
- 管理アクセスがある。
手順
論理ボリュームとそのパスをリスト表示します。
# lvs -o lv_name,lv_path LV Path LogicalVolumeName /dev/VolumeGroupName/LogicalVolumeName
論理ボリュームがマウントされている場所を確認します。
# findmnt -o SOURCE,TARGET /dev/VolumeGroupName/LogicalVolumeName SOURCE TARGET /dev/mapper/VolumeGroupName-LogicalVolumeName /MountPoint
/dev/VolumeGroupName/LogicalVolumeName は、論理ボリュームへのパスに置き換えます。
論理ボリュームをアンマウントします。
# umount /MountPoint
/MountPoint は、論理ボリュームのマウントポイントに置き換えます。
論理ボリュームを削除します。
# lvremove VolumeGroupName/LogicalVolumeName
VolumeGroupName/LogicalVolumeName は、論理ボリュームへのパスに置き換えます。
関連情報
-
システム上の
lvs(8)
、lvremove(8)
man ページ
67.4.7. RHEL システムロールを使用した LVM 論理ボリュームの管理
storage
ロールを使用して、次のタスクを実行します。
- 複数のディスクで設定されるボリュームグループに LVM 論理ボリュームを作成します。
- 論理ボリューム上に特定のラベルを付けて ext4 ファイルシステムを作成します。
- ext4 ファイルシステムを永続的にマウントします。
前提条件
-
storage
ロールを含む Ansible Playbook がある。
67.4.7.1. storage
RHEL システムロールを使用して論理ボリュームを作成またはサイズ変更する
storage
ロールを使用して、次のタスクを実行します。
- 多数のディスクで構成されるボリュームグループに LVM 論理ボリュームを作成する
- LVM 上の既存のファイルシステムのサイズを変更する
- LVM ボリュームのサイズをプールの合計サイズのパーセンテージで表す
ボリュームグループが存在しない場合、このロールによって作成されます。ボリュームグループ内に論理ボリュームが存在する場合に、そのサイズが Playbook で指定されたサイズと一致しないと、サイズが変更されます。
論理ボリュームを縮小する場合、データの損失を防ぐために、その論理ボリューム上のファイルシステムによって、縮小する論理ボリューム内の領域が使用されていないことを確認する必要があります。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo
権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml
) を作成します。--- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Create logical volume ansible.builtin.include_role: name: rhel-system-roles.storage vars: storage_pools: - name: myvg disks: - sda - sdb - sdc volumes: - name: mylv size: 2G fs_type: ext4 mount_point: /mnt/data
サンプル Playbook で指定されている設定は次のとおりです。
size: <size>
- 単位 (GiB など) またはパーセンテージ (60% など) を使用してサイズを指定する必要があります。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.storage/README.md
ファイルを参照してください。Playbook の構文を検証します。
$ ansible-playbook --syntax-check ~/playbook.yml
このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
$ ansible-playbook ~/playbook.yml
検証
指定したボリュームが作成されたこと、または要求したサイズに変更されたことを確認します。
# ansible managed-node-01.example.com -m command -a 'lvs myvg'
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.storage/README.md
ファイル -
/usr/share/doc/rhel-system-roles/storage/
ディレクトリー
67.4.7.2. 関連情報
-
storage
ロールの詳細は、RHEL システムロールを使用したローカルストレージの管理 を参照してください。
67.4.8. storage
RHEL システムロールを使用して LVM 上の既存のファイルシステムのサイズを変更する
ストレージ
RHEL システムロールを使用して、ファイルシステムを持つ LVM 論理ボリュームのサイズを変更できます。
縮小する論理ボリュームにファイルシステムがある場合は、データの損失を防ぐために、縮小する論理ボリューム内の領域がファイルシステムによって使用されていないことを確認する必要があります。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo
権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml
) を作成します。--- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Resize LVM logical volume with file system ansible.builtin.include_role: name: rhel-system-roles.storage vars: storage_pools: - name: myvg disks: - /dev/sda - /dev/sdb - /dev/sdc volumes: - name: mylv1 size: 10 GiB fs_type: ext4 mount_point: /opt/mount1 - name: mylv2 size: 50 GiB fs_type: ext4 mount_point: /opt/mount2
この Playbook は、以下の既存のファイルシステムのサイズを変更します。
-
/opt/mount1
にマウントされるmylv1
ボリュームの Ext4 ファイルシステムは、そのサイズを 10 GiB に変更します。 -
/opt/mount2
にマウントされるmylv2
ボリュームの Ext4 ファイルシステムは、そのサイズを 50 GiB に変更します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.storage/README.md
ファイルを参照してください。-
Playbook の構文を検証します。
$ ansible-playbook --syntax-check ~/playbook.yml
このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
$ ansible-playbook ~/playbook.yml
検証
論理ボリュームが要求されたサイズに変更されたことを確認します。
# ansible managed-node-01.example.com -m command -a 'lvs myvg'
ファイルシステムツールを使用してファイルシステムのサイズを確認します。たとえば、ext4 の場合、dumpe2fs ツールによって報告されたブロック数とブロックサイズを掛け合わせてファイルシステムのサイズを計算します。
# ansible managed-node-01.example.com -m command -a 'dumpe2fs -h /dev/myvg/mylv | grep -E "Block count|Block size"'
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.storage/README.md
ファイル -
/usr/share/doc/rhel-system-roles/storage/
ディレクトリー