如何解决mongodb中的空间问题

时间:2014-01-20 15:19:17

标签: mongodb

我在mongod.log文件中收到以下错误:

journal dir=/var/lib/mongodb/journal
Mon Jan 20 15:10:19.742 [initandlisten] recover : no journal files present, no recovery needed
Mon Jan 20 15:10:19.742 [initandlisten] 
Mon Jan 20 15:10:19.742 [initandlisten] ERROR: Insufficient free space for journal files
Mon Jan 20 15:10:19.742 [initandlisten] Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles
Mon Jan 20 15:10:19.742 [initandlisten] 
Mon Jan 20 15:10:19.743 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
Mon Jan 20 15:10:19.743 dbexit: 

这表明服务器没有更多可用于journal的空间。是否会为服务器分配更多空间自动解决问题,还是需要手动执行某些操作以提交新分配的空间?

3 个答案:

答案 0 :(得分:3)

您无需恢复数据库。您可以选择以下选项:

  • 如果您没有更多空间可以添加并且不关心写入的持久性,则可以通过设置配置选项journal = false来禁用日记功能。
  • 您可以设置smallfiles = true以使日记文件更小。
  • 分配更多磁盘空间或将数据目录移动到更大的磁盘。

在任何一种情况下,您都不必真正重启服务器。只需关闭mongod,解决问题并启动它。

示例1:

我在AWS上运行Linux VM,我的根目录中只有8GB'/',默认情况下mongo会将数据文件放在其中。我创建一个新的EBS分区或附加一些其他分区,格式化并挂载它。接下来我编辑mongod config以将我的数据目录放在这个新的驱动器/分区上。我还将旧目录中的所有文件移动到新位置。我启动mongo它应该工作正常。不要忘记设置正确的目录权限等。

示例2:

我关闭了我的VM或服务器并调整了磁盘大小。如果你使用LVM等,你可能不需要关机 - 取决于。启动mongod - 一切正常。

答案 1 :(得分:1)

这不是缺少内存而是硬盘空间。

是的,只需调整服务器大小,然后重新启动mongod即可。

答案 2 :(得分:0)

简短回答:是的。

您可以简单地增加系统的存储空间,以便存储所有日记帐。

或者,如果您启用--smallfiles,则会将最大journal大小减小为512mb。但是,我不确定你是否想要这个,但它可能会占用足够的空间,不需要扩展系统的存储空间。