VM上のゲストOSのディスク容量拡張

はじめに

VM上のゲストOSのディスク容量が足りなくなったため、拡張する方法を記載する。

環境

  • Ubuntu 20.04.6 LTS(ホストOS)
  • Ubuntu 22.04.2 LTS(ゲストOS)

操作手順

ゲストOSが使用しているディスクサイズの拡張

ゲストOSが使用しているディスクサイズの拡張する。今回は50GBから100GBにディスク拡張する場合を記載する。

##ドメインを停止する
$ virsh shutdown <domain_name>

##rootユーザに変更
$ sudo -i
$ whoami
root

##ゲストOSが使用しているディスクのフォルダに移動
# cd /var/lib/libvirt/images

##ゲストOSの名前を定義
# VMNAME=test

##ゲストOSの確認
# qemu-img info $VMNAME.qcow2
image: test.qcow2
file format: qcow2
virtual size: 50 GiB (53687091200 bytes)
disk size: 48.1 GiB
cluster_size: 65536
backing file: jammy-server-cloudimg-amd64.img
backing file format: qcow2
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

##ディスクサイズの拡張
# qemu-img resize  $VMNAME.qcow2 100G

##ディスクサイズの拡張を確認
# qemu-img info $VMNAME.qcow2
image: test.qcow2
file format: qcow2
virtual size: 100 GiB (107374182400 bytes)
disk size: 48.1 GiB
cluster_size: 65536
backing file: jammy-server-cloudimg-amd64.img
backing file format: qcow2
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

##rootユーザの終了
# exit
$ 

ゲストOSへ変更を反映

ゲストOSへディスクサイズ拡張を反映させる。次の例ではvda1というパーティションに対し、拡張を行った。 拡張にはgrowpartを使用する。growpart は、パーティションテーブルのエントリを変更することなく、パーティションのサイズを拡張するために使用される。

#ドメインを起動する
$ virsh start <domain_name>

#ドメインにアクセス
 $ virsh console<domain_name>

#確認
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        49G   29G   21G  59% /

#確認
$ sudo sfdisk -Vl /dev/vda1
Disk /dev/vda1: 49.89 GiB, 53570682368 bytes, 104630239 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

#ディスクを最大限拡張
$ sudo growpart /dev/vda 1
CHANGED: partition=1 start=227328 old: size=104630239 end=104857567 new: size=209487839 end=209715167

#確認
$ sudo sfdisk -Vl /dev/vda1
Disk /dev/vda1: 99.89 GiB, 107257773568 bytes, 209487839 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

#コマンド実行後に一旦リブートを行います。
$ sudo reboot

次に、resize2fsコマンドの実行する。resize2fs コマンドは、ファイルシステムのサイズを変更するために使用される。

$ sudo resize2fs /dev/vda1
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 7, new_desc_blocks = 13
The filesystem on /dev/vda1 is now 26185979 (4k) blocks long.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        97G   29G   69G  30% /

これにより拡張できたことを確認した。

参考

knowledge.sakura.ad.jp