rails sでサーバーを立ち上げようとすると、Errno::ENOSPCの表示が。
###エラー内容
まずこのエラーの内容を確認すると、「No space left on device」の文字が確認でき、これは容量不足を示しています。
こいつが起きると何も操作ができなくなってしまい、だいぶやっかいです。
この容量不足には、ディスクの容量不足とinodeの容量不足の2パターンがあります。
##解決に向けて
※出力結果は例となります。
まずは以下コマンドにて、現在の使用容量を確認します。
$ df
>ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置
devtmpfs 492676 0 492676 0% /dev
tmpfs 503448 0 503448 0% /dev/shm
tmpfs 503448 472 502976 1% /run
tmpfs 503448 0 503448 0% /sys/fs/cgroup
/dev/xvda1 8376300 5655364 2720936 68% /
tmpfs 100692 0 100692 0% /run/user/1000
ここでは使用%という部分が、現在のディスク使用率を表示しています。
ここが100%になっていれば、ディスク容量が一杯になっています。
※ここでは容量不足解消後の出力結果なので、100%のものはありません。
続いてinodeの容量確認ですが、こちらは先ほどのコマンドに-iを追加します。
$ df -i
>ファイルシス Iノード I使用 I残り I使用% マウント位置
devtmpfs 123169 284 122885 1% /dev
tmpfs 125862 2 125860 1% /dev/shm
tmpfs 125862 373 125489 1% /run
tmpfs 125862 16 125846 1% /sys/fs/cgroup
/dev/xvda1 4193216 127452 406576 4% /
tmpfs 125862 1 125861 1% /run/user/1000
こちらもI使用%という部分を確認して、ここが100%になっていれば、inodeの容量不足となります。
上記コマンドで容量不足の確認ができたところで、不要なファイルを削除していきます。
まず、どのファイルが容量を圧迫しているか確認する必要があるので、以下コマンドで確認します。
$ find / -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -nr
> 59177 usr
33328 home
4025 var
526 etc
16 opt
13 boot
1 swapfile1
1 .autorelabel
こんな感じで、左側にファイル数、右側にディレクトリが表示されるかと思います。
ファイル数が多いものが容量を圧迫しているので、更にその中で圧迫の原因となっているものを探っていきます。
先ほどの出力結果だと、usrディレクトリのファイル数が多かったので、これを更に深めていきます。(findの後に確認したいディレクトリ名を記載します。)
$ find /usr -xdev -type f | cut -d "/" -f 3 | sort | uniq -c | sort -nr
> 28277 share
17869 lib
7387 lib64
3676 include
929 bin
526 local
377 sbin
136 libexec
ここではディレクトリ別のファイルが表示されています。この操作によって、ファイル数が多く、不要なディレクトリを探します。
上記コマンドでディレクトリを特定できれば、次はそれを削除していきます。
削除する時は、以下コマンドを使用します。
$ sudo rm -rf ディレクトリ名
例えば先ほどの出力結果だと、usr/shareが多かったので、これを削除する場合、
「$ sudo rm -rf usr/share」となります。
このコマンドは-rfがついているため、コマンドを実行すると強制的に削除が実施されるので、必要なファイルを削除しないようにご注意ください。
不要なファイルを削除したらもう一度、「df (-i)」コマンドにて使用率を確認して、使用容量が減っているか確認してみてください。