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 の設定を眺めると次のようになる。

Virtualbox

しかし、ここまでの操作では 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