天運は我に無いけど原因はinodeにあった
nginxとかmod_disk_cacheとかでまぁ何でも良いんですが、キャッシュファイル置き場を/dev/shmにしている時に
No space left on device
ってメッセージがエラーログに出だしたらこれから先を読めば解決!!原因はinode溢れに有り。
dh -ihと叩けば恐らく100%近くになっている筈です。
↓こんな感じになっている事かと思われますよ。泣けますねぇ。
$ df -ih /dev/shm Filesystem Inodes IUsed IFree IUse% Mounted on tmpfs 129K 129K 1 100% /dev/shm
※この場合13万強ファイル置いたら死亡ですね。
という訳でファイル消す訳でもなく分割するでもなくinodeの上限増やしてしまえ!というのがこれから↓です。
※作業前にバックアップは忘れずにね!
cp -ip /etc/fstab /etc/fstab.`date +%Y%m%d`
/etc/fstabの中に↓の行が有るかと思うんですが、
tmpfs /dev/shm tmpfs defaults 0 0
こいつのdefaultの後にnr_inodesって書いて増やしたい分書いてやればOKです。(0って書くと無限になるみたいです。)
↓256kにする場合はこう書いてぇ。
tmpfs /dev/shm tmpfs defaults,nr_inodes=256k 0 0
そしてmountし直し。増えた!!
# umount /dev/shm # mount /dev/shm # df -ih /dev/shm/ Filesystem Inodes IUsed IFree IUse% Mounted on tmpfs 256K 1 256K 1% /dev/shm
nginxとかapacheで使っている場合は握っててumount出来ないので
service nginx stop umount /dev/shm mount /dev/shm service nginx start
の流れでやりましょう。
ちなみに/dev/shmの中umountした時点で全部綺麗になっちゃうから注意してね!