KVM ゲストのディスクサイズ変更
この記事は、筆者が独自に調査、検証したものであり、内容を保証するものではありません。
記事の内容を利用する場合は、個人・業務を問わず自己責任でお願いします。
KVMゲストの用途によっては最初に作成したディスクでは容量が足りなくなる事が時々あります。 CPUやメモリリソースに関しては、一旦再起動が必要ですが比較的簡単に変更可能です ( KVMホスト のリソースで制約は受ける )。
ディスクに関してもNFS等で外部のディスクをマウントしている場合は柔軟に設定変更が可能ですが、イメージ自体のディスク容量を変更する場合にはそれなりの作業が必要になり、どこかに書いておかないと忘れる系なので、手順を書いておきます。
環境
環境は以下になります。
- KVMホストOS : Rocky9
- KVMゲストOS : Linux系 ( LVM 利用 )
私はイメージファイルのフォーマットは qcow2 形式となっているので qcow2 での手順になります。
手順
※ 作業をはじめる前に、ディスク容量を変更するKVMゲストはシャットダウンし、必要に応じて イメージのバックアップ を取りましょう。
※ コマンド操作を失敗した場合最悪起動不能になるため、バックアップする事をお勧めします。
先ずは KVMホスト上で作業します。
KVMイメージのチェック
KVMイメージのフォーマットとサイズをチェックします。
qemu-img info /var/lib/libvirt/images/<イメージファイル名>
ファイル容量の拡張
qemu-img resize -f qcow2 <イメージファイル名> +10G
※ +10G の部分はリサイズする量に合わせて適宜変更して下さい。
実行後は qemu-img info を再実行し、サイズが正しく変更されている事を確認しましょう。
これ以降は、KVMゲストでの操作になります。
fdisk による操作
容量を増やしたイメージでKVMゲストを起動します。
fdisk を実行して、ディスクを切り直します。
※ デバイス名は環境に併せて適宜変更して下さい。
※ 途中で説明入ってますが、q 入力までは fdisk コマンドでの操作になります。
fdisk /dev/vda
状態を確認します。
コマンド (m でヘルプ): p
( 中略 )
デバイス 起動 開始位置 終了位置 セクタ サイズ Id タイプ
/dev/vda1 * 2048 2099199 2097152 1G 83 Linux
/dev/vda2 2099200 41943039 39843840 19G 8e Linux LVM
/dev/vda2 の LVMをリサイズします。
一旦削除して、
コマンド (m でヘルプ): d
パーティション番号 (1,2, 規定値 2): 2
作成しなおし。
基本パーティションの2 を削除しているので基本パーティションの2を作成しなおします。
セクタ数を入力する部分は既定値(リターンのみ)でOKです。
( 空き容量をすべて使う形で作成される )
コマンド (m でヘルプ): n
パーティションタイプ
p 基本パーティション (1-4)
e 拡張領域
選択 (既定値 p): p
パーティション番号 (2-4, 既定値 2): 2
最初のセクタ (2099200-41943039, 既定値 2099200):
最終セクタ, +セクタ番号 または +サイズ{K,M,G,T,P} (2099200-41943039, 既定値 41943039):
新しいパーティション 2 をタイプ Linux、サイズ 19 GiB で作成しました。
パーティション #2 には LVM2_member 署名が書き込まれています。
署名を削除しますか? [Y]es/[N]o: N
Linux LVM にタイプ変更
作り直したパーティションタイプは Linux なので Linux LVM に変更します。
コマンド (m でヘルプ): t
パーティション番号 (1,2, 既定値 2): 2
16 進数コード (L で利用可能なコードを一覧表示します): 8e
パーティションのタイプを 'Linux' から 'Linux LVM' に変更しました。
変更後の状態を確認し、
コマンド (m でヘルプ): p
(中略)
デバイス 起動 開始位置 終了位置 セクタ サイズ Id タイプ
/dev/vda1 * 2048 2099199 2097152 1G 83 Linux
/dev/vda2 2099200 41943039 39843840 19G 8e Linux LVM
想定している状態 ( サイズ, パーティションタイプ ) に変更されていたら、書き込み、fdisk を終了します。
コマンド (m でヘルプ): w
コマンド (m でヘルプ): q
現行のOS ( Redhat7以降 ) ならば partprobe で再起動不要かと思います。
※ OSによっては再起動が必要かもしれません。
※ partprobe すら不要かも。
partprobe
物理ボリュームのサイズ変更
LVMを利用している場合、PV(物理ボリューム), LV(論理ボリューム) を変更する必要があります。
先ず PV ( PhysicalVolume ) をリサイズします
現在の状態を確認し、
pvdisplay
リサイズします。
fdiskで変更したサイズ全てを利用するように変更が行われます。
pvresize /dev/vda2
サイズ変更後は pvdisplay 再実行して変更確認しておきましょう。
論理ボリュームのサイズ変更
論理ボリュームをリサイズします。
現在の状態を確認し、
lvs
lvdisplay
リサイズします。
lvextend -l +100%FREE /dev/cl/root
最後にファイルシステムを拡張。
xfs_growfs /dev/cl/root
※ Ubuntu の場合 resize2fs /dev/ubuntu-vg/ubuntu-lv とかに変える必要があるかもしれません。
サイズ確認
df
evtmpfs 912992 0 912992 0% /dev
tmpfs 930236 0 930236 0% /dev/shm
tmpfs 930236 8796 921440 1% /run
tmpfs 930236 0 930236 0% /sys/fs/cgroup
/dev/mapper/cl-root 17811456 8021136 9790320 46% /
/dev/vda1 999320 262420 668088 29% /boot
tmpfs 186044 0 186044 0% /run/user/1000
容量が拡張されていれば成功です。