Linux
MySQL
CentOS
SSH

Linuxでディスク容量はあるのに容量不足エラーが出る場合の対処法

More than 1 year has passed since last update.

はじめに

Bind on unix socket: No space left on device
とか
Error: unable to create temporary file; errno: 28
とか
Can't create/write to file '/tmp/#xxxx' (Errcode: 28)
とか

ディスク容量不足系エラーが出るけど、dfしたらディスク容量には余裕がある!
どうしたらいいんだ!
という人向け

結論

①書き込み先ディレクトリの権限がない
②inodeが枯渇している
だいたいどっちか

①書き込み先ディレクトリの権限がない

1.パーミッションの確認

# ls -ld /tmp
dr-xr-xr-x. 11 root root 4096 Aug 21 04:08 /tmp

2.フルパーミッションの付与

# chmod 1777 /tmp

3.パーミッションの確認

# ls -ld /tmp
drwxrwxrwt 3 root root 4096 Aug 21 04:08 /tmp

これでだいたいなんとかなるはず
なんとかならなかった人は②へ

②inodeが枯渇している

1.dfで容量の確認

# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/xvda1       8123812 4815712   3207852  61% /
tmpfs             508628       0    508628   0% /dev/shm

2.df -i でinode利用量の確認

# df -i
Filesystem     Inodes  IUsed  IFree IUse% Mounted on
/dev/xvda1     6406144 6406144 0   100% /
tmpfs          127157      1 127156    1% /dev/shm

3.どのディレクトリがinodeを使い込んでいるのか確認

# for i in /*; do echo $i; find $i |wc -l; done

または

# echo "==== `pwd` ====" ; for i in `ls -1`;do echo -n "## $i ### " ; echo "(`find ./$i -type f |wc -l`)" ;done | sort -r
==== /var ====

4.怪しい奴を見つける

/foo
1
/piyo
2
/hoge
6370020

5.原因のディレクトリのファイルを削除

# rm -rdf /hoge/*

だいたいLogかMailが原因なので、そこらへんに当たりをつけると探しやすいかもです。

cf.

Linuxでディスクが一杯になった時の対処法 - Qiita
http://qiita.com/masarufuruya/items/0c794083fc4ea03cd9f9

inodeとは/inode消費が多いディレクトリの確認
http://tagutagu.com/?page_id=985