Virtual Boxでゲストマシンのボリュームを拡張する

2021年1月1日

この記事を読むと得られる情報

  • Virtual BoxのスナップショットをCLIで削除する方法
  • Virtual BoxのゲストOSのボリューム拡張方法

概要

よくあることですが、VirtualBoxで作ったゲストマシンのディスクが足りなくなった際に拡張する方法をまとめています。
意外なところにハマりどころがあったので成功例をまとめています。

今回の環境
ホストマシン:Ubuntu 20.04
ゲストマシン:Ubuntu 18.04
仮想化ソフトウェア:Virtual Box 6.1

また今回は原則全てコマンドラインでの実行になります。

前準備

早速のハマりどころなんですが、まずストレージ容量を変更する際に
既存のスナップショットが存在するとストレージ容量を変更できません
なので、既存のスナップショットは全て削除しておきましょう。
ホストマシンから下記コマンドを実行

# スナップショットの削除

VBoxManage snapshot "VM名" delete *

スナップショットが残っているとボリューム容量が変更できないのは、VirtualBoxの仕様かと思いますが
きっとスナップショット復元の挙動は「取得時の状態に戻す」なので、ストレージ容量が過去と変わると不具合が生じるのでしょう。

本番作業

では、ここからは通常通りゲストマシンのボリュームを増やしていきましょう。
まずはゲストマシンの電源を切りまして、ホストマシンよりゲストマシンのストレージファイル変更を行います。
(今回はストレージ容量を20GBへ変更しています)

# ゲストマシンの容量変更

VBoxManage modifyhd "/home/hoge/VirtualBox VMs/huga/moge.vdi" --resize 20480

こちらがうまくいったら、ゲストマシンの電源をつけてログイン。
現在のストレージ状況を確認

# ストレージの確認

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            1.9G     0  1.9G   0% /dev
tmpfs           395M 1004K  394M   1% /run
/dev/sda2        10G  6.9G   12G  74% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/loop0       97M   97M     0 100% /snap/core/9436
/dev/loop1       98M   98M     0 100% /snap/core/9289
tmpfs           395M     0  395M   0% /run/user/1000

今回は/dev/sda2が増設対象です。
ではパーティションの増設をpartedコマンドで実施していきます。

# パーティションの変更

$ sudo parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p free
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 21.5GB ⇠ここが前準備で設定した容量に近くなっていることを確認
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number  Start   End     Size    File system  Name  Flags
        17.4kB  1049kB  1031kB  Free Space
 1      1049kB  2097kB  1049kB                     bios_grub
 2      2097kB  10.7GB  10.7GB  ext4
        10.7GB  21.5GB  10.8GB  Free Space
(parted) resizepart 2
Warning: Partition /dev/sda2 is being used. Are you sure you want to continue?
Yes/No? Yes
End?  [10.7GB]? 21.5GB ⇠Disk容量を設定します
(parted) p free
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number  Start   End     Size    File system  Name  Flags
        17.4kB  1049kB  1031kB  Free Space
 1      1049kB  2097kB  1049kB                     bios_grub
 2      2097kB  21.5GB  21.5GB  ext4    ⇠先程入力した値になっていれば成功
(parted) q
Information: You may need to update /etc/fstab.

パーティションの拡張ができたところで一度再起動します。

# ゲストマシンの再起動

sudo reboot

再起動から復帰したら、最後にファイルシステムの拡張を行います。

# ファイルシステムの拡張

$ sudo resize2fs /dev/sda2
resize2fs 1.44.1 (24-Mar-2018)
Filesystem at /dev/sda2 is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/sda2 is now 5247483 (4k) blocks long.

最後に容量を確認して

# 最終確認

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            1.9G     0  1.9G   0% /dev
tmpfs           395M 1004K  394M   1% /run
/dev/sda2        20G  6.9G   12G  37% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/loop0       97M   97M     0 100% /snap/core/9436
/dev/loop1       98M   98M     0 100% /snap/core/9289
tmpfs           395M     0  395M   0% /run/user/1000

/dev/sda2 が無事増えていることが無事確認できました!