38220


MongoDB を amazon-linux 上で動かしていたところ、ディスクフルで起動しなくなりました。

[code]

    2017-09-25T06:06:23.039+0000 [initandlisten] ERROR: Insufficient free space for journal files
    2017-09-25T06:06:23.039+0000 [initandlisten] Please make at least 3379MB available in /var/lib/mongo/journal or use --smallfiles
    2017-09-25T06:06:23.039+0000 [initandlisten]
    2017-09-25T06:06:23.039+0000 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
    
[/code]

ログ的データをためているコレクションが原因なので、これを削除しようと考えたのですが、これを実現する方法はありますでしょうか？

  * サービス自体が起動していない (`sudo service mongod start` が失敗する) ので、 mongo シェルが使えない状態です。
  * ec2 インスタンスなので、ディスクサイズを拡張してやればいいとは思いますが、それはそれでちょっと面倒だと考えています。
  * オペレーションツールがあって、 mongod を起動せずともコレクションを削除できる、が理想なのですが。。こういったツールはありますでしょうか？

### 追記:

  * mongodb バージョン: v2.6.12
  * ストレージの変更など: 特に行っていなく、デフォルトの設定


CC BY-SA 3.0
2017-09-25T06:17:19.763
38168
2017-09-27T03:24:06.657
2017-09-26T04:11:39.313
754
754
question
mongodb
diskfull で mongod が起動しなくなったので、あるコレクションを削除したい


2.6のマニュアルにて[MongoDB Package
Components](https://docs.mongodb.com/v2.6/reference/program/ "MongoDB Package
Components")を見る限り、標準で同梱されているコマンドとして、「mongodを起動せずともコレクションを削除できる」というものは無いようです。

残念ながら、ディスクサイズ拡張して何とかするのが最も早いということになるのではないかと思います。


CC BY-SA 3.0
2017-09-26T16:43:38.970
38210
2017-09-26T16:43:38.970
20119
38168
answer


[Satoshi Okano さんの回答](https://ja.stackoverflow.com/a/38210/754) を見て、 mongod
を起動させないといけなさそうだ、と思うようになりました。そして、ひとまず、ディスクサイズは変更せずに復旧できるにはできたので、そのまとめです。

### 1\. journaling を off にする

`/etc/mongodb.conf` を編集し、以下の行を追加する

[code]

    nojournal=true
    
[/code]

そうすると、 jounaling を行わずに起動できるので、ひとまず mongod サービスは立ち上がる。

### 2\. `sudo service mongod restart`

### 3\. 該当データ(が入ったDB を) db.dropDatabase()

ひとまず mongo のシェルが起動できるようになるので、データを削除する。

このとき、 `db.COLLECTION.drop()` そして `db.repairDatabase()`
では、下記のエラーメッセージが表示されて、使用領域の解法ができなかった。

> Cannot repair database test having size: ... because free disk space is :
> ...

なので、下記を実行し、該当データが入ったデータベースごと drop する。

[code]

    use データベース
    db.dropDatabase()
    
[/code]

参考: <https://stackoverflow.com/questions/25625261/cannot-repair-database-
having-size>

### 4\. jounaling の設定をオフにして、起動しなおす。

[code]

    # /etc/mongodb.conf を編集したのちに
    sudo service mongod restart
    
[/code]


CC BY-SA 3.0
2017-09-27T02:39:10.247
38220
2017-09-27T03:24:06.657
2017-09-27T03:24:06.657
754
754
38168
answer