Edited at

ディスク容量が余裕でも"No space left on device"と怒られる怪現象

More than 1 year has passed since last update.

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)

将棋の棋譜ファイルをスクレイピングで収集するサービス( 将棋クエスト履歴検索β )を稼働させている。