Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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

本セクションでは、ボリュームグループ管理のさまざまな特徴を実行するコマンドを説明します。

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

1 つまたは複数の物理ボリュームからボリュームグループを作成するには、vgcreate コマンドを使用します。vgcreate コマンドは、名前で新しいボリュームグループを作成し、そこに物理ボリュームを 1 つ以上追加します。
以下のコマンドは、物理ボリューム /dev/sdd1 および /dev/sde1 を含む vg1 という名前のボリュームグループを作成します。
# vgcreate vg1 /dev/sdd1 /dev/sde1
ボリュームグループの作成に物理ボリュームが使用されると、ディスク領域はデフォルトで 4MB のエクステントに分割されます。このエクステントは、論理ボリュームのサイズを拡張/縮小する最小単位です。エクステントの数が多くても、論理ボリュームの I/O パフォーマンスに影響を与えることはありません。
エクステントサイズのデフォルトサイズが適切でない場合は、vgcreate コマンドに -s オプションを使用して、エクステントサイズを指定できます。vgcreate コマンドに -p 引数と -l 引数を使用すると、ボリュームグループに追加可能な物理ボリュームまたは論理ボリュームの数に制限をかけることができます。
デフォルトでは、ボリュームグループは、同じ物理ボリューム上に並行ストライプを配置しないなど、常識的な規則に従って物理エクステントを割り当てます。これは、normal の割り当てポリシーです。vgcreate コマンドで --alloc 引数を使用して、連続 した、任意の場所、またはクローズの割り当てポリシーを指定でき ます。一般的に、normal 以外の割り当てポリシーは、異常な範囲または非標準のエクステント割り当てを指定する必要がある特別な場合にのみ必要になります。LVM で物理エクステントを割り当てる方法の詳細は、「LVM の割り当て」 を参照してください。
LVM ボリュームグループと基礎となる論理ボリュームは、/dev ディレクトリー内のデバイス特殊ファイルディレクトリーツリーに、以下のレイアウトで含まれます。
/dev/vg/lv/
たとえば、myvg1myvg2 のボリュームグループを作成し、それぞれに lv01lv02、および lv03 という名前の 3 つの論理ボリュームを作成すると、デバイス特有のファイルが 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 の操作で物理エクステントを 1 つまたは複数の論理ボリュームに割り当てる必要がある場合、割り当ては以下のように行われます。
  • ボリュームグループで割り当てられていない物理エクステントのセットが、割り当てのために生成されます。コマンドラインの末尾に物理エクステントの範囲を指定すると、指定した物理ボリュームの中で、その範囲内で割り当てられていない物理エクステントだけが、割り当て用エクステントとして考慮されます。
  • 割り当てポリシーは順番に試行されます。最も厳格なポリシー(contiguous)から始まり、最後は --alloc オプションで指定した割り当てポリシーか、特定の論理ボリュームまたはボリュームグループにデフォルトとして設定されている割り当てポリシーが試行されます。割り当てポリシーでは、埋める必要がある空の論理ボリューム領域の最小番号の論理エクステントから始まり、割り当てポリシーによる制限に従って、できるだけ多くの領域の割り当てを行います。領域が足りなくなると、LVM は次のポリシーに移動します。
割り当てポリシーの制限は以下のとおりです。
  • contiguous の割り当てポリシーでは、論理ボリュームの最初の論理エクステントではない論理エクステントの物理的な場所が、その直前の論理エクステントの物理的な場所に隣接して いる 必要があります。
    論理ボリュームがストライプ化またはミラーリングされる場合、連続 した割り当て制限は、スペースが必要な各ストライプまたはミラーイメージ(leg)に個別に適用されます。
  • cling の割り当てポリシーでは、既存の論理ボリュームに追加する論理エクステントに使用される物理ボリュームが、その論理ボリュームの最初の 1 つ以上の論理エクステントによってすでに使用されている必要があります。設定パラメーター allocation/cling_tag_list が定義されている場合には、一覧表示されたタグのいずれかが両方の物理ボリュームに存在する場合、2 つの物理ボリュームが一致します。これにより、割り当てのために、同様のプロパティー (物理的な場所など) が設定されている物理ボリュームのグループにタグを付け、その物理ボリュームを同等なものとして処理できます。cling ポリシーを LVM タグと併用して、LVM ボリュームの拡張時に使用する追加の物理ボリュームを指定する方法の詳細は、「割り当てポリシーを閉じた論理 ボリューム の拡張」 を参照してください。
    論理ボリュームがストライプ化またはミラーリングされる場合、移動した割り当て制限は、領域が必要な各ストライプまたはミラーイメージ(leg)に個別に適用されます。
  • 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 属性を表示します。以下のコマンドは、ボリュームグループ VolGroup00 および testvg1 の属性を表示します。この例では、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
vgs コマンドの詳細は、「ボリュームグループの表示」「LVM 用のカスタム報告」 および vgs の man ページを参照してください。

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

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

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

LVM ボリュームグループのプロパティーを表示するのに使用できるコマンドは 2 つあります。vgs および vgdisplay です。
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 が不整合を検出したときなど、システム起動時やその他のタイミングで 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 コマンドを使用して物理ボリュームを削除します。
以下のコマンドは、ボリュームグループ my_volume_group から物理ボリューム /dev/hda1 を削除します。
# 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 コマンドを使用して分割を強制することができます。
以下の例では、新しいボリュームグループ smallvg を、元のボリュームグループ bigvg から分割します。
# 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/archive ファイルに保存されます。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 ボリュームグループ全体を、別のシステムに移動できます。これを行うときは、vgexport コマンドと vgimport コマンドを使用することが推奨されます。
注記
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 コマンドに組み込むことができます。