【Linux】LVM系コマンドまとめ|pvcreate・vgcreate・lvcreateなどPV/VG/LVの操作を整理

Linux

どーも!marusukeです!

この記事では、LinuxのLVM(Logical Volume Manager)を操作するための主要コマンドをまとめて解説します。

この記事で分かることは次のとおりです。

  • 物理ボリューム(PV)を作成・確認・削除するコマンド(pvcreate・pvdisplay・pvremove)
  • ボリュームグループ(VG)を作成・拡張・縮小・確認・削除するコマンド(vgcreate・vgextend・vgreduce・vgdisplay・vgremove)
  • 論理ボリューム(LV)を作成・拡張・縮小・確認・削除するコマンド(lvcreate・lvextend・lvreduce・lvdisplay・lvremove)
  • ディスクのパーティション作成(fdisk)からファイルシステム作成(mkfs)・マウント(mount)まで、実際に使えるようになるまでの一連の流れ
  • LVMの基本的な作業の流れ

注意

LVM操作(特に削除・縮小系のコマンド)を誤ると、ディスク内のデータを失う可能性があります。重要なデータをバックアップし、対象のデバイス名・VG名・LV名を十分に確認してから実行してください。

LVM系コマンドの全体像

LVMは、物理ディスクをそのまま使うのではなく、「PV → VG → LV」という3段階の階層で管理する仕組みです。

階層役割
PV(物理ボリューム)物理ディスクやパーティションをLVM管理下に置く単位
VG(ボリュームグループ)複数のPVをまとめた管理単位
LV(論理ボリューム)VGから切り出した仮想的なディスク領域。ファイルシステムを作成して利用する

それぞれの階層に対して、作成・確認・拡張・縮小・削除のコマンドが用意されています。

階層作成拡張縮小確認削除
PVpvcreatepvdisplaypvremove
VGvgcreatevgextendvgreducevgdisplayvgremove
LVlvcreatelvextendlvreducelvdisplaylvremove

LVを作成したあとは、mkfs系コマンドでファイルシステムを作成し、mountでマウントする必要があります。

PV(物理ボリューム)系:pvcreate・pvdisplay・pvremove

pvcreate:物理ボリュームの作成

pvcreate デバイス名

pvcreateは、ディスクやパーティションをLVM管理下に置く(物理ボリュームとして初期化する)コマンドです。

sudo pvcreate /dev/sdb

⚠️注意:実行すると対象ディスクのデータはすべて失われます。

オプション説明
-f強制実行(force)
-v詳細な実行ログを表示
-uUUIDを指定
--dataalignmentデータのアライメント(配置)を指定(上級者向け)

詳しくはpvcreateコマンドの記事を参照してください。

pvdisplay:物理ボリュームの情報確認

pvdisplay [デバイス名]

pvdisplayは、PVのサイズ・所属VG・PE(Physical Extent)の使用状況などの詳細情報を表示するコマンドです。

出力例:

PV Name               /dev/sdb
VG Name               vg01
PV Size               <50.00 GiB
Allocatable           yes
PE Size               4.00 MiB
Total PE              12799
Free PE               2799
Allocated PE          10000
オプション説明
-v詳細な実行ログを表示
-sサマリ表示
-mマッピング情報(PEの割り当て状況)を表示
-cコロン区切りで出力(スクリプト向け)

簡易的な一覧表示にはpvsコマンドも使えます。

詳しくはpvdisplayコマンドの記事を参照してください。

pvremove:物理ボリュームの削除

pvremove デバイス名

pvremoveは、PVとしての管理情報を削除し、LVM管理から外すコマンドです。

sudo pvremove /dev/sdb

⚠️注意:PVがVGに所属している場合は、先にvgreduceでVGから外す必要があります。データが消失する可能性もあるため、事前の確認が重要です。

オプション説明
-f強制実行
-y確認プロンプトをスキップ
-v詳細な実行ログを表示

詳しくはpvremoveコマンドの記事を参照してください。

VG(ボリュームグループ)系:vgcreate・vgextend・vgreduce・vgdisplay・vgremove

vgcreate:ボリュームグループの作成

vgcreate VG名 PV...

vgcreateは、1つ以上のPVをまとめてVGを作成するコマンドです。

sudo vgcreate vg01 /dev/sdb /dev/sdc
オプション説明
-sPE(Physical Extent)のサイズを指定
-v詳細な実行ログを表示
-y確認プロンプトをスキップ
--maxlogicalvolumes作成可能なLVの最大数を指定

詳しくはvgcreateコマンドの記事を参照してください。

vgextend:ボリュームグループの拡張

vgextend VG名 PV

vgextendは、既存のVGに新しいPVを追加して容量を拡張するコマンドです。事前に対象ディスクへpvcreateを実行しておく必要があります。

sudo vgextend vg01 /dev/sdc
オプション説明
-v詳細な実行ログを表示
-y確認プロンプトをスキップ
-f強制実行

詳しくはvgextendコマンドの記事を参照してください。

vgreduce:ボリュームグループの縮小

vgreduce VG名 PV

vgreduceは、VGから指定したPVを取り除き、構成を縮小するコマンドです。ディスク交換や構成変更の際に使います。

sudo vgreduce vg01 /dev/sdb

💡補足:事前にpvmoveでデータを他のPVへ移動しておくと安全です。ディスク故障時の復旧には--removemissingオプションも使われます。

オプション説明
-v詳細な実行ログを表示
-y確認プロンプトをスキップ
--removemissing消失したPVをVGから削除

詳しくはvgreduceコマンドの記事を参照してください。

vgdisplay:ボリュームグループの情報確認

vgdisplay [VG名]

vgdisplayは、VGの総容量・空き容量・PEの使用状況などを表示するコマンドです。

出力例:

VG Name               vg01
VG Size               <100.00 GiB
PE Size               4.00 MiB
Total PE              25599
Alloc PE / Size       20000 / 80.00 GiB
Free  PE / Size       5599 / 20.00 GiB
オプション説明
-v詳細な実行ログを表示
-sサマリ表示
-Aアクティブ/非アクティブなVGを表示
-cコロン区切りで出力

簡易的な一覧表示にはvgsコマンドも使えます。

詳しくはvgdisplayコマンドの記事を参照してください。

vgremove:ボリュームグループの削除

vgremove VG名

vgremoveは、VG自体を削除するコマンドです。

sudo vgremove vg01

⚠️注意:VG内にLVが残っている場合は、先にlvremoveでLVを削除し、マウント中のLVはumountしておく必要があります。

オプション説明
-f強制実行
-y確認プロンプトをスキップ
-v詳細な実行ログを表示

詳しくはvgremoveコマンドの記事を参照してください。

LV(論理ボリューム)系:lvcreate・lvextend・lvreduce・lvdisplay・lvremove

lvcreate:論理ボリュームの作成

lvcreate [オプション] VG名

lvcreateは、VGから切り出して論理ボリューム(LV)を作成するコマンドです。

sudo lvcreate -L 10G -n lv01 vg01
オプション説明
-Lサイズを指定(例:10G)。初心者向け
-lエクステント単位でサイズを指定。上級者向け
-nLV名を指定
-v詳細な実行ログを表示
-y確認プロンプトをスキップ

詳しくはlvcreateコマンドの記事を参照してください。

lvextend:論理ボリュームの拡張

lvextend [オプション] 論理ボリューム

lvextendは、既存のLVのサイズを拡張するコマンドです。ディスク容量が不足したときに使います。

# lv01 を 10GB 追加(合計サイズ拡張)
sudo lvextend -L +10G /dev/vg01/lv01

拡張後はファイルシステム側の拡張も必要です(-rオプションで同時実行も可能)。

sudo resize2fs /dev/vg01/lv01
オプション説明
-Lサイズを指定して拡張(+指定で現在サイズに追加)
-lエクステント単位で拡張
-rファイルシステムも同時に拡張
-v詳細な実行ログを表示
-y確認プロンプトをスキップ

⚠️注意:VGに空き容量がないと拡張できません。ファイルシステムの種類によってはオンライン拡張に制限がある場合もあります。

詳しくはlvextendコマンドの記事を参照してください。

lvreduce:論理ボリュームの縮小

lvreduce [オプション] 論理ボリューム

lvreduceは、LVのサイズを縮小するコマンドです。縮小は拡張よりリスクが高い操作のため、注意が必要です。

# lv01 を 10GB に縮小
sudo lvreduce -L 10G /dev/vg01/lv01

⚠️重要ポイント:ファイルシステムを先に縮小してから、LVを縮小する必要があります。

sudo umount /dev/vg01/lv01
sudo e2fsck -f /dev/vg01/lv01
sudo resize2fs /dev/vg01/lv01 10G
sudo lvreduce -L 10G /dev/vg01/lv01
オプション説明
-Lサイズを指定して縮小
-lエクステント単位で縮小
-rファイルシステムも同時に縮小
-v詳細な実行ログを表示
-y確認プロンプトをスキップ

詳しくはlvreduceコマンドの記事を参照してください。

lvdisplay:論理ボリュームの情報確認

lvdisplay [LV名]

lvdisplayは、LVのサイズ・所属VG・デバイスパスなどの情報を表示するコマンドです。

出力例:

LV Path                /dev/vg01/lv01
LV Name                lv01
VG Name                vg01
LV Size                10.00 GiB
Current LE             2560
Segments               1
Allocation             inherit
オプション説明
-v詳細な実行ログを表示
-mマッピング情報(どのPVにまたがっているか)を表示
-cコロン区切りで出力
-sサマリ表示

詳しくはlvdisplayコマンドの記事を参照してください。

lvremove:論理ボリュームの削除

lvremove LV名

lvremoveは、LVを削除するコマンドです。

sudo lvremove /dev/vg01/lv01

⚠️注意:削除前にLVをアンマウントしておく必要があります。データは完全に失われるため、削除前にlvdisplayで対象を確認することをおすすめします。

オプション説明
-f強制実行
-y確認プロンプトをスキップ
-v詳細な実行ログを表示

詳しくはlvremoveコマンドの記事を参照してください。

コマンド比較表

階層コマンド用途主な注意点
PVpvcreate物理ボリュームの作成ディスク内データが消える
PVpvdisplay物理ボリュームの情報確認表示のみ
PVpvremove物理ボリュームの削除先にVGから除外(vgreduce)が必要
VGvgcreateボリュームグループの作成PVを事前にpvcreateしておく
VGvgextendボリュームグループの拡張追加するPVも事前にpvcreate
VGvgreduceボリュームグループの縮小事前にpvmoveでデータ移動推奨
VGvgdisplayボリュームグループの情報確認表示のみ
VGvgremoveボリュームグループの削除先にLVをすべて削除
LVlvcreate論理ボリュームの作成サイズは-Lまたは-lで指定
LVlvextend論理ボリュームの拡張ファイルシステムの拡張も別途必要
LVlvreduce論理ボリュームの縮小ファイルシステムを先に縮小する必要あり
LVlvdisplay論理ボリュームの情報確認表示のみ
LVlvremove論理ボリュームの削除事前にアンマウントが必要

fdisk→mkfs→mountまで:LVを実際に使えるようにする

LVMのコマンドだけではディスクは使える状態になりません。新しいディスクを認識させてから実際にファイルを保存できるようになるまでには、パーティション作成(fdisk)とファイルシステム作成(mkfs)・マウント(mount)が必要です。ここでは、ディスクを1本追加した想定で、最初から最後まで通して見てみましょう。

① パーティションを作成する:fdisk

LVMでは、ディスク全体を直接PVにすることもできますが、一般的にはパーティションを切ってからPV化します。

sudo fdisk /dev/sdb

対話モードで以下を入力します。

n        ← 新しいパーティションを作成
(サイズなどはデフォルトのままEnterでOK)
t        ← パーティションタイプを変更
8e       ← Linux LVM タイプを指定
w        ← 変更を保存して終了

作成できたか確認します。

sudo fdisk -l /dev/sdb

💡 fdiskの詳しい使い方はfdiskコマンドの記事を参照してください。

② PV→VG→LVを作成する

ここから先は、本記事で解説したpvcreatevgcreatelvcreateの流れです。

sudo pvcreate /dev/sdb1
sudo vgcreate vg01 /dev/sdb1
sudo lvcreate -L 10G -n lv01 vg01

③ ファイルシステムを作成する:mkfs

LVだけではまだ「容量を確保した状態」でしかなく、ファイルを保存できません。mkfsでファイルシステムを作成します。

sudo mkfs.ext4 /dev/vg01/lv01

XFSを使いたい場合はmkfs.xfsのように、作成したいファイルシステムに応じたコマンドを使います。

④ マウントする:mount

作成したファイルシステムを、実際に使いたいディレクトリに割り当てます。

sudo mkdir -p /mnt/data
sudo mount /dev/vg01/lv01 /mnt/data

これで/mnt/data配下にファイルを保存できるようになります。

df -h /mnt/data

で正しくマウントされているか確認できます。

⚠️注意:ここで設定したマウントは再起動すると解除されます。常に同じ場所へマウントしたい場合は、/etc/fstabに設定を追記する必要があります(UUIDの確認にはblkidコマンドが使えます)。

全体の流れまとめ

fdisk        … パーティション作成(Linux LVMタイプ)
  ↓
pvcreate     … PV化
  ↓
vgcreate     … VG作成
  ↓
lvcreate     … LV作成
  ↓
mkfs.ext4    … ファイルシステム作成
  ↓
mount        … マウントして利用可能に

LVM構築の基本フロー

典型的なLVM構築・運用の流れは次のとおりです。

  1. fdiskで対象ディスクにパーティションを作成する(タイプは「Linux LVM」)
  2. 対象パーティションをpvcreateでPV化する
  3. PVをまとめてvgcreateでVGを作成する
  4. VGからlvcreateでLVを切り出す
  5. LVにmkfs(例:mkfs.ext4)でファイルシステムを作成し、mountでマウントする
  6. 容量が不足したら、必要に応じてvgextendでVGを拡張し、lvextendでLVを拡張する(その後resize2fsなどでファイルシステムも拡張)
  7. 不要になったら、umountしたうえでlvremovevgremovepvremoveの順で逆方向に削除する

途中の状態確認には、各階層のpvdisplayvgdisplaylvdisplay(またはより簡易なpvsvgslvs)を活用しましょう。

まとめ

LVMは「PV → VG → LV」という3段階の階層構造で理解すると整理しやすくなります。それぞれの階層に作成・拡張・縮小・確認・削除のコマンドが対応しており、作成系(pvcreatevgcreatelvcreate)から始めて、必要に応じて拡張・縮小(vgextendvgreducelvextendlvreduce)を行い、最後は逆順で削除していくのが基本の流れです。

特に縮小・削除系のコマンドはデータ消失のリスクが高いため、必ずバックアップを取り、対象のVG名・LV名・デバイス名を確認してから実行してください。

以上です!

ここまで読んでいただきありがとうございました!

コメント

タイトルとURLをコピーしました