mongodbが落ちていたのでログを確認するとNo space left on device
と出力されていた。
$ # /var/log/mongodb/mongod.log の内容
( 略 : )
2018-08-18T21:44:32.320+0900 E STORAGE [thread1] WiredTiger (28) [1534596272:318424][943:0x7ff7d77b2700], file:WiredTiger.wt, WT_SESSION.checkpoint: /var/lib/mongodb/WiredTiger.turtle.set: handle-open: open: No space left on device
2018-08-18T21:44:32.321+0900 E STORAGE [thread1] WiredTiger (28) [1534596272:321564][943:0x7ff7d77b2700], checkpoint-server: checkpoint server error: No space left on device
( 略 : )
ディスクフルだろうとディスク容量を確認する、、、空き容量はある。怪現象だ。
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 990M 4.0K 990M 1% /dev
tmpfs 201M 412K 200M 1% /run
/dev/vda1 48G 29G 17G 63% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 5.0M 0 5.0M 0% /run/lock
none 1001M 0 1001M 0% /run/shm
none 100M 0 100M 0% /run/user
$
サイズではなくファイル数がフルなのであった。
$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 253417 419 252998 1% /dev
tmpfs 256223 354 255869 1% /run
/dev/vda1 3145728 3145728 0 100% /
none 256223 11 256212 1% /sys/fs/cgroup
none 256223 1 256222 1% /run/lock
none 256223 1 256222 1% /run/shm
none 256223 3 256220 1% /run/user
$
このマシンではサイズの小さなファイル(1KB程度)を200万ファイル/年のペースで生成するようなシステム(※1)が動いているため、ファイル数(inode数)の上限に達してしまっていたのであった。
対処法としては以下が挙げられる。
- 不要or古いファイルをアーカイブor退避or削除する
- ファイル数を監視し一定に保つ仕組みを設ける
- ストレージorディスク容量を増やす
(※1)
将棋の棋譜ファイルをスクレイピングで収集するサービス( 将棋クエスト履歴検索β )を稼働させている。