4.3. ボリュームグループの管理

このセクションでは、ボリュームグループ管理の様々な場面で使用するコマンドについて説明します。

4.3.1. ボリュームグループの作成

To create a volume group from one or more physical volumes, use the vgcreate command. The vgcreate command creates a new volume group by name and adds at least one physical volume to it.
以下のコマンドは、物理ボリューム /dev/sdd1/dev/sde1 が含まれる vg1 という名前のボリュームグループを作成します。
# vgcreate vg1 /dev/sdd1 /dev/sde1
ボリュームグループの作成に物理ボリュームが使用されるとき、ディスク領域はデフォルトで 4MB のエクステントに分割されます。このエクステントは、論理ボリュームのサイズを拡張/縮小する最小単位です。エクステントの数が多くても、論理ボリュームの I/O パフォーマンスに影響を与えることはありません。
エクステントサイズのデフォルト設定が適切でない場合は、vgcreate コマンドに -s オプションを使用して、エクステントのサイズを指定することができます。vgcreate コマンドに -p-l の引数を使用すると、ボリュームグループに追加可能な物理ボリュームまたは論理ボリュームの数に制限をかけることができます。
デフォルトでは、ボリュームグループは、同じ物理ボリューム上に並行ストライプを配置しないなど、常識的な規則に従って物理エクステントを割り当てます。これが normal の割り当てポリシーです。vgcreate コマンドで --alloc 引数を使用して、contiguousanywhere、または cling の割り当てポリシーを指定できます。一般的に、normal 以外の割り当てポリシーが必要となるのは、通常とは異なる、標準外のエクステント割り当てを必要とする特別なケースのみです。LVM で物理エクステントを割り当てる方法の詳細は、「LVM の割り当て」 を参照してください。
LVM ボリュームグループと配下にある論理ボリュームは、/dev ディレクトリー内に、以下のような配置で、デバイス特有のファイルディレクトリーツリーに格納されます。
/dev/vg/lv/
たとえば、myvg1myvg2 という名前のボリュームグループを作成し、それぞれに lv01lv02lv03 という名前の論理ボリュームを作成した場合は、デバイス特有のファイルが 6 つ作成されます。
/dev/myvg1/lv01
/dev/myvg1/lv02
/dev/myvg1/lv03
/dev/myvg2/lv01
/dev/myvg2/lv02
/dev/myvg2/lv03
デバイス特有のファイルは、対応する論理ボリュームがアクティブになっていないと表示されません。
LVM におけるデバイスの最大サイズは、64 ビット CPU 上で 8 エクサバイトです。

4.3.2. LVM の割り当て

LVM の操作で物理エクステントを単一または複数の論理ボリュームに割り当てる必要がある場合、割り当ては以下のように行われます。
  • ボリュームグループ上で割り当てられていない物理エクステントが、割り当ての候補になります。コマンドラインの末尾に物理エクステントの範囲を指定すると、指定した物理ボリュームの中で、その範囲内で割り当てられていない物理エクステントだけが、割り当て用エクステントとして考慮されます。
  • 割り当てポリシーは順番に試行されます。最も厳格なポリシー (contiguous) から始まり、最後は --alloc オプションで指定した割り当てポリシーか、特定の論理ボリュームやボリュームグループにデフォルトとして設定されている割り当てポリシーが試行されます。割り当てポリシーでは、埋める必要がある空の論理ボリューム領域の最小番号の論理エクステントから始まり、割り当てポリシーによる制限に沿って、できるだけ多くの領域の割り当てを行います。領域が足りなくなると、LVM は次のポリシーに移動します。
割り当てポリシーの制限は以下のとおりです。
  • contiguous の割り当てポリシーでは、論理ボリュームの最初の論理エクステントを除いたすべての論理エクステントは、その直前の論理エクステントに物理的に隣接している必要があります。
    論理ボリュームがストライプ化またはミラー化されている場合は、contiguous の割り当て制限が、領域を必要とする各ストライプまたはミラーイメージ (レッグ) に個別に適用されます。
  • cling の割り当てポリシーでは、既存の論理ボリュームに追加する論理エクステントに使用される物理ボリュームが、その論理ボリューム内の別の (1 つ以上の) 論理エクステントですでに使用されている必要があります。allocation/cling_tag_list の設定パラメーターが定義されており、一覧表示されているいずれかのタグが 2 つの物理ボリュームにある場合、この 2 つの物理ボリュームは一致すると見なされます。これにより、割り当てのために、同様のプロパティー (物理的な場所など) を持つ物理ボリュームのグループにタグを付け、その物理ボリュームを同等なものとして処理することができます。cling ポリシーを、LVM ボリュームの拡張時に使用する追加の物理ボリュームを指定する LVM タグと併用する方法の詳細は、cling 割り当てポリシーを使用した論理ボリュームの拡張」 を参照してください。
    論理ボリュームがストライプ化またはミラー化されると、cling の割り当て制限が、領域を必要とする各ストライプまたはミラーイメージ (レッグ) に個別に適用されます。
  • normal の割り当てポリシーは、並列の論理ボリューム (異なるストライプまたはミラーイメージ/レッグ) 内の同じオフセットで、その並列の論理ボリュームにすでに割り当てられている論理エクステントと同じ物理ボリュームを共有する物理エクステントは選択しません。
    ミラーデータを保持するために、論理ボリュームと同時にミラーログを割り当てる場合、normal の割り当てポリシーでは、最初にログとデータに対して、それぞれ別の物理ボリュームを選択しようとします。異なる物理ボリュームを選択できず、かつ allocation/mirror_logs_require_separate_pvs 設定パラメーターが 0 に設定されている場合は、データの一部とログが物理ボリュームを共有できるようになります。
    また、シンプールメタデータを割り当てる場合も、normal の割り当てポリシーはミラーログを割り当てる場合と同じようになりますが、設定パラメーターは allocation/thin_pool_metadata_require_separate_pvs の値が適用されます。
  • 割り当て要求を満たすのに十分な空きエクステントがあっても、normal の割り当てポリシーによって使用されない場合は、たとえ同じ物理ボリュームに 2 つのストライプを配置することによってパフォーマンスが低下しても、anywhere 割り当てポリシーがその空きエクステントを使用します。
割り当てポリシーは、vgchange コマンドで変更できます。

注記

定義された割り当てポリシーに沿って、このセクションで説明されている以上のレイアウトの操作が必要な場合は、今後のバージョンでコードが変更する可能性があることに注意してください。たとえば、割り当て可能な空き物理エクステントの数が同じ 2 つの空の物理ボリュームをコマンドラインで指定する場合、現行バージョンの LVM では、それが表示されている順番に使用が検討されます。ただし、今後のリリースで、そのプロパティーが変更されない保証はありません。特定の論理ボリューム用に特定のレイアウトを取得することが重要な場合は、各手順に適用される割り当てポリシー基づいて LVM がレイアウトを決定することがないように、lvcreatelvconvert を順に使用してレイアウトを構築してください。
特定のケースで、割り当てプロセスがどのように行われているかを確認するには、コマンドに -vvvv オプションを追加するなどして、デバッグロギングの出力を表示します。

4.3.3. クラスター内でのボリュームグループ作成

vgcreate コマンドで、単一のノードで作成する場合と同様に、クラスター環境内に CLVM ボリュームグループを作成します。

注記

Red Hat Enterprise Linux 7 では、クラスターは Pacemaker で管理されます。クラスター化された LVM 論理ボリュームは Pacemaker クラスターと併用される場合のみサポートされ、クラスターリソースとして設定する必要があります。クラスターで LVM ボリュームを設定するための情報は、「「Red Hat High Availability クラスターの LVM 論理ボリューム」」を参照してください。
クラスターのメンバーによって共有されるボリュームグループを作成するには、vgcreate -cy または vgchange -cy コマンドで clustered 属性を設定して作成する必要があります。CLVMD が実行されている場合、クラスター属性は自動的に設定されます。この clustered 属性は、ボリュームグループが CLVMD によって管理および保護される必要があることを示します。クラスターによって共有されず、単一のホストのみが認識できるボリュームグループを作成する場合、この clustered 属性を vgcreate -cn または vgchange -cn コマンドで向こうにする必要があります。
デフォルトでは、clustered 属性で共有ストレージに作成されたボリュームグループは、その共有ストレージにアクセス可能なすべてのコンピューターによって認識されます。ただし、vgcreate コマンドの -cn オプションを使用すれば、クラスター内の 1 つのノードのみが認識できるローカルのボリュームグループを作成することができます。
クラスター環境で以下のコマンドを実行すると、コマンドを実行しているノードに対してローカルとなるボリュームグループが作成されます。このコマンドは、物理ボリュームである /dev/sdd1/dev/sde1 を含むローカルボリューム vg1 を作成します。
# vgcreate -c n vg1 /dev/sdd1 /dev/sde1
vgchange コマンドで -c オプションを使用すると、既存のボリュームグループをローカルにするか、もしくはクラスター化するかを変更できます。詳細は 「ボリュームグループのパラメーター変更」 で説明しています。
既存のボリュームグループがクラスター化したボリュームグループであるかどうかは、vgs コマンドでチェックできます。ボリュームがクラスター化されている場合は、c 属性を表示します。以下のコマンドは、VolGroup00testvg1 のボリュームグループの属性を表示します。この例では、VolGroup00 はクラスター化されていませんが、testvg1 は、Attr 列にある c 属性が示すようにクラスター化されています。
# vgs
  VG            #PV #LV #SN Attr   VSize  VFree
  VolGroup00      1   2   0 wz--n- 19.88G    0
  testvg1         1   1   0 wz--nc 46.00G 8.00M
For more information on the vgs command, see 「ボリュームグループの表示 」「LVM 用のカスタム報告」, and the vgs man page.

4.3.4. ボリュームグループへの物理ボリュームの追加

物理ボリュームを既存ボリュームグループに追加するには、vgextend コマンドを使用します。vgextend コマンドは、空き物理ボリュームを 1 つまたは複数追加して、ボリュームグループの容量を増やします。
以下のコマンドは、物理ボリューム /dev/sdf1 をボリュームグループ vg1 に追加します。
# vgextend vg1 /dev/sdf1

4.3.5. ボリュームグループの表示

LVM ボリュームグループのプロパティーを表示するのに使用できるコマンドは 2 つあります。vgsvgdisplay です。
vgscan コマンドは、ボリュームグループのすべてのディスクをスキャンして LVM キャッシュファイルを再構築するほかに、ボリュームグループを表示することもできます。vgscan コマンドに関する情報は 「キャッシュファイル構築のためのボリュームグループのディスクスキャン」 を参照してください。
vgs コマンドは、ボリュームグループの情報を設定可能な形式で提供し、1 ボリュームグループにつき 1 行ずつ表示します。vgs コマンドでは形式をかなり自由にカスタマイズできるため、スクリプト作成に役立ちます。出力をカスタマイズする vgs コマンドを使用する方法は、「LVM 用のカスタム報告」 を参照してください。
vgdisplay コマンドは、決められた形式でボリュームグループのプロパティー (サイズ、エクステント、物理ボリュームの数など) を表示します。以下の例は、ボリュームグループ new_vg に対する vgdisplay コマンドの出力を示しています。ボリュームグループを指定しないと、既存のボリュームグループがすべて表示されます。
# vgdisplay new_vg
  --- Volume group ---
  VG Name               new_vg
  System ID
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  11
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               51.42 GB
  PE Size               4.00 MB
  Total PE              13164
  Alloc PE / Size       13 / 52.00 MB
  Free  PE / Size       13151 / 51.37 GB
  VG UUID               jxQJ0a-ZKk0-OpMO-0118-nlwO-wwqd-fD5D32

4.3.6. キャッシュファイル構築のためのボリュームグループのディスクスキャン

vgscan コマンドは、システムでサポートされるすべてのディスクデバイスをスキャンし、LVM 物理ボリュームとボリュームグループを検索します。これにより、/etc/lvm/cache/.cache ファイルに LVM キャッシュファイルが作成され、ここに現在の LVM デバイスの一覧を保ちます。
LVM は、システムの起動時、vgcreate コマンドの実行時、LVM による不整合の検出時などの他の LVM 操作時に、vgscan コマンドを自動的に実行します。

注記

ハードウェア設定を変更して、ノードに対してデバイスの追加/削除を行う場合、システムの起動時に存在していなかったデバイスがシステムに認識されるように、vgscan コマンドを手動で実行しなければならない場合があります。これは、たとえば、SAN 上のシステムに新しいディスクを追加したり、物理ボリュームとしてラベルが付けられた新しいディスクをホットプラグする場合に必要になる可能性があります。
/etc/lvm/lvm.conf ファイルでフィルターを定義して、特定デバイスを除外するようにスキャンを設定できます。スキャンするデバイスを制御するフィルターの使用方法は、「フィルターを使用した LVM デバイススキャンの制御」 を参照してください。
次の例は、vgscan コマンドの出力になります。
# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "new_vg" using metadata type lvm2
  Found volume group "officevg" using metadata type lvm2

4.3.7. ボリュームグループからの物理ボリュームの削除

ボリュームグループから未使用の物理ボリュームを削除するには、vgreduce コマンドを使用します。vgreduce コマンドは、空の物理ボリュームを 1 つまたは複数削除して、ボリュームグループの容量を縮小します。これによって、物理ボリュームが解放され、異なるボリュームグループで使用したり、システムから削除できるようになります。
ボリュームグループから物理ボリュームを削除する前に、pvdisplay コマンドを使用して、その物理ボリュームが論理ボリュームで使用されていないことを確認することができます。
# pvdisplay /dev/hda1

-- Physical volume ---
PV Name               /dev/hda1
VG Name               myvg
PV Size               1.95 GB / NOT usable 4 MB [LVM: 122 KB]
PV#                   1
PV Status             available
Allocatable           yes (but full)
Cur LV                1
PE Size (KByte)       4096
Total PE              499
Free PE               0
Allocated PE          499
PV UUID               Sd44tK-9IRw-SrMC-MOkn-76iP-iftz-OVSen7
物理ボリュームが使用中の場合は、pvmove コマンドを使用して、データを別の物理ボリュームに移行する必要があります。その後、vgreduce コマンドを使用してその物理ボリュームを削除します。
以下のコマンドは、物理ボリューム /dev/hda1 を、ボリュームグループ my_volume_group から取り除きます。
# vgreduce my_volume_group /dev/hda1
論理ボリュームに、障害のある物理ボリュームが含まれる場合は、その論理ボリュームを使用することはできません。見つからない物理ボリュームをボリュームグループから削除します。その物理ボリュームに論理ボリュームが割り当てられていない場合は、vgreduce コマンドの --removemissing パラメーターを使用することができます。
障害が発生した物理ボリュームに、セグメントタイプが mirror の論理ボリュームのミラーイメージが含まれる場合、vgreduce --removemissing --mirrorsonly --force コマンドを使ってミラーからイメージを削除することができます。これにより、物理ボリュームのミラーイメージである論理ボリュームのみが削除されます。
LVM ミラーの障害から回復する方法は、「LVM ミラー障害からの回復」 を参照してください。ボリュームグループから紛失した物理ボリュームを削除する方法は、「紛失した物理ボリュームのボリュームグループからの削除」 を参照してください。

4.3.8. ボリュームグループのアクティブ化と非アクティブ化

ボリュームグループを作成すると、デフォルトでアクティブになります。これは、そのグループ内の論理ボリュームがアクセス可能で、かつ変更される可能性があることを意味します。
ボリュームグループを非アクティブ化し、カーネルに認識されないようにする必要のある様々な状況があります。ボリュームグループを非アクティブ化またはアクティブ化するには、vgchange コマンドで -a (--available) 引数を使用します。
以下の例では、ボリュームグループ my_volume_group を非アクティブ化します。
# vgchange -a n my_volume_group
クラスターロッキングが有効な場合には、「e」を追加すると、 1 つのノードでボリュームグループが排他的にアクティブ化または非アクティブ化されます。「l」を追加すると、ローカルノードでのみボリュームグループがアクティブ化または非アクティブ化されます。単一ホストのスナップショットを使用する論理ボリュームは、一度に 1 つのノードでしか利用できないため、常に排他的にアクティブ化されます。
「論理ボリュームグループのパラメーター変更」 で説明されているように、lvchange コマンドを使用して、個別の論理ボリュームを非アクティブ化できます。クラスター内の個別ノード上で論理ボリュームをアクティブ化する方法については、「クラスター内の個別ノードでの論理ボリュームのアクティブ化」 を参照してください。

4.3.9. ボリュームグループのパラメーター変更

「ボリュームグループのアクティブ化と非アクティブ化」 で説明されているように、vgchange コマンドは、ボリュームグループを非アクティブ化およびアクティブ化するのに使用されます。また、このコマンドを使用して、既存のボリュームグループに関するボリュームグループパラメーターを変更することもできます。
以下のコマンドは、ボリュームグループ vg00 の論理ボリュームの最大数を 128 に変更します。
# vgchange -l 128 /dev/vg00
vgchange コマンドで変更できるボリュームグループパラメーターの説明については、vgchange(8) の man ページを参照してください。

4.3.10. ボリュームグループの削除

論理ボリュームがないボリュームグループを削除するには、vgremove コマンドを使用します。
# vgremove officevg
  Volume group "officevg" successfully removed

4.3.11. ボリュームグループの分割

ボリュームグループの物理ボリュームを分割して、新しいボリュームグループを作成するには、vgsplit コマンドを使用します。
論理ボリュームはボリュームグループ間で分割することはできません。それぞれの既存の論理ボリュームは完全に物理ボリューム上に存在し、既存または新規のボリュームグループを形成している必要があります。ただし必要な場合は、pvmove コマンドを使用して、その分割を強制することができます。
以下の例は、元のボリュームグループ bigvg から新規のボリュームグループ smallvg を分割しています。
# vgsplit bigvg smallvg /dev/ram15
  Volume group "smallvg" successfully split from "bigvg"

4.3.12. ボリュームグループの統合

2 つのボリュームグループを統合して 1 つのボリュームグループにするには、vgmerge コマンドを使用します。ボリュームの物理エクステントサイズが同じで、かつ両ボリュームグループの物理および論理ボリュームのサマリーが「マージ先」ボリュームグループの制限内に収まる場合は、非アクティブな「マージ元」のボリュームを、アクティブまたは非アクティブの「マージ先」ボリュームにマージすることができます。
以下のコマンドは、非アクティブなボリュームグループ my_vg をアクティブまたは非アクティブなボリュームグループ databases にマージして、詳細なランタイム情報を提供します。
# vgmerge -v databases my_vg

4.3.13. ボリュームグループメタデータのバックアップ

メタデータのバックアップとアーカイブは、lvm.conf ファイルで無効になっていない限り、ボリュームグループまたは論理ボリューム設定の変更時に自動的に作成されます。デフォルトでは、メタデータのバックアップは /etc/lvm/backup ファイルに保存され、メタデータのアーカイブは /etc/lvm/archives ファイルに保存されます。vgcfgbackup コマンドを使用すると、手動でメタデータを /etc/lvm/backup ファイルにバックアップできます。
vgcfgrestore コマンドは、ボリュームグループのメタデータを、アーカイブからボリュームグループのすべての物理ボリュームに復元します。
物理ボリュームのメタデータを復元する vgcfgrestore コマンドの使用例は、「物理ボリュームメタデータの復元」 を参照してください。

4.3.14. ボリュームグループの名前変更

既存ボリュームグループの名前を変更するには、vgrename コマンドを使用します。
以下のいずれかのコマンドで、既存ボリュームグループ vg02 の名前を my_volume_group に変更できます。
# vgrename /dev/vg02 /dev/my_volume_group
# vgrename vg02 my_volume_group

4.3.15. ボリュームグループの別のシステムへの移動

LVM ボリュームグループ全体を、別のシステムに移動することができます。これを実行するには、vgexportvgimport のコマンドの使用が推奨されます。

注記

vgimport コマンドの --force 引数を使用できます。これで物理ボリュームがないボリュームグループをインポートし、vgreduce --removemissing コマンドを実行します。
vgexport コマンドは、非アクティブのボリュームグループにシステムがアクセスできないようにするため、物理ボリュームの割り当て解除が可能になります。vgimport コマンドは、vgexport コマンドで非アクティブにしていたボリュームグループに、マシンが再度アクセスできるようにします。
ボリュームグループを 2 つのシステム間で移行するには、以下の手順に従います。
  1. ボリュームグループ内のアクティブなボリュームのファイルにアクセスしているユーザーがいないことを確認してから、論理ボリュームをアンマウントします。
  2. vgchange コマンドで -a n 引数を使用して、そのボリュームグループを非アクティブとしてマークします。これによりボリュームグループでこれ以上の動作が発生しないようにします。
  3. vgexport コマンドを使用してボリュームグループをエクスポートします。これにより、削除中のシステムからボリュームグループへアクセスできなくなります。
    ボリュームグループをエクスポートして pvscan コマンドを実行すると、以下の例のように、エクスポート先のボリュームグループに物理ボリュームが表示されます。
    # pvscan
      PV /dev/sda1    is in exported VG myvg [17.15 GB / 7.15 GB free]
      PV /dev/sdc1    is in exported VG myvg [17.15 GB / 15.15 GB free]
      PV /dev/sdd1   is in exported VG myvg [17.15 GB / 15.15 GB free]
      ...
    次にシステムがシャットダウンする時に、ボリュームグループを構成していたディスクを外して、新しいシステムに接続できます。
  4. ディスクが新しいシステムに接続したら、vgimport コマンドを使用してボリュームグループをインポートし、新しいシステムからアクセスできるようにします。
  5. vgchange コマンドで -a y 引数を使用して、ボリュームグループをアクティブにします。
  6. ファイルシステムをマウントして使用可能にします。

4.3.16. ボリュームグループディレクトリーの再作成

ボリュームグループディレクトリーと、論理ボリューム特有ファイルを再作成するには、vgmknodes コマンドを使用します。このコマンドは、/dev ディレクトリー内の LVM2 特有ファイルをチェックします。このファイルはアクティブな論理ボリュームに必要です。このコマンドは不足しているファイルを作成し、未使用のファイルを削除します。
vgscan コマンドに mknodes 引数を指定して、vgmknodes コマンドを vgscan コマンドに統合することができます。