如何在MongoDB中强制预分配

时间:2013-04-02 07:29:06

标签: mongodb

我想在我的日记文件夹中创建prealloc.X文件,没有明确创建这些文件的选项,mongo决定是否进行预分配。

我使用了--journal选项,但没有帮助。

请建议可以创建prealloc.X文件的任何方式或条件。

提前致谢!

2 个答案:

答案 0 :(得分:2)

默认情况下,在启用日志记录时完成预分配(默认情况下在V2.2中启用)。实际上,您需要明确告诉mongo是否要禁用预分配 - 使用noprealloc标志。

我建议您首先查看mongodb.conf中noprealloc是否设置为true并将其更改为false。

但是你也可以在启动mongod之前手动创建prealloc.X,以便保存预分配滞后。这里将详细介绍http://docs.mongodb.org/manual/administration/journaling/#avoid-preallocation-lag

这个想法是你启动mongod只是为了创建prealloc.X文件。然后你停止它并将文件复制到常规mongd的日志目录。

答案 1 :(得分:1)

MongoDb实际上会在启动mongod时预先分配2-3GB的日志,因为@balafi状态是默认行为,您必须通过--smallfiles--noprealloc明确告诉MongoDB不要这样做。 {3}})和/或mongodhttp://docs.mongodb.org/manual/reference/mongod/#cmdoption-mongod--smallfiles)。

除非你处于停产期间并且每分钟都是金钱^ 2,否则通常会遇到一些预分配延迟。

所以我建议您检查一下如何开始{{1}},看看是否有一些选项迫使它开始:

  • 没有日记
  • with smallfiles
  • 没有prealloc