「1TB」と「1TB」を足して、「2TB」のディスクを作れ。
こんにちは!「LINUX工房」管理人の「リナックス先生」です。
前回は、買ってきたハードディスクをLVMの素材である「PV(物理ボリューム)」に加工するところまで進めました。
今回は、いよいよLVMの醍醐味である「合体(マージ)」の工程に入ります。
バラバラの物理ディスクを束ねて、一つの巨大な「仮想ディスクプール」を作り上げる作業です。
先生! 前回作ったPV(/dev/sdb1)があります!
これを使えば、ついにサーバーの容量が増えるんですね?
でも、もし後から「もっと容量が欲しい!」ってなったら、また作り直しなんですか?
ふふふ、そこがLVMの凄いところよ。
今回作る「VG(ボリュームグループ)」は、言わば「魔法の貯蔵庫」。
後から新しいディスクを買ってきて、ポイッと投げ込むだけで、貯蔵庫のサイズは無限に大きくなるの。
作り直しなんて不要。サーバーを動かしたまま拡張できるわよ!
本記事では、LVMの核となるVGの作成(vgcreate)から、ディスクの追加(vgextend)、そして意外と知らない「PEサイズ」の設計論まで、実務で必要な知識を網羅的に解説します。
📚 LVM完全マスター(全8回)目次
現在地:【第3回】ボリュームグループ(VG)の作成と管理
- 【第1回】LVMの仕組みとメリットを完全図解
- 【第2回】物理ボリューム(PV)の作成とディスクの追加
- 【第3回】ボリュームグループ(VG)の作成と管理
- 【第4回】論理ボリューム(LV)の切り出しとフォーマット
- 【第5回】【核心】稼働中にディスク容量を増やす(lvextend)
- 【第6回】ディスク容量の縮小と物理ディスクの交換
- 【第7回】スナップショット機能で一瞬でバックアップを取る
- 【第8回】LVMトラブルシューティングとRAID構成
第1章:VG(ボリュームグループ)とは何か?
作業に入る前に、VGの役割を再確認しましょう。
VGは、「複数のPV(物理ディスク)を束ねて作られた、一つの巨大な仮想ディスク」です。
Linux OSから見ると、個々の物理ディスク(/dev/sdb, /dev/sdc…)の存在は隠蔽され、一つの「VG」という大きな空き容量のプールに見えます。
なぜ「グループ」を作るのか?
例えば、/home ディレクトリに1.5TBの容量が欲しいとします。
しかし、手元には1TBのHDDしかありません。
LVMを使えば、1TBのHDDを2本用意し、それらを「同じVG」に所属させることで、合計2TBのプールを作成できます。
そこから1.5TBを切り出せば、物理ディスクのサイズ(1TB)を超えたパーティションを作成可能になるのです。
第2章:【設計】PE(物理エクステント)サイズを知ろう
ここが初心者向けの解説書では省略されがちな、しかし極めて重要なポイントです。
VGを作成する時、内部ではディスクを細切れのブロックに分割して管理します。
この最小管理単位を「PE(Physical Extent:物理エクステント)」と呼びます。
PEのデフォルトは「4MB」
通常、LVMは4MB単位でディスクを管理します。
- メリット: 小さなサイズのボリュームを細かく作れる。
- デメリット: 超巨大な容量(数百TB)を扱う場合、管理簿(メタデータ)が肥大化し、パフォーマンスに影響が出る可能性がある。
昔のLVM(LVM1)では、「PEサイズによって作成できる最大容量に制限がある(例:PE 4MBだと最大256GBまで)」という厳しい制約がありました。
現在のLVM2ではこの制限はほぼ撤廃されていますが、数TB〜数十TBの大規模サーバーを構築する場合は、パフォーマンスを考慮してPEサイズを大きめ(32MBや64MBなど)に設定するのが「通(ツウ)」の設計です。
※今回は一般的なサーバー構築なので、デフォルト(4MB)または少し大きめの32MB程度で進めます。
第3章:VGを作成する「vgcreate」
それでは、前回作成したPV(/dev/sdb1)を使って、新しいVGを作成しましょう。
1. VG名を決める
VGには名前が必要です。分かりやすい名前を付けましょう。
一般的には以下のような命名規則が使われます。
vg_data(データ用)vg01(連番)VolGroup00(CentOS系のデフォルト)cl(RHEL/AlmaLinux系のデフォルト)
今回は分かりやすく vg_storage という名前にします。
2. コマンド実行
基本の構文は vgcreate [VG名] [PV名] です。
sudo vgcreate vg_storage /dev/sdb1
もしPEサイズを指定したい場合(例:32MB)は、-s オプションを付けます。
sudo vgcreate -s 32M vg_storage /dev/sdb1
実行結果:
Volume group "vg_storage" successfully created
これで、/dev/sdb1(20GB)を飲み込んだ vg_storage というプールが完成しました。
第4章:VGの状態を確認する「vgs / vgdisplay」
作成したら必ず確認します。
1. 簡易確認「vgs」
sudo vgs
出力例:
VG #PV #LV #SN Attr VSize VFree cl 1 2 0 wz--n- 49.00g 0 vg_storage 1 0 0 wz--n- 19.97g 19.97g
- #PV: 所属している物理ディスクの数(現在は1個)。
- #LV: 切り出された論理ボリュームの数(まだ作っていないので0)。
- VSize: VG全体のサイズ(約20GB)。
- VFree: 使用可能な空き容量(まだ何も使っていないので全量)。
2. 詳細確認「vgdisplay」
より詳しい情報、特にPEサイズなどを確認する時に使います。
sudo vgdisplay vg_storage
出力の注目ポイント:
--- Volume group --- VG Name vg_storage Format lvm2 VG Access read/write VG Status resizable ... PE Size 32.00 MiB ←★指定したPEサイズになっているか Total PE 639 ←★総ブロック数 Alloc PE / Size 0 / 0 ←★使用済み Free PE / Size 639 / 19.97 GiB ←★空き
第5章:【魔法】後から容量を増やす「vgextend」
ここからがLVMの本領発揮です。
運用開始から半年後、「容量が足りなくなったので、新しいHDD(/dev/sdc1:50GB)を追加した」というシナリオを実践してみましょう。
まず、新ディスクをPV化します(第2回の復習)。
sudo pvcreate /dev/sdc1
次に、既存の vg_storage にこのPVを追加します。
使うコマンドは vgextend です。
sudo vgextend vg_storage /dev/sdc1
実行結果:
Volume group "vg_storage" successfully extended
これだけです!
もう一度 vgs を見てみましょう。
VG #PV #LV ... VSize VFree vg_storage 2 0 ... 69.97g 69.97g
VSize が約20GBから約70GBに増えているのが分かりますか?
サーバーを止めることもなく、コマンド一発でプール容量が3.5倍になりました。
これがLVMの威力です。
第6章:VGの整理整頓「vgreduce / vgremove」
増やすだけでなく、減らしたり削除したりする方法も覚えておきましょう。
1. ディスクをVGから追い出す「vgreduce」
「やっぱり追加した50GBのディスクは別の用途に使いたい」となった場合、VGから切り離すことができます。
(※ただし、そのディスク上のPEが「使用中」でないことが条件です。使用中の場合はデータを移動させる必要がありますが、それは第6回で解説します)
sudo vgreduce vg_storage /dev/sdc1
これで /dev/sdc1 は自由の身になります。
2. VG自体を爆破する「vgremove」
VGそのものが不要になった場合は削除します。
(※中にLVが残っていると削除できません)
sudo vgremove vg_storage
第7章:【プロの運用術】VGメタデータのバックアップ
これは上級者向けのTipsですが、非常に重要です。
VGの情報(どのディスクがどのVGに属しているか等)は、ディスクの先頭部分にある「メタデータ領域」に書き込まれています。
もし操作ミスでVG構成を壊してしまった場合、LVMは自動的にバックアップを取ってくれています。
場所は /etc/lvm/archive です。
ls -l /etc/lvm/archive/
ここには、vg_storage_00001-xxxx.vg のようなテキストファイルが保存されています。
中身を見ると、VGの設定情報がそのまま書かれています。
万が一の時は、vgcfgrestore コマンドとこのファイルを使って、「VGを壊す前の状態」に戻すことができるのです。
(この復旧手順は第8回トラブルシューティング編で詳しくやります!)
第8章:VG管理の豆知識・トラブルQ&A
Q1. VG名を後から変えたい
A. vgrename コマンドで可能です。
sudo vgrename vg_storage vg_data
ただし、fstabなどにVG名でマウント設定を書いている場合、それらも修正しないとOSが起動しなくなるので注意が必要です。
Q2. “Volume group name … already exists” エラー
A. 同じ名前のVGが既に存在します。
特に、他のサーバーで使っていたディスクをそのまま接続した場合によく起こります。
LVMはVG名ではなく内部のUUIDで管理しているので動作はしますが、人間が混乱するので vgrename で名前を変えるのが無難です。
Q3. VGをアクティブ/非アクティブにする
メンテナンス時など、一時的にVGへのアクセスを停止させたい場合は vgchange を使います。
# 非アクティブ化(停止) sudo vgchange -a n vg_storage # アクティブ化(開始) sudo vgchange -a y vg_storage
レスキューモードで起動した時など、LVMが見えない場合は手動でアクティブ化が必要なことがあります。
まとめ:巨大なプールの準備完了!
お疲れ様でした!
今回はLVMの心臓部であるVGの操作をマスターしました。
今回の重要ポイント:
- VGは複数のPVを束ねた「巨大な仮想ディスク」。
vgcreateで作成し、vgextendで後から無限に拡張できる。- PEサイズ(デフォルト4MB)は設計時に意識するとプロっぽい。
- 困ったときは
/etc/lvm/archiveにバックアップがある。
現在、あなたの手元には70GBの空っぽのプール(vg_storage)があります。
次回、第4回は「論理ボリューム(LV)の切り出しとフォーマット」です。
いよいよこのプールから、実際の使用領域(パーティション)を切り出し、ファイルシステムを作ってデータを保存できる状態にします。
ここからが一番楽しいところです。お楽しみに!
▼ エンジニアとしてのキャリアを加速させる ▼
LVMを実践練習
「VPS」で環境構築
インフラ技術を仕事に
「ITエンジニア転職」


コメント