どーも!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から切り出した仮想的なディスク領域。ファイルシステムを作成して利用する |
それぞれの階層に対して、作成・確認・拡張・縮小・削除のコマンドが用意されています。
| 階層 | 作成 | 拡張 | 縮小 | 確認 | 削除 |
|---|---|---|---|---|---|
| PV | pvcreate | – | – | pvdisplay | pvremove |
| VG | vgcreate | vgextend | vgreduce | vgdisplay | vgremove |
| LV | lvcreate | lvextend | lvreduce | lvdisplay | lvremove |
LVを作成したあとは、mkfs系コマンドでファイルシステムを作成し、mountでマウントする必要があります。
PV(物理ボリューム)系:pvcreate・pvdisplay・pvremove
pvcreate:物理ボリュームの作成
pvcreate デバイス名
pvcreateは、ディスクやパーティションをLVM管理下に置く(物理ボリュームとして初期化する)コマンドです。
sudo pvcreate /dev/sdb
⚠️注意:実行すると対象ディスクのデータはすべて失われます。
| オプション | 説明 |
|---|---|
-f | 強制実行(force) |
-v | 詳細な実行ログを表示 |
-u | UUIDを指定 |
--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
| オプション | 説明 |
|---|---|
-s | PE(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 | エクステント単位でサイズを指定。上級者向け |
-n | LV名を指定 |
-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コマンドの記事を参照してください。
コマンド比較表
| 階層 | コマンド | 用途 | 主な注意点 |
|---|---|---|---|
| PV | pvcreate | 物理ボリュームの作成 | ディスク内データが消える |
| PV | pvdisplay | 物理ボリュームの情報確認 | 表示のみ |
| PV | pvremove | 物理ボリュームの削除 | 先にVGから除外(vgreduce)が必要 |
| VG | vgcreate | ボリュームグループの作成 | PVを事前にpvcreateしておく |
| VG | vgextend | ボリュームグループの拡張 | 追加するPVも事前にpvcreate |
| VG | vgreduce | ボリュームグループの縮小 | 事前にpvmoveでデータ移動推奨 |
| VG | vgdisplay | ボリュームグループの情報確認 | 表示のみ |
| VG | vgremove | ボリュームグループの削除 | 先にLVをすべて削除 |
| LV | lvcreate | 論理ボリュームの作成 | サイズは-Lまたは-lで指定 |
| LV | lvextend | 論理ボリュームの拡張 | ファイルシステムの拡張も別途必要 |
| LV | lvreduce | 論理ボリュームの縮小 | ファイルシステムを先に縮小する必要あり |
| LV | lvdisplay | 論理ボリュームの情報確認 | 表示のみ |
| LV | lvremove | 論理ボリュームの削除 | 事前にアンマウントが必要 |
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を作成する
ここから先は、本記事で解説したpvcreate・vgcreate・lvcreateの流れです。
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構築・運用の流れは次のとおりです。
fdiskで対象ディスクにパーティションを作成する(タイプは「Linux LVM」)- 対象パーティションを
pvcreateでPV化する - PVをまとめて
vgcreateでVGを作成する - VGから
lvcreateでLVを切り出す - LVに
mkfs(例:mkfs.ext4)でファイルシステムを作成し、mountでマウントする - 容量が不足したら、必要に応じて
vgextendでVGを拡張し、lvextendでLVを拡張する(その後resize2fsなどでファイルシステムも拡張) - 不要になったら、
umountしたうえでlvremove→vgremove→pvremoveの順で逆方向に削除する
途中の状態確認には、各階層のpvdisplay・vgdisplay・lvdisplay(またはより簡易なpvs・vgs・lvs)を活用しましょう。
まとめ
LVMは「PV → VG → LV」という3段階の階層構造で理解すると整理しやすくなります。それぞれの階層に作成・拡張・縮小・確認・削除のコマンドが対応しており、作成系(pvcreate・vgcreate・lvcreate)から始めて、必要に応じて拡張・縮小(vgextend・vgreduce・lvextend・lvreduce)を行い、最後は逆順で削除していくのが基本の流れです。
特に縮小・削除系のコマンドはデータ消失のリスクが高いため、必ずバックアップを取り、対象のVG名・LV名・デバイス名を確認してから実行してください。
以上です!
ここまで読んでいただきありがとうございました!

コメント