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/
たとえば、
myvg1
と myvg2
のボリュームグループを作成し、それぞれに lv01
、lv02
、および 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 がレイアウトを決定することがないように、lvcreate と lvconvert を順に使用してレイアウトを構築してください。
特定のケースで、割り当てプロセスがどのように行われているかを確認するには、コマンドに
-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
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 つのシステム間で移行するには、以下の手順に従います。
- ボリュームグループ内のアクティブなボリュームのファイルにアクセスしているユーザーがいないことを確認してから、論理ボリュームをアンマウントします。
- vgchange コマンドの
-a n
引数を使用して、ボリュームグループを非アクティブとしてマークします。これにより、ボリュームグループでこれ以上の動作ができなくなります。 - 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] ...次にシステムがシャットダウンする時に、ボリュームグループを設定していたディスクを外して、新しいシステムに接続できます。 - ディスクが新しいシステムに接続されたら、vgimport コマンドを使用してボリュームグループをインポートし、新しいシステムからアクセスできるようにします。
- vgchange コマンドで
-a y
引数を使用して、ボリュームグループをアクティブにします。 - ファイルシステムをマウントして使用できるようにします。
4.3.16. ボリュームグループディレクトリーの再作成
ボリュームグループディレクトリーと論理ボリューム特殊ファイルを再作成するには、vgmknodes コマンドを使用します。このコマンドは、アクティブな論理ボリュームに必要な
/dev
ディレクトリー内の LVM2 特殊ファイルを確認します。このコマンドは不足しているファイルを作成し、未使用のファイルを削除します。
vgscan コマンドに mknodes 引数を指定すると、vgmknodes コマンドを vgscan コマンドに組み込むことができます。