サーバー

MongoDBのjounalファイルを削除して容量を増やす

MongoDBのjounalファイルを削除するイメージ

数日振りに触ったサーバでコマンドを打つと no space なエラーが出たので、

$ df -h

したところ、容量が100%になっていました。
そこで、 ncdu コマンドを使って /usr, /varと下って調べていたらmongodbjournal以下のファイルが肥大化していることがわかりました。

これの解消方法を書いておきます。
ちなみにOSはUbuntu 16.04(古い。。)です。

mongodbを停止する

公式に則った通常通りのmongodbのインストール方法を使っていれば init.d にmongodbが追加されているのでserviceコマンドでmongodbを管理できます。

$ sudo service mongod stop

このとき、mongodbを使用中のサービスがあったら気をつけてください。
もしサービスを止められない、という場合は一時的に別サーバにmongodbを用意して接続先を変更してください。

journalファイルを削除する

止め終わったら実際に肥大化しているjournalファイルを削除します。

$ sudo rm -f /var/lib/mongodb/journal/*

この時点で容量を圧迫しているパーセンテージがいくらか下がっていることが確認できます。

なお、journalファイルはjournaling(ジャーナリング)と呼ばれるデータの堅牢性と保全性を高める機能を持っています。
ここで削除しても、再起動すれば新たに作成されるので安心してください。

ちなみにジャーナリング機能はMacOSなどを使っている場合もディスクユーティリティでその存在を見ることがあります。

設定を見直す

このままmongodbを再起動してしまうと、また同じ程度の大きさのjournalファイルが生成されてしまう可能性があります。
なので設定ファイルに以下を追記して容量を抑えた状態で起動しましょう。

$ sudo emacs /etc/mongodb.conf

# /etc/mongodb.conf
storage:
  dbPath: /var/lib/mongodb
  smallFiles: true # これを追加する
  journal:
    enabled: true

smallFiles要素を有効化することによって、大容量での起動がなくなります。

再起動

これだけやってしまえばあとは普通にmongodbを起動してOKです。

$ sudo service mongod start

あとは df -hncdu あたりで容量に空きができたことを確認してください。

ABOUT ME
UOT合同会社 / SOT Co.,Ltd 合同開発部
UOT合同会社 / SOT Co.,Ltd 合同開発部
UOT合同会社 / SOT Co.,Ltd開発部の合同公式ブログ。 代表がITエンジニア出身のデジタルノマド→日本とベトナム・ホーチミンでIT企業設立。 海外デジタルノマドやエンジニアのリモートワーク、プログラミング、オフショア開発やミニラボ情報などをまとめていきます。