Open15
cloud9でno space left on deviceが出た時の対応
要領が足りないっぽい
このエラーがでる原因。
- ディスク容量を使い果たした
- inode の枯渇
のどちらか
inode とは、ファイルのサイズとか、更新日時とか、属性情報が書かれたデータのことで、実ファイルとは別に存在している。このデータ領域がなくなることを「 inode の枯渇」と呼ぶようだ。
ディスク容量を使い果たしたかどうかを確認
$ 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%って書いてあるのでたぶんこれが原因
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%だから大丈夫そう。やはり原因はディスク容量
対処法として
- AWSの設定で使える容量を増やす
- 不要なファイルを削除する
の2つが考えられる。
容量を増やしたらお金かかりそう(知らんけど)で嫌なので、不要なファイルを削除して対応したいところ。
どこのディレクトリが重いのか確認
$ 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はわかる。
usr
とvar
は何なのか。消していい無駄なファイルが溜まっているのか、それともデフォルトでそれくらいの容量があるのか。
cloud9の環境をもう一個用意して、usr
とvar
の容量を確認してみるか。
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
usr
とvar
はデフォルトで重いので、ファイルは削れないことがわかった。
不要なRailsアプリとか、Railsアプリのlogとかtmpとかを地道に削って改善していこう。
とりあえず各Railsアプリ内で
$ rails tmp:cache:clear
を叩いてキャッシュを削除した。
$ 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くらい空きができたっぽい
とりあえずエラーは消えて普通に使えるようになりました。
あとはCloud9の容量をどうやって増やすか、増やした場合どれくらいお金がかかるのかがざっくりでもわかるといいですねー
ディスクサイズの拡張は、AWSのコンソール側の設定じゃなくて、シェルスクリプトでやるっぽい。