Open15

cloud9でno space left on deviceが出た時の対応

ダン@HyperFormダン@HyperForm

このエラーがでる原因。

  • ディスク容量を使い果たした
  • inode の枯渇

のどちらか

inode とは、ファイルのサイズとか、更新日時とか、属性情報が書かれたデータのことで、実ファイルとは別に存在している。このデータ領域がなくなることを「 inode の枯渇」と呼ぶようだ。

ダン@HyperFormダン@HyperForm

ディスク容量を使い果たしたかどうかを確認

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        483M   60K  483M   1% /dev
tmpfs           493M     0  493M   0% /dev/shm
/dev/xvda1      9.8G  9.6G   68M 100% /

100%って書いてあるのでたぶんこれが原因

ダン@HyperFormダン@HyperForm

inodeの枯渇も一応調べてみる

$ df -i
Filesystem     Inodes  IUsed  IFree IUse% Mounted on
devtmpfs       123467    434 123033    1% /dev
tmpfs          126142      1 126141    1% /dev/shm
/dev/xvda1     655360 427041 228319   66% /

こっちは66%だから大丈夫そう。やはり原因はディスク容量

ダン@HyperFormダン@HyperForm

対処法として

  • AWSの設定で使える容量を増やす
  • 不要なファイルを削除する

の2つが考えられる。

容量を増やしたらお金かかりそう(知らんけど)で嫌なので、不要なファイルを削除して対応したいところ。

ダン@HyperFormダン@HyperForm

どこのディレクトリが重いのか確認

$ sudo du -sh /*
7.1M    /bin
72M     /boot
4.0K    /cgroup
60K     /dev
12M     /etc
2.1G    /home
209M    /lib
21M     /lib64
4.0K    /local
16K     /lost+found
4.0K    /media
4.0K    /mnt
12K     /nvm-install.txt
896M    /opt
du: cannot access ‘/proc/5597/task/5597/fd/4’: No such file or directory
du: cannot access ‘/proc/5597/task/5597/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/5597/fd/4’: No such file or directory
du: cannot access ‘/proc/5597/fdinfo/4’: No such file or directory
0       /proc
51M     /root
16K     /run
14M     /sbin
4.0K    /selinux
4.0K    /srv
0       /sys
96M     /tmp
2.9G    /usr
3.3G    /var

homeディレクトリの中にRailsアプリがいくつか入っているので、2.1GBはわかる。

usrvarは何なのか。消していい無駄なファイルが溜まっているのか、それともデフォルトでそれくらいの容量があるのか。

ダン@HyperFormダン@HyperForm

cloud9の環境をもう一個作った結果こんな感じ。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        474M     0  474M   0% /dev
tmpfs           492M     0  492M   0% /dev/shm
tmpfs           492M  456K  492M   1% /run
tmpfs           492M     0  492M   0% /sys/fs/cgroup
/dev/xvda1       10G  8.6G  1.5G  86% /
tmpfs            99M     0   99M   0% /run/user/1000
$ df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
devtmpfs        121282    284  120998    1% /dev
tmpfs           125862      2  125860    1% /dev/shm
tmpfs           125862    384  125478    1% /run
tmpfs           125862     16  125846    1% /sys/fs/cgroup
/dev/xvda1     3339536 363253 2976283   11% /
tmpfs           125862      1  125861    1% /run/user/1000
$ sudo du -sh /*
0       /"
0       /bin
88M     /boot
0       /dev
32M     /etc
1.4G    /home
0       /lib
0       /lib64
0       /local
0       /media
0       /mnt
727M    /opt
du: cannot access ‘/proc/6671/task/6671/fd/3’: No such file or directory
du: cannot access ‘/proc/6671/task/6671/fdinfo/3’: No such file or directory
du: cannot access ‘/proc/6671/fd/3’: No such file or directory
du: cannot access ‘/proc/6671/fdinfo/3’: No such file or directory
0       /proc
48M     /root
456K    /run
0       /sbin
0       /srv
0       /sys
85M     /tmp
3.0G    /usr
3.1G    /var
ダン@HyperFormダン@HyperForm

usrvarはデフォルトで重いので、ファイルは削れないことがわかった。
不要なRailsアプリとか、Railsアプリのlogとかtmpとかを地道に削って改善していこう。

ダン@HyperFormダン@HyperForm

とりあえず各Railsアプリ内で

$ rails tmp:cache:clear

を叩いてキャッシュを削除した。

ダン@HyperFormダン@HyperForm
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        483M   60K  483M   1% /dev
tmpfs           493M     0  493M   0% /dev/shm
/dev/xvda1      9.8G  9.4G  236M  98% /

0.4Gくらい空きができたっぽい

ダン@HyperFormダン@HyperForm

あとはCloud9の容量をどうやって増やすか、増やした場合どれくらいお金がかかるのかがざっくりでもわかるといいですねー