Ubuntu + Vagrant + VirtualBox環境でディスク容量を拡張した
はじめに
VirtualBoxで突然以下のようなエラーが発生。
npm ERR! code ENOSPC npm ERR! syscall write npm ERR! errno -28 npm ERR! nospc ENOSPC: no space left on device, write npm ERR! nospc There appears to be insufficient space on your system to finish. npm ERR! nospc Clear up some disk space and try again.
不要ファイルを削除してお茶を濁してみたが、いよいよ壊れ始めたので、仮想環境のディスク容量拡張に挑戦した。
Qiitaを探すとCentOSのやり方がヒットするのだが、Ubuntuの場合やり方が若干違うようだ。
最後は自己流になってしまうなど、かなり苦労した。
前提
- Windows環境の上に、VirtualBox + Vagrant で構築したLinux環境を利用。
- React.jsのGatsbyモジュールを使ったアプリを開発していた時に起こった。
- OSはubuntuを利用。
Distributor ID: Ubuntu Description: Ubuntu 18.04.4 LTS Release: 18.04 Codename: bionic
エラー原因の確認:ディスク容量不足
このエラー発生時は、ディスク容量が足りない可能性が高い。
参考にした記事では、innode
が足りなかったとのこと。
参考: No space left on device とエラーが出るときの対処法 - Qiita 自分の環境でたたいてみると、ディスク容量が足りないことが分かった。
$ df -hP Filesystem Size Used Avail Use% Mounted on udev 1.5G 0 1.5G 0% /dev tmpfs 299M 640K 299M 1% /run /dev/sda1 9.7G 9.7G 0 100% / tmpfs 1.5G 0 1.5G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup vagrant 238G 199G 39G 84% /vagrant home_vagrant_workspace 238G 199G 39G 84% /home/vagrant/workspace tmpfs 299M 0 299M 0% /run/user/1000
/dev/sda1
というのは、10GBであることからおそらくVirtualBoxのメインストレージ。
ディスク拡張のやりかた
ディスク拡張プラグインのインストール
ホストOS(Windows)上で、vagrant-disksize
プラグインをインストールする。
> vagrant plugin install vagrant-disksize
Vagrantfile追記
Vagrantfileに以下を追記する。
Vagrant.configure("2") do |config| config.vm.box = "ubuntu/bionic64"0 config.disksize.size = "20GB" # この行を追記 end
VagrantFile全体は以下のようになる。
Vagrant.configure("2") do |config| config.vm.box = "ubuntu/bionic64" config.disksize.size = "20GB" config.vm.network "forwarded_port", guest: 8000, host: 8000 config.vm.network "forwarded_port", guest: 3000, host: 3000 config.vm.synced_folder "./workspace", "/home/vagrant/workspace" config.vm.provider :virtualbox do |vb| vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/home/vagrant/workspace","1"] end config.vm.provider "virtualbox" do |vb| vb.memory = "2048" end end
Vagrantを再起動する
Vagrantを再起動する。
> vagrant halt > vagrant up
再起動時、以下のようなログが出ていれば成功。
==> default: Resized disk: old 10240 MB, req 20480 MB, new 20480 MB
ディスク容量の確認
VirtualBoxマネージャーの表示は変わっている。
パーティションを管理するfdisk
というコマンドを使うと、
$ sudo fdisk -l Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 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 Disklabel type: dos Disk identifier: 0x20027de7 Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 20971486 20969439 10G 83 Linux
ディスク容量はDisk /dev/sda: 20 GiB
と増えているが、パーティションの領域は
Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 20971486 20969439 10G 83 Linux
であり、増えていないことがわかる。
df
コマンドで確認しても増えていなかった。
$ df -hP Filesystem Size Used Avail Use% Mounted on udev 984M 0 984M 0% /dev tmpfs 200M 5.6M 194M 3% /run /dev/sda1 9.7G 9.7G 0 100% / ★まだ変わっていない tmpfs 997M 0 997M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 997M 0 997M 0% /sys/fs/cgroup vagrant 238G 200G 38G 85% /vagrant home_vagrant_workspace 238G 200G 38G 85% /home/vagrant/workspace tmpfs 200M 0 200M 0% /run/user/1000
パーティションの領域拡張
parted
というコマンドを使う。fdisk
と同じくパーティションを追加したり削除したりするコマンド。
$ sudo parted
と入力し、
print free
と入力すると現在の状況を確認できる。
(parted) print free Model: VBOX HARDDISK (scsi) Disk /dev/sda: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 32.3kB 1049kB 1016kB Free Space 1 1049kB 10.7GB 10.7GB primary ext4 boot 10.7GB 21.5GB 10.7GB Free Space
Number1のパーテーション(おそらく、/dev/sda1
に対応する)の後ろがFree Space
となっているため、1番を後ろに拡張できそう。
そこで、
resizepart 1
と入力し、
Warning: Partition /dev/sda1 is being used. Are you sure you want to continue? Yes/No? y
「使っているけど続行する?」の問いにはy
を回答する。
次に容量を聞かれるので、21.5GB
と入力する。
End? [10.7GB]? 21.5GB
ここまで行ったらparted
を抜けてよい。
(parted) ^C
Vagrant再起動、容量の確認
Vagrantを再起動して、容量を確認すると
$ df -h Filesystem Size Used Avail Use% Mounted on udev 984M 0 984M 0% /dev tmpfs 200M 620K 199M 1% /run /dev/sda1 20G 9.7G 9.7G 50% / ★できた!! tmpfs 997M 0 997M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 997M 0 997M 0% /sys/fs/cgroup tmpfs 200M 0 200M 0% /run/user/1000
容量が20GBになっていることが確認できた。
ファイルシステムの拡張が必要な場合がある?
参考文献では、resize2fs
コマンドを利用してファイルシステムを拡張していた。
sudo resize2fs /dev/sda1
今回は不要だったが、念のためメモしておく。
参考資料
参考:試してみてダメだった方法
最初は、以下ページを参考に、
という手順を実行しようと試みた。
VagrantのCentOSのディスク容量を増やす手順 - Qiita
物理ボリューム、ボリュームグループ、論理ボリュームの概念は以下を参照。
ただ、そもそも私の環境にはボリュームグループというものが存在せず、新規作成した物理ボリュームをマウントする方法がわからなかった。
以下ページによると、UbuntuではCentOSと違い、LVMが利用されていないらしい。
技術メモメモ: Ubuntu 20.04でシステム領域のディスク容量の拡張を行う
おわりに
Ubuntu+Vagrant+VirtualBoxの環境で、ディスク容量を拡張することができた。 Linuxの勉強をまったくできておらず、パーティションの概念も初めて知った。勉強不足がつらい。