ESC

Start typing to search across invoices, services, domains, tickets, and more...

Search... Ctrl+K
Linuxサーバー

Linux で LVM を使ってディスクを拡張する方法(lvextend・growpart でルート拡張)

6 ステップ 7 分で読めます 992 回閲覧 80
目次

ディスク容量が不足したとき、システムが LVM(論理ボリュームマネージャー)を使っていれば、再インストールせず、通常は停止もせずに容量を増やせます。本記事では Linux で LVM を使ってディスクを拡張する方法を、新しいディスクをボリュームグループに追加するケースと、既存ディスクが拡大されたケースの 2 つに分けて説明し、LVM ではないルートパーティションを growpart で拡張する方法も紹介します。Debian/Ubuntu と CentOS/Rocky/AlmaLinux に対応し、root で実行します。

拡張作業ではパーティションテーブルとファイルシステムを変更します。通常は安全なオンライン操作ですが、事前にスナップショットやバックアップを取り、コマンドは 1 行ずつ結果を確認しながら実行してください。

ステップ1:LVM ツールを導入し現在の構成を確認する

lvm2 と growpart を含むパッケージをインストールし、lsblk、pvs、vgs、lvs で構成を確認します。どのディスクが物理ボリューム(PV)か、ボリュームグループ(VG)名、論理ボリューム(LV)のマウント先を把握しましょう。以下では VG を vg0、LV を /dev/vg0/root として説明します。

# Debian / Ubuntu
apt update && apt install -y lvm2 cloud-guest-utils

# CentOS / Rocky / AlmaLinux
dnf install -y lvm2 cloud-utils-growpart

# Inspect the current layout
lsblk
pvs
vgs
lvs
df -hT

ステップ2:ケース A——新しいディスクを LVM ボリュームグループに追加

/dev/vdc などのディスクを追加した場合は、物理ボリュームとして初期化し、既存の VG に加えます。vgs の VFree が増えれば、割り当て可能な空き容量ができたことになります。データが入っているディスクに pvcreate を実行しないよう注意してください。

# Scenario A: a new disk /dev/vdc was added
pvcreate /dev/vdc
vgextend vg0 /dev/vdc
vgs vg0

ステップ3:ケース B——既存ディスク拡大後に growpart でパーティションを拡張

既存ディスクの容量が増えた場合(例:40 GB → 100 GB)は、growpart でパーティションをディスク末尾まで広げ、pvresize で PV に新しい領域を認識させます。growpart ではディスク名とパーティション番号の間にスペースが必要です。

# Scenario B: the existing disk /dev/vda was enlarged and the PV is partition 2
growpart /dev/vda 2
pvresize /dev/vda2
vgs

ステップ4:lvextend で論理ボリュームを拡張する

VG に空きができたら、lvextend で対象の LV に割り当てます。-l +100%FREE は残りすべて、-L +50G は指定した容量だけ追加します。

# Give all free space in the VG to the logical volume
lvextend -l +100%FREE /dev/vg0/root

# Or add a fixed amount
lvextend -L +50G /dev/vg0/data

ステップ5:ファイルシステムを拡張する(resize2fs / xfs_growfs)

LV を広げただけでは df の容量は変わりません。ext4 は resize2fs に LV のパス、XFS は xfs_growfs にマウントポイントを指定します。lvextend に -r を付ければ LV とファイルシステムを一度に拡張できます。

# ext4
resize2fs /dev/vg0/root

# XFS (pass the mount point)
xfs_growfs /

# Alternative: extend LV and filesystem in one step
lvextend -r -l +100%FREE /dev/vg0/root

df -hT

ステップ6:LVM なしのルートパーティションを growpart で拡張

多くのクラウドイメージではルートが LVM ではなく通常のパーティションです。ディスクのアップグレード後は growpart でパーティションを広げ、続けてファイルシステムを拡張するだけで、再起動なしにオンラインで完了します。

# Root partition without LVM, e.g. /dev/vda1 mounted on /
growpart /dev/vda 1
resize2fs /dev/vda1      # ext4
xfs_growfs /             # XFS
df -hT /

よくある質問

growpart で NOCHANGE と表示されます。

パーティションの後ろに空き領域がない状態です。ディスク容量の変更がまだ反映されていないか、すでに最大サイズです。lsblk でディスクサイズを確認し、必要に応じて再起動してから再実行してください。

XFS は縮小できますか?

できません。XFS は拡張のみ対応です。縮小するにはバックアップしてファイルシステムを作り直す必要があります。ext4 はアンマウント状態なら縮小できますがリスクが高いため慎重に行ってください。

ルートパーティションの直後に swap パーティションがあり拡張できません。

swap を無効化して削除し、ルートを拡張した後に swap ファイルへ切り替えるか、空き領域に swap を作り直す必要があります。上級者向けの作業のため、不安な場合はチケットでご相談ください。

上記の手順で解決しない場合は、サポートチケットを送信して IMIDC の 24 時間 365 日テクニカルサポートへお問い合わせください。サーバー IP、OS、実行したコマンド、エラー画面のスクリーンショットを添えていただくと、より迅速に対応できます。

この回答はお役に立ちましたか?

関連チュートリアル