【Linux】LVM を使うべきか
はじめに
個人PC の VmwareFusion に Linux をインストールしていたら、セットアップの途中で LVM を使うか問われた。
業務環境では LVM を使ってなかったので、これまであまり LVM について理解を深める機会がなかったが、これを機に LVM について改めて整理してみることにした。
LVM とは
LVM は、複数の物理ディスクやパーティションを仮想的に束ねて、ボリュームグループ(仮想ディスク)という単位で管理し、その中から必要なサイズの論理ボリューム(仮想パーティション)を柔軟に作成・変更できる仕組みである。
つまり、論理ボリュームを自由に操作できるため、パーティションサイズの変更や容量追加を、後から柔軟に行えるのが特徴である。

従来のパーティション管理との違い
従来の方法では、物理ディスク上に直接パーティションを作成する。この場合、サイズを変更しようとすると以下のような手間が発生することがある。
- パーティション内のデータを一時的に退避
- パーティションの削除と再作成
- 再度データを書き戻す
LVM を使うとこれらの操作が不要になり、容量の拡張・縮小をシステム稼働中に行えるケースも多い。
RAID とは
LVM と混同されやすい技術として RAID がある。
RAID は複数ディスクを組み合わせ、設定したRAIDレベルに応じた冗長化やパフォーマンス向上を目的とした仕組みである。
つまり、
-
LVMはディスク容量管理の柔軟性を高めるもの -
RAIDは冗長化や高速化を目的としたもの
という点で役割が異なる
LVMのメリット
・パーティションの拡張、縮小が容易
・ディスクを跨いだ容量管理が可能
・データを保持したままパーティションを別ディスクに移動可能
・スナップショットでバックアップを容易に取得できる
LVMのデメリット
・構築や運用の手間が増える
・オーバーヘッドによる、わずかなパフォーマンス低下
・構成が複雑になるので、障害時の復旧が難しくなる
LVM を使う必要があるのか
事前にディスク容量を十分に見積もって構成できるのであれば、必ずしも導入する必要はないと感じた。
またLVMを使うことで管理がやや煩雑になるため、特別なメリットがない場合は無理に利用しなくてもよさそう。
今回の私のケースでは、あくまでテスト用の仮想マシンを構築するだけだったので、LVMは採用しないことにした。
とはいえ、環境によってはLVMの柔軟性が大きなメリットとなるケースもあるはず。なので、実際の運用で困ることがないよう、基本的な LVM 操作と概念については把握しておくようにする。
LVM 操作
現在のディスク状態
ubuntu@ubuntu:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sr0 11:0 1 2.8G 0 rom
nvme0n1 259:0 0 20G 0 disk
├─nvme0n1p1 259:1 0 953M 0 part /boot/efi
└─nvme0n1p2 259:2 0 10G 0 part /
lvm の操作に使うパーティションを新規作成
残り 9GB ほどの空き容量があるので、3GB で3つパーティションを作成する
ubuntu@ubuntu:~$ sudo fdisk /dev/nvme0n1
Command (m for help): n
Partition number (3-128, default 3):
First sector (22925312-41943006, default 22925312):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (22925312-41943006, default 41940991): +3G
Created a new partition 3 of type 'Linux filesystem' and of size 3 GiB.
Command (m for help): n
Partition number (4-128, default 4):
First sector (29216768-41943006, default 29216768):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (29216768-41943006, default 41940991): +3G
Created a new partition 4 of type 'Linux filesystem' and of size 3 GiB.
Command (m for help): n
Partition number (5-128, default 5):
First sector (35508224-41943006, default 35508224):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (35508224-41943006, default 41940991): +3G
Created a new partition 5 of type 'Linux filesystem' and of size 3 GiB.
Command (m for help): w
The partition table has been altered.
Syncing disks.
パーティションが作成された。
ubuntu@ubuntu:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sr0 11:0 1 2.8G 0 rom
nvme0n1 259:0 0 20G 0 disk
├─nvme0n1p1 259:1 0 953M 0 part /boot/efi
├─nvme0n1p2 259:2 0 10G 0 part /
├─nvme0n1p3 259:3 0 3G 0 part
├─nvme0n1p4 259:4 0 3G 0 part
└─nvme0n1p5 259:5 0 3G 0 part
物理ボリューム作成
追加したパーティションで物理ボリュームを作成する。
ubuntu@ubuntu:~$ sudo pvcreate /dev/nvme0n1p3 /dev/nvme0n1p4 /dev/nvme0n1p5
Physical volume "/dev/nvme0n1p3" successfully created.
Physical volume "/dev/nvme0n1p4" successfully created.
Physical volume "/dev/nvme0n1p5" successfully created.
ubuntu@ubuntu:~$ lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sr0 iso9660 Joliet Extension Ubuntu-Server 24.04.3 LTS arm64 2025-08-06-15-52-50-00
nvme0n1
├─nvme0n1p1 vfat FAT32 133B-BBDE 944.8M 1% /boot/efi
├─nvme0n1p2 ext4 1.0 118b5460-3ff0-4aaf-bdb4-200dcd2f7112 6.6G 27% /
├─nvme0n1p3 LVM2_member LVM2 001 mCjDoJ-8IDE-MIbR-5ZVo-lDVF-Ugfo-nXZQBJ
├─nvme0n1p4 LVM2_member LVM2 001 TfhaRx-3KUp-B5Fr-ikJN-Y1PU-xRQT-N5H4Gi
└─nvme0n1p5 LVM2_member LVM2 001 70gece-73ns-nw4K-2LUO-vRyt-tvhR-s8dMnn
ボリュームグループ作成
作成した物理ボリュームで設定されるボリュームグループ(test_volgrp)を作成する。これで、仮想ディスクのように扱うことが可能になる。
ubuntu@ubuntu:~$ sudo vgcreate test_volgrp /dev/nvme0n1p3 /dev/nvme0n1p4 /dev/nvme0n1p5
Volume group "test_volgrp" successfully created
ubuntu@ubuntu:~$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
test_volgrp 3 0 0 wz--n- <8.99g <8.99g
論理ボリューム作成
作成したボリュームグループから論理ボリューム(test_logical_vol)を作成する。nvme0n1p3とnvme0n1p4に跨って論理ボリュームが作成されたことが確認できる。
ubuntu@ubuntu:~$ sudo lvcreate -L 4G -n test_logical_vol test_volgrp
Logical volume "test_logical_vol" created.
ubuntu@ubuntu:~$ lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sr0 iso9660 Joliet Extension Ubuntu-Server 24.04.3 LTS arm64 2025-08-06-15-52-50-00
nvme0n1
├─nvme0n1p1 vfat FAT32 133B-BBDE 944.8M 1% /boot/efi
├─nvme0n1p2 ext4 1.0 118b5460-3ff0-4aaf-bdb4-200dcd2f7112 6.6G 27% /
├─nvme0n1p3 LVM2_member LVM2 001 mCjDoJ-8IDE-MIbR-5ZVo-lDVF-Ugfo-nXZQBJ
│ └─test_volgrp-test_logical_vol
├─nvme0n1p4 LVM2_member LVM2 001 TfhaRx-3KUp-B5Fr-ikJN-Y1PU-xRQT-N5H4Gi
│ └─test_volgrp-test_logical_vol
└─nvme0n1p5
ファイルシステム作成
作成した論理ボリュームに ext4 ファイルシステムを作成する。
ubuntu@ubuntu:~$ sudo mkfs.ext4 /dev/test_volgrp/test_logical_vol
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 1048576 4k blocks and 262144 inodes
Filesystem UUID: ab23c917-3fb9-4283-be78-844d360f0e5c
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
マウント
マウントすれば、通常のディスクのように扱える。
ubuntu@ubuntu:~$ sudo mount /dev/test_volgrp/test_logical_vol /mnt
ubuntu@ubuntu:~$ mount | grep /mnt
/dev/mapper/test_volgrp-test_logical_vol on /mnt type ext4 (rw,relatime)
ubuntu@ubuntu:~$ cd /mnt/
ubuntu@ubuntu:/mnt$ df .
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/test_volgrp-test_logical_vol 4046560 24 3820440 1% /mnt
Discussion
物理サーバの場合、HDDやSSDの容量というのは後になって変えられません。
LVMを使うことで物理的なストレージ構成に依存しないパーティション構成を作れるようにするというのはメリットになります。
仮想サーバやAWSなどの場合、プラットフォーム側で自由に仮想ディスクのサイズを変えられるため、LVMを使用するメリットはほぼありません。
そのためAWSなどで提供されるOSイメージはLVMは使用されていません。