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.
容量が足りないエラーのようで、不要ファイルを削除することで解消した。 実施したことをメモする。
追記
本記事を書いた数時間後に再度同じエラーが発生、どうしようもなくなったため容量拡張を実施した。 あくまで本記事は暫定対応と考えたほうがよい。
前提
- 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のメインストレージ。
ディスク容量をひっ迫しているフォルダの確認
ルートディレクトリ配下のフォルダごとのデータ量を確認する。
ルートフォルダに移動して中身の確認。
$ cd / $ sudo du -sh ./*/ 8.1G ./home/ ...省略...
ホームディレクトリが圧倒的に大きいことが分かった。
ホームディレクトリの中のvagrant
(ユーザ名)ディレクトリに移動して、隠しファイル以外のデータ量を確認する。
$ cd home/vagrant $ sudo du -sh ./*/ 161M ./aws/ 753M ./gatsby/ 4.0K ./tmp/ 2.5G ./workspace/
これだけでは8.1GBに達する理由がわからないため、隠しフォルダのデータ量も確認。
$ du -scmh ./.[^.]* | sort -rh 4.7G total 1.3G ./.nvm 1.3G ./.cache 1.1G ./.npm 939M ./.vscode-server 116M ./.config 5.2M ./.yarn ...省略...
参考: duでカレントディレクトリ以下の使用容量をパッと見たいとき用のコマンド 隠しファイルも - Qiita
1.3G ./.nvm 1.3G ./.cache 1.1G ./.npm
このあたりの容量が大きそうだが、nvm
とnpm
は消したらまずい気がしたのでcache
をターゲットにする。
キャッシュフォルダの中身確認
./.cache
フォルダの中身を確認する。
$ cd ./.cache $ sudo du -sh ./*/ 109M ./typescript/ 1.2G ./yarn/
どうやら./yarn
フォルダが容量を食っている模様。
yarnのキャッシュを消してよいのか調査
home/.cache/yarn
フォルダを消して問題が起きないか自信が無い(さすがにキャッシュだから大丈夫だとは思うが)ので少し調べたところ、以下の記事で気軽にキャッシュをクリアしていたので、問題ないと信じることにした。
どのプロジェクトで使われているフォルダなのか
作業していたGatsby.jsのプロジェクトフォルダに移動して、yarn
のキャッシュ保管フォルダを確認すると、まさに問題になっていたフォルダだった。
$ cd gatsby-starter-blog/
$ yarn cache dir
/home/vagrant/.cache/yarn/v6
参考: yarnのキャッシュを理解してnode_modulesを正しく更新する - さかなソフトブログ
このまま
$ yarn cache clean
を実施したところ、データ量が1GBほど削減された。
VartualBox再起動
再起動すると、Linuxの操作が再びできるようになった。
vagrant halt vagrant up
おわりに
VirtualBoxの容量不足エラーを、キャッシュを削除することで回避できた。
ただし、本来はVirtualBoxへの割り当て容量を増やすほうが良いと思う。
また、本当に容量が足りなくなるとvagrant up
すらできなくなるので、詰む可能性あり。
私はwindowsと共有しているフォルダから適当なファイルを手動で削除することで、起動できた。