Linuxシステムを運用していく上で、ストレージの管理は非常に重要なテーマです。ディスク領域をどのように分割し、どのように柔軟な拡張や運用を行うかは、システムの安定性と拡張性に直結します。そこで注目したいのがLVM(Logical Volume Manager)の仕組みです。本記事では、LinuxのパーティションやLVMを構成するPV、VG、LVの基本的な意味や関係性、メリット・デメリット、具体的な設定例までを分かりやすく解説していきます。ストレージ管理でつまずいている方や、これからLVMを導入してみようという方の参考になれば幸いです。
1. はじめに:Linuxのストレージ管理とは
Linuxを運用する上で欠かせないのがストレージ管理です。サーバーやデスクトップ環境問わず、ファイルやデータを保存するディスク領域が必要になります。しかし単に「ディスクがあるから使う」のではなく、運用規模や用途に応じてどのようにディスク領域を確保し、どのように拡張性や可用性を確保するかを考える必要があります。
近年では仮想マシンやクラウド環境が主流になりつつあるため、必要に応じてディスクサイズを拡張しやすい仕組みが求められています。その一つの解決策としてLVM(Logical Volume Manager)が存在します。まずは、LVMを理解する上で欠かせない「パーティション」や「物理ボリューム(PV)、ボリュームグループ(VG)、論理ボリューム(LV)」といった用語を整理していきましょう。
2. Linuxのパーティションとは
パーティションとは、ディスク上の領域を論理的に区切ったものです。ハードディスクやSSDなど一つの物理的なディスクがあったとしても、それを区切ることで複数の独立した領域として利用できるようになります。
パーティションの役割
- システム領域の分離
OSが使用する「/(ルート)」領域とデータを保存する「/home」領域を分離するなど、用途ごとにパーティションを分けることで管理しやすくなり、障害発生時のリスク分散にもつながります。 - 異なるファイルシステムの利用
例えば「/boot」は小さめの領域でext4を使いたいが、「/var」はログがたまりやすいのでXFSを利用したい、などシステム要件や運用方針によってファイルシステムを使い分ける際にもパーティションが役立ちます。 - バックアップやセキュリティ管理
パーティション単位でバックアップを取りやすくしたり、権限設定や暗号化の範囲を切り分けたりすることが容易になります。
パーティションの種類
- MBRパーティション
従来型のパーティション方式で、2TBまでのディスクを扱うのが一般的でした。プライマリパーティションを最大4つまで作成でき、拡張パーティション内に論理パーティションを作成する形をとります。 - GPTパーティション
大容量のディスク(2TB以上)を扱える新しいパーティション方式です。EFI(UEFI)システムなどと相性がよく、プライマリパーティションの数が事実上無制限に扱えるようになり、冗長性も向上しています。
3. LVM(Logical Volume Manager)の基本概念
LVMとは、ディスク領域を柔軟に扱うための仕組み(ボリューム管理)です。複数のディスクやパーティションをまとめて一つのプール(Volume Group)として扱い、そのプールから必要な容量を切り出して論理ボリュームとして運用できます。
3-1. PV(Physical Volume)とは
物理ボリューム(Physical Volume)は、LVMで扱う最も下層の単位です。実際にディスクやパーティションをLVM管理下に置くために「物理ボリューム化」します。
- 通常は、
/dev/sda1
や/dev/sdb1
のようなパーティション(あるいはディスク全体)をPVに変換して利用します。 - PVを作成するコマンドは
pvcreate /dev/xxx
です。
3-2. VG(Volume Group)とは
ボリュームグループ(Volume Group)は、複数のPVをまとめたプールのような概念です。複数のディスクやパーティションを一つのグループにして、そこから必要に応じて容量を切り出し、論理ボリューム(LV)を作成します。
- 複数のPVをまとめることで、大きなプールを作成できるのが大きなメリットです。
- VGを作成するコマンドは
vgcreate VG名 /dev/xxx /dev/yyy
のように複数のPVを指定します。
3-3. LV(Logical Volume)とは
論理ボリューム(Logical Volume)は、VGから切り出された実際にファイルシステムを載せて使うディスク領域です。
- LVの上にファイルシステム(ext4やXFSなど)を作成し、マウントすることでシステム上で利用できるようになります。
- LVを作成するコマンドは
lvcreate -L サイズ -n LV名 VG名
となります。
4. LVMのメリットとデメリット
メリット
- 柔軟な容量拡張
VGに余裕があれば、LVを拡張コマンド一つで容易にサイズアップできます。ファイルシステムのオンライン拡張が可能な場合は、サービスを停止することなく領域を拡大できることもあります。 - 複数ディスクを統合可能
サーバー内に複数のディスクがある場合、個別にパーティションを切るのではなく、一つのVGとしてまとめることで、大容量の領域を簡単に確保できます。 - スナップショット機能
LVMにはLVのスナップショットを作成する機能があります。テスト前やアップグレード前にスナップショットを作成しておくことで、万が一の時に容易にロールバック可能です(ただし使用にはLVとスナップ用領域の確保が必要)。
デメリット
- 設定の複雑化
従来のパーティションのみの運用と比べると、PV、VG、LVの概念を理解し、関連するコマンドを覚える必要があります。 - オーバーヘッドの可能性
LVMはソフトウェアレイヤーとして動作するため、若干のパフォーマンスオーバーヘッドが発生することがあります。一般的な用途ではほとんど問題になりませんが、高負荷のシステムでは注意が必要です。 - スナップショットの注意
スナップショットを多用すると、ストレージのパフォーマンスや容量を圧迫する可能性があるため、計画的な運用が求められます。
5. PV、VG、LVの構成例と仕組み
ここでは実際に、LVMを使ってディスクを管理する流れのイメージをつかんでいただくために、簡単な構成例を示します。
たとえば、以下のようなケースを想定します。
/dev/sda1
をブート領域などの従来パーティションとして使用。/dev/sda2
と/dev/sdb1
の2つのパーティション(またはディスク)をLVM管理下に置く。
5-1. PVの作成例
- まず、パーティションテーブルを作成または確認します(
fdisk
やgdisk
を用いてパーティションを作成)。 - それぞれのパーティションをPVに変換します。bashコピーする編集する
pvcreate /dev/sda2 pvcreate /dev/sdb1
これで、/dev/sda2
と/dev/sdb1
がLVMの物理ボリュームとして扱えるようになります。
5-2. VGの作成例
次に、作成したPVをまとめてVGを作成します。たとえば「vg_data」という名前のVGを作る場合は以下のようになります。
bashコピーする編集するvgcreate vg_data /dev/sda2 /dev/sdb1
これで、/dev/sda2
と /dev/sdb1
が一つの大きなグループ「vg_data」として扱われます。VGのサイズは両PVの容量を合計したものになります。
5-3. LVの作成例
VG内の領域から、実際に利用する論理ボリューム(LV)を作成します。例えば、20GBのLVを作りたい場合は以下のようにします。
bashコピーする編集するlvcreate -L 20G -n lv_app vg_data
これで、20GBのLV「/dev/vg_data/lv_app」ができあがります。あとはこのLV上にファイルシステムを作成し、マウントすることで実際のストレージとして利用できます。
bashコピーする編集するmkfs.xfs /dev/vg_data/lv_app # XFSでフォーマットする例
mkdir /appdata
mount /dev/vg_data/lv_app /appdata
/etc/fstab
などに設定を追加しておけば、再起動後にも自動的にマウントされます。
6. LVMを活用するための基本コマンド
LVMを利用する上で、よく使う代表的なコマンドをいくつか挙げます。
- PV関連
pvcreate /dev/xxx
:物理ボリュームの作成pvdisplay
:PVの一覧や詳細表示pvs
:PVのサマリ一覧
- VG関連
vgcreate VG名 /dev/xxx ...
:ボリュームグループの作成vgextend VG名 /dev/xxx
:VGへPVを追加vgreduce VG名 /dev/xxx
:VGからPVを削除vgdisplay
:VGの一覧や詳細表示vgs
:VGのサマリ一覧
- LV関連
lvcreate -L サイズ -n LV名 VG名
:論理ボリュームの作成lvextend -L +サイズ /dev/VG名/LV名
:LVのサイズ拡張lvreduce -L サイズ /dev/VG名/LV名
:LVのサイズ縮小(要注意)lvremove /dev/VG名/LV名
:LVの削除lvdisplay
:LVの一覧や詳細表示lvs
:LVのサマリ一覧
- スナップショット関連
lvcreate -s -n スナップショット名 -L サイズ /dev/VG名/LV名
:スナップショットの作成lvremove /dev/VG名/スナップショット名
:スナップショットの削除
LVMではLVの拡張やスナップショットの作成が比較的容易ですが、その反面コマンドのオプションや運用上の注意点も多いので、ドキュメントをしっかり読みながら操作することが大切です。
7. LVM運用の注意点とポイント
- ファイルシステムとの連携を考慮する
LVMでLVを拡張した際、ファイルシステムも拡張が必要です。対応していないファイルシステムであればオフラインでの拡張作業やツールが必要になる場合もあります。XFSであればオンライン拡張が容易ですが、縮小はできません。ext4であればオフラインでの縮小も可能です。 - バックアップ戦略を明確にする
スナップショットはバックアップ目的で使われることもありますが、スナップショット自体は同じストレージ上に存在するため、ディスク障害時には役に立ちません。重要なデータは別のディスクや外部ストレージにバックアップを取りましょう。 - 拡張しすぎない計画的な運用
LVMは必要に応じてLVを拡張できるメリットがありますが、いたずらに大きくしすぎると、データの管理が煩雑になる可能性があります。将来的な見通しを持って容量を割り当てることが大切です。 - IOPSやパフォーマンスの監視
複数のディスクを一つのVGにまとめると、どこに実データが書き込まれているかが分散される場合があります。必要に応じてRAID構成や高速なストレージを利用し、パフォーマンスを確保することを検討しましょう。 - メンテナンス時のコマンド実行順序
例えばLV縮小には手順があり、ファイルシステムの縮小を先に行わないとデータが破損する恐れがあります。慣れていない場合は、テスト環境で手順をしっかり確認することをおすすめします。
8. まとめ
Linuxのストレージ管理において、パーティションによる従来の分割運用はシンプルで管理しやすい反面、ディスク容量を柔軟に変更しづらいという欠点がありました。そこでLVM(Logical Volume Manager)を導入することで、PV・VG・LVといったレイヤーを活用し、ディスク容量を仮想化・プール化・スナップショット化できるようになります。
- PV(Physical Volume):物理ディスクやパーティションをLVM管理下に置く単位
- VG(Volume Group):複数のPVをまとめた領域
- LV(Logical Volume):VGから切り出される実際にファイルシステムを載せる論理的なディスク領域
これら3つの関係を理解することで、容量不足に悩むことが大幅に減り、スナップショットを用いた保守作業やテスト環境の構築などもスムーズになります。その一方で、LVMには固有のコマンドの知識や運用上の注意点もあり、誤操作や不適切な設定を行うとデータ損失のリスクを伴います。
LVMを導入する際は、まずテスト環境や実験用のディスクなどで一連の操作を試しながら、しっかりと使い方をマスターするとよいでしょう。本記事の内容が、皆様のLinux運用やディスク管理の課題解決に役立つことを願っています。
以上が、LinuxのパーティションとLVMを構成するPV・VG・LVの関係や基本的な使い方の解説でした。ストレージ管理の柔軟性を高めるために、ぜひLVMの特徴を理解して活用してみてください。