2026年8月6日
2026年8月6日
VPSのディスク拡張方法(LVM使用):growpart・pvresize・lvextendで容量を広げる手順
LVMを使っているVPSでディスクを拡張するには、事業者の管理画面で仮想ディスクを広げたあと、OS側で「パーティション → 物理ボリューム(PV) → 論理ボリューム(LV) → ファイルシステム」の順に、それぞれを広げます。1つでも飛ばすと df の表示が増えないのが、つまずきやすい点です。この記事では、現状の確認から growpart、pvresize、lvextend を使った拡張、ディスクを追加する場合の注意点、うまくいかないときの確認方法までを説明します。
LVMの階層を理解しておく
LVMの構成は、次のように積み重なっています。
- 仮想ディスク(例:
/dev/vda、/dev/sda) - パーティション(例:
/dev/vda3) - 物理ボリューム(PV):パーティションをLVMで使えるようにしたもの
- ボリュームグループ(VG):PVを束ねた容量の置き場
- 論理ボリューム(LV):VGから切り出した領域(例:
/dev/ubuntu-vg/ubuntu-lv) - ファイルシステム:LVの上に作られた ext4 や XFS
管理画面でディスクを広げても、変わるのは1番目だけです。残りは下から順に広げていきます。どこまで広がっているかを各層で確認しながら進めると、問題が起きたときに原因の層をすぐ特定できます。
作業前の準備
ディスクとパーティションの操作は、誤るとデータを失う可能性がある作業です。始める前に、VPSのスナップショットか、外部へのバックアップを取ってください。
また、事業者によってはディスクの拡張にサーバーの停止が必要だったり、一度広げたディスクを小さく戻せなかったりします(2026年10月現在)。詳細は利用中のサービスのドキュメントで確認してください。ディスクの縮小は、ファイルシステムの種類によってはOS側でもできません。XFSは縮小に対応していないため、広げる量は必要な分だけにとどめるのが無難です。
手順1:現状を確認する
まず、各層の容量を確認します。
lsblk
df -hT /
sudo pvs
sudo vgs
sudo lvs
見るべき点は次の通りです。
lsblk:ディスクとパーティションのサイズ、どのパーティションの上にLVMがあるかdf -hT /:ルートのファイルシステムの種類(ext4 か xfs か)と使用量sudo vgsのVFree:VGに割り当てられていない空きがあるか
ここで VFree に空きがあれば、ディスクを広げなくても容量を増やせます。Ubuntu Server のインストーラーでLVMを選んだ場合など、VGの一部しかLVに割り当てられていない構成があり、その場合は手順5に進むだけで済みます。
手順2:管理画面でディスクを拡張する
事業者の管理画面で、ディスクのサイズを変更します。プランの変更とディスクの拡張が別の操作になっているサービスもあるため、プランを上げただけでディスクが広がるとは限りません。
拡張後、OSが新しいサイズを認識しているかを確認します。
lsblk /dev/vda
ディスクのサイズが増えていなければ、OSがまだ認識していません。再起動すれば認識されることが多いです。再起動せずに試す場合、SCSIとして見えているディスク(/dev/sda など)では次のコマンドで再読み込みを求められます。
echo 1 | sudo tee /sys/class/block/sda/device/rescan
virtio のディスク(/dev/vda)は、稼働中の拡張を自動で認識することが多いですが、反映されないときは再起動してください。
手順3:パーティションを広げる
ディスクが広がっても、パーティションは元のサイズのままです。growpart を使うと、パーティションを末尾の空き領域いっぱいまで広げられます。
# Debian/Ubuntu 系
sudo apt install cloud-guest-utils
# RHEL 系(AlmaLinux、Rocky Linux など)
sudo dnf install cloud-utils-growpart
# まずドライランで変更内容を確認する
sudo growpart --dry-run /dev/vda 3
# 問題なければ実行する
sudo growpart /dev/vda 3
ディスク名とパーティション番号の間には空白が入ります(/dev/vda3 ではなく /dev/vda 3)。対象は、手順1の lsblk でLVMが乗っていたパーティションです。
注意したいのは、LVMのパーティションがディスクの末尾にない場合です。後ろに別のパーティション(スワップなど)があると、そのままでは広げられません。また、古い構成で拡張パーティションの中の論理パーティション(/dev/vda5 など)にLVMがある場合は、手順が複雑になります。こうした構成では、無理にパーティションを動かさず、後述の「ディスクを追加する」方法を検討してください。
PVがパーティションを使わずディスク全体に作られている構成(pvs の表示が /dev/vdb のようになっている)なら、この手順は不要です。
手順4:物理ボリュームを広げる
パーティションが広がったら、LVMにその大きさを認識させます。
sudo pvresize /dev/vda3
sudo pvs
sudo vgs
pvs の PSize が増え、vgs の VFree に空きが表示されれば成功です。
手順5:論理ボリュームとファイルシステムを広げる
最後に、LVを広げ、同時にファイルシステムも広げます。-r(--resizefs)を付けると、ext4 なら resize2fs、XFS なら xfs_growfs に相当する処理を続けて行います。
# VGの空きをすべて使う場合
sudo lvextend -r -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
# 量を指定して広げる場合(例:20GiB)
sudo lvextend -r -L +20G /dev/ubuntu-vg/ubuntu-lv
df -hT /
LVのパスは環境によって違います。sudo lvs の VG 名と LV 名から /dev/VG名/LV名 を組み立てるか、df に表示される /dev/mapper/... の名前を使ってください。ext4 も XFS も、マウントしたままで拡張できます。
空きをすべて使い切らず、VGに少し残しておく方法もあります。LVMのスナップショットは、VGの空き領域を使って作るためです。
-r を付け忘れた場合は、あとからファイルシステムだけを広げられます。
# ext4 の場合
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
# XFS の場合(マウントポイントを指定する)
sudo xfs_growfs /
別の方法:ディスクを追加してVGに加える
パーティションを広げられない構成や、ディスクの拡張ではなく追加ディスクを提供している事業者では、新しいディスクをVGに加える方法があります。
lsblk # 新しいディスク(例:/dev/vdb)が空であることを確認
sudo pvcreate /dev/vdb
sudo vgextend ubuntu-vg /dev/vdb
sudo lvextend -r -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
手軽ですが、1つのLVが2つのディスクにまたがるため、どちらかのディスクに障害が起きるとLV全体が読めなくなる恐れがあります。また、事業者のスナップショットが起動ディスクだけを対象にしている場合、バックアップの整合性が取れません。データベースやアップロードファイルの置き場として、追加ディスクを別のマウントポイントに使うほうが扱いやすい場面も多くあります。
うまくいかないときの確認
growpartが「NOCHANGE」と表示する:OSが新しいディスクサイズを認識していないか、パーティションがすでに末尾まで広がっています。lsblkでディスクのサイズを確認し、必要なら再起動しますlvextendで空きが足りないと表示される:pvresizeを実行していないか、パーティションが広がっていません。pvsとvgsで確認しますdfの表示が増えない:LVは広がったがファイルシステムが広がっていない状態です。resize2fsかxfs_growfsを実行しますpvresizeで対象が見つからない:パーティション名を取り違えています。sudo pvsに表示されるデバイス名を使います
まとめ
- LVMの拡張は、ディスク → パーティション → PV → LV → ファイルシステムの順に、下の層から広げる
- 作業前にバックアップを取り、
lsblk、df -hT、pvs、vgs、lvsで現状を確認する vgsのVFreeに空きがあれば、lvextendだけで容量を増やせる- パーティションは
growpart、PVはpvresize、LVとファイルシステムはlvextend -rで広げる - ディスクを追加してVGに加える方法は手軽だが、障害時とバックアップの扱いに注意する