macOS を使い Vagrant で VirtualBox の VM を作り、そこで作業をするとしよう。そして途中で VM のディスク容量が足りないことに気づいたとする。どうすればいいのだろう? (なお、この記事では VM で CentOS 8 が動いていると仮定する)
Vagrant で VM の設定を変更するのであれば、現時点でふたつの手がある。
Experimental なオフィシャルの機能を使うというのがひとつめ。この機能を使うには VAGRANT_EXPERIMENTAL="disks" という環境変数を設定した上で、Vagrantfile に config.vm.disk :disk, size: "100GB", primary: true というような記述を加えればよい。
もしくは vagrant-disksize というプラグインを使うという手もある。こちらを使うには vagrant plugin install vagrant-disksize というコマンドでプラグインをインストールし、config.disksize.size = "100GB" というような記述を Vagrantfile に追加する。
いずれかの手段をとった後、VirtualBox の GUI で VM の設定を眺めると次のようになる。

しかし、ここまでの操作では Linux が空きスペースをディスクとして割り当てない。例えば df -h コマンドを実行すると次のようになる。
[vagrant@ip-10-0-x-x ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.5M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 10G 3.8G 6.1G 38% /
tmpfs 379M 0 379M 0% /run/user/1000
/dev/sda1 が 10GB しかない。これを変更するためには、次のコマンドを使う。
sudo cfdisk /dev/sda-/dev/sda1パーティションを拡張するsudo xfs_growfs /dev/sda1- ファイルシステムに拡張したパーティションを使わせる (ファイルシステムがext系である場合はxfs_growfsではなくresize2fsを使う)
ここまでの操作を終えて、ようやく /dev/sda1 が 100GB になる。
[vagrant@ip-10-0-x-x ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.5M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 100G 26G 75G 26% /
tmpfs 393M 0 393M 0% /run/user/1000