LoginSignup
0
0

More than 1 year has passed since last update.

Errno::ENOSPCが表示された時

Posted at

rails sでサーバーを立ち上げようとすると、Errno::ENOSPCの表示が。
スクリーンショット 2021-05-12 22.34.45.png

エラー内容

まずこのエラーの内容を確認すると、「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)」コマンドにて使用率を確認して、使用容量が減っているか確認してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0