はじめに
仮想環境でLinux VMを運用していると、気がつくとディスク容量が不足していることってよくありますよね。特にルートパーティション(/)やログが溜まる /var パーティションなんかは、思った以上に早く埋まってしまいます。
今回は、そんな時に役立つLVMパーティションの拡張方法について、実際にUbuntu 22.04 LTSのVMを作成して、一から手順を確認してみました。ルートパーティションも含めて、どのLVMパーティションでも対応可能な方法です。
実は明日業務でこの作業があるので、予習も兼ねて検証してみました。同じような状況の方の参考になれば嬉しいです!
検証環境
| 項目 | 仕様 |
|---|---|
| 仮想化基盤 | Proxmox VE 9.0 |
| ゲストOS | Ubuntu 22.04 LTS Server |
| 初期ディスク容量 | 20GB |
| 拡張後容量 | 50GB |
| ストレージ構成 | LVMデフォルト構成 |
Ubuntu ServerのインストーラーはデフォルトでLVM構成を選択してくれるので、今回の検証にはピッタリでした!
LVMの基本的な仕組み
LVMって最初は「なんでこんなに複雑なの?」って思ったんですが、理解すると結構理にかなってるんですよね。
LVM(Logical Volume Manager)は、物理的なディスクを抽象化して柔軟なストレージ管理を可能にします。階層構造になっているのがポイントです:
- 物理ボリューム(PV): 実際のディスクパーティション
- ボリュームグループ(VG): 複数のPVをまとめた論理的なグループ
- 論理ボリューム(LV): VG内に作成される実際に使用する領域
この階層構造があるおかげで、ディスクの動的な拡張・縮小ができるわけです。
拡張手順の全体像
LVMは階層構造になっているので、下から順番に拡張していく必要があります。最初は「なんでこんなに手順が多いの?」って思ったんですが、慣れてくると理にかなってることが分かります。
各段階で状態確認をしながら進めていくのが安心です。
Step 1: Proxmoxで仮想ディスクを拡張する
まずはProxmox側で「器」を大きくします。
⚠️ 重要: ここは必ずVMをシャットダウンしてから作業してください
VMの作成(今回の検証用)
isoのアップロードから:
VM作成時はディスク容量20GB、その他は適当なスペックで設定:
ディスクサイズの変更
VMをシャットダウン
ハードウェア設定から拡張
- 対象のVMを選択
- [ハードウェア] タブを開く
- 拡張したいディスク(今回は
scsi0)を選択 - [ディスク操作] > [サイズ変更] をクリック
追加容量を入力(今回は30GB追加で 30と入力)
この作業自体は数秒で終わります。簡単ですね!
Step 2: OS側でパーティションを拡張
VMを起動して、いよいよOS側の作業です。SSHでログインして進めていきます。
現状確認
lsblk
Ubuntu LVMのデフォルト構成では大体こんな感じになります:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1.8G 0 part /boot
└─sda3 8:3 0 18.2G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 10G 0 lvm /
sda 自体はStep1で指定した50GBになっているけど、sda3 パーティションはまだ古いサイズ(約18GB)のままです。
パーティション拡張の実行
sudo parted /dev/sda print
sudo parted /dev/sda resizepart 3 100%
100% は「ディスクの最後まで使う」という意味です。
拡張できたか確認
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1.8G 0 part /boot
└─sda3 8:3 0 48.2G 0 part # ← 拡張された!
└─ubuntu--vg-ubuntu--lv 253:0 0 10G 0 lvm / # ← でもLVMはまだ小さい
パーティションは拡張されましたが、LVMの部分はまだ元のサイズのままです。ここからがLVM特有の作業になります。
Step 3: LVMレイヤーの拡張
物理ボリューム(PV)の拡張
sudo pvresize /dev/sda3
ボリュームグループの確認
sudo vgdisplay
論理ボリューム(LV)の確認と拡張
sudo lvdisplay
LV Path に書かれているパス(今回は /dev/ubuntu-vg/ubuntu-lv)をメモしておきます。
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
-l +100%FREE は「ボリュームグループ内の空き領域を全部使う」という指定です。細かく容量を計算しなくて済むので楽ですね。
Step 4: ファイルシステムの拡張
拡張前の状態確認
df -hT
ファイルシステム拡張
UbuntuのデフォルトはEXT4なので、resize2fsを使います:
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
最終確認
df -h
/dev/mapper/ubuntu--vg-ubuntu--lv 48G 4.9G 41G 11% / # ← 拡張完了!
やりました!
よくハマるトラブル
実際にこの作業を何回かやっていると、たまにハマることがあります。
パーティション拡張でエラーが出る場合
Error: Partition 3 is being used. You must unmount it before you resize it.
こんなときは:
sudo fdisk -l /dev/sda
sudo partprobe /dev/sda
sudo parted /dev/sda print
LVM拡張で空き領域不足エラー
sudo pvdisplay
sudo vgdisplay
物理ボリュームの拡張(pvresize)をし忘れていることが多いです。自分も最初やりました(笑)
ファイルシステム拡張が反映されない
EXT4の場合は resize2fs、XFSの場合は xfs_growfs を使います。コマンドを間違えると拡張されません。
# ファイルシステムの種類確認
df -hT
XFSの場合は:
sudo xfs_growfs / # マウントポイントを指定
作業前後の比較
| 項目 | 作業前 | 作業後 |
|---|---|---|
| 仮想ディスクサイズ | 20GB | 50GB |
| パーティション(sda3) | 約18GB | 約48GB |
| 論理ボリューム | 10GB | 48GB |
| 利用可能領域 | 4.5GB | 41GB |
よく使うコマンド一覧
# 確認系
lsblk
df -hT
sudo pvdisplay
sudo vgdisplay
sudo lvdisplay
# 拡張系
sudo parted /dev/sda resizepart 3 100%
sudo pvresize /dev/sda3
sudo lvextend -l +100%FREE [LV]
sudo resize2fs [device]
sudo xfs_growfs [mountpoint]
# トラブル対応
sudo partprobe /dev/sda
sudo fdisk -l /dev/sda
注意点とか学んだこと
- 作業前に必ずVMのスナップショットかバックアップを取る
- 各段階で状態確認をしながら進める
- 本番環境では事前にテスト環境で手順を検証する(今回みたいに)
LVMって最初は複雑に見えるけど、各レイヤーの役割を理解すると「なるほど」って思えるようになりました。まだまだ勉強中の身なので、もし間違いがあったり、もっと良いやり方があれば教えてください!
まとめ
手順こそ多いものの、各段階の意味を理解すれば決して難しい作業ではありません。同じような状況で困っている方の参考になれば幸いです!




















