Linuxシステムを運用していく上で、ストレージの管理は非常に重要なテーマです。ディスク領域をどのように分割し、どのように柔軟な拡張や運用を行うかは、システムの安定性と拡張性に直結します。そこで注目したいのがLVM(Logical Volume Manager)の仕組みです。本記事では、LinuxのパーティションやLVMを構成するPV、VG、LVの基本的な意味や関係性、メリット・デメリット、具体的な設定例までを分かりやすく解説していきます。ストレージ管理でつまずいている方や、これからLVMを導入してみようという方の参考になれば幸いです。
Linuxを運用する上で欠かせないのがストレージ管理です。サーバーやデスクトップ環境問わず、ファイルやデータを保存するディスク領域が必要になります。しかし単に「ディスクがあるから使う」のではなく、運用規模や用途に応じてどのようにディスク領域を確保し、どのように拡張性や可用性を確保するかを考える必要があります。
近年では仮想マシンやクラウド環境が主流になりつつあるため、必要に応じてディスクサイズを拡張しやすい仕組みが求められています。その一つの解決策としてLVM(Logical Volume Manager)が存在します。まずは、LVMを理解する上で欠かせない「パーティション」や「物理ボリューム(PV)、ボリュームグループ(VG)、論理ボリューム(LV)」といった用語を整理していきましょう。
パーティションとは、ディスク上の領域を論理的に区切ったものです。ハードディスクやSSDなど一つの物理的なディスクがあったとしても、それを区切ることで複数の独立した領域として利用できるようになります。
LVMとは、ディスク領域を柔軟に扱うための仕組み(ボリューム管理)です。複数のディスクやパーティションをまとめて一つのプール(Volume Group)として扱い、そのプールから必要な容量を切り出して論理ボリュームとして運用できます。
物理ボリューム(Physical Volume)は、LVMで扱う最も下層の単位です。実際にディスクやパーティションをLVM管理下に置くために「物理ボリューム化」します。
/dev/sda1
や /dev/sdb1
のようなパーティション(あるいはディスク全体)をPVに変換して利用します。pvcreate /dev/xxx
です。ボリュームグループ(Volume Group)は、複数のPVをまとめたプールのような概念です。複数のディスクやパーティションを一つのグループにして、そこから必要に応じて容量を切り出し、論理ボリューム(LV)を作成します。
vgcreate VG名 /dev/xxx /dev/yyy
のように複数のPVを指定します。論理ボリューム(Logical Volume)は、VGから切り出された実際にファイルシステムを載せて使うディスク領域です。
lvcreate -L サイズ -n LV名 VG名
となります。ここでは実際に、LVMを使ってディスクを管理する流れのイメージをつかんでいただくために、簡単な構成例を示します。
たとえば、以下のようなケースを想定します。
/dev/sda1
をブート領域などの従来パーティションとして使用。/dev/sda2
と /dev/sdb1
の2つのパーティション(またはディスク)をLVM管理下に置く。fdisk
や gdisk
を用いてパーティションを作成)。pvcreate /dev/sda2 pvcreate /dev/sdb1
これで、/dev/sda2
と /dev/sdb1
がLVMの物理ボリュームとして扱えるようになります。次に、作成したPVをまとめてVGを作成します。たとえば「vg_data」という名前のVGを作る場合は以下のようになります。
bashコピーする編集するvgcreate vg_data /dev/sda2 /dev/sdb1
これで、/dev/sda2
と /dev/sdb1
が一つの大きなグループ「vg_data」として扱われます。VGのサイズは両PVの容量を合計したものになります。
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
などに設定を追加しておけば、再起動後にも自動的にマウントされます。
LVMを利用する上で、よく使う代表的なコマンドをいくつか挙げます。
pvcreate /dev/xxx
:物理ボリュームの作成pvdisplay
:PVの一覧や詳細表示pvs
:PVのサマリ一覧vgcreate VG名 /dev/xxx ...
:ボリュームグループの作成vgextend VG名 /dev/xxx
:VGへPVを追加vgreduce VG名 /dev/xxx
:VGからPVを削除vgdisplay
:VGの一覧や詳細表示vgs
:VGのサマリ一覧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の拡張やスナップショットの作成が比較的容易ですが、その反面コマンドのオプションや運用上の注意点も多いので、ドキュメントをしっかり読みながら操作することが大切です。
Linuxのストレージ管理において、パーティションによる従来の分割運用はシンプルで管理しやすい反面、ディスク容量を柔軟に変更しづらいという欠点がありました。そこでLVM(Logical Volume Manager)を導入することで、PV・VG・LVといったレイヤーを活用し、ディスク容量を仮想化・プール化・スナップショット化できるようになります。
これら3つの関係を理解することで、容量不足に悩むことが大幅に減り、スナップショットを用いた保守作業やテスト環境の構築などもスムーズになります。その一方で、LVMには固有のコマンドの知識や運用上の注意点もあり、誤操作や不適切な設定を行うとデータ損失のリスクを伴います。
LVMを導入する際は、まずテスト環境や実験用のディスクなどで一連の操作を試しながら、しっかりと使い方をマスターするとよいでしょう。本記事の内容が、皆様のLinux運用やディスク管理の課題解決に役立つことを願っています。
以上が、LinuxのパーティションとLVMを構成するPV・VG・LVの関係や基本的な使い方の解説でした。ストレージ管理の柔軟性を高めるために、ぜひLVMの特徴を理解して活用してみてください。