【问题标题】:Why getting error mongod dead but subsys locked and Insufficient free space for journal files on Linux?为什么在 Linux 上出现错误 mongod dead 但 subsys 被锁定和日志文件可用空间不足?
【发布时间】:2013-01-13 02:40:12
【问题描述】:

我已经在 Linux CentOS 服务器上安装了 mongo-10gen mongo-10gen-server

我按照Link的步骤进行操作。

我已将 /etc/mongod.conf 配置为 -

logpath=/var/log/mongo/mongod.log
port=27017
dbpath=/var/lib/mongo

我在 iptables 中为 mongo 设置了端口 27017。 要启动 mongo,我使用了命令 -

service mongod start and
mongo

它开始很好,但几天后我收到错误 -

Tue Jan 29 08:41:54 [initandlisten] ERROR: Insufficient free space for journal files
Tue Jan 29 08:41:54 [initandlisten] Please make at least 3379MB available in /var/lib/mongo/journal or use --smallfiles
Tue Jan 29 08:41:54 [initandlisten]
Tue Jan 29 08:41:54 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
Tue Jan 29 08:41:54 dbexit:
Tue Jan 29 08:41:54 [initandlisten] shutdown: going to close listening sockets...
Tue Jan 29 08:41:54 [initandlisten] shutdown: going to flush diaglog...
Tue Jan 29 08:41:54 [initandlisten] shutdown: going to close sockets...
Tue Jan 29 08:41:54 [initandlisten] shutdown: waiting for fs preallocator...
Tue Jan 29 08:41:54 [initandlisten] shutdown: lock for final commit...
Tue Jan 29 08:41:54 [initandlisten] shutdown: final commit...
Tue Jan 29 08:41:54 [initandlisten] shutdown: closing all files...
Tue Jan 29 08:41:54 [initandlisten] closeAllFiles() finished
Tue Jan 29 08:41:54 [initandlisten] journalCleanup...
Tue Jan 29 08:41:54 [initandlisten] removeJournalFiles
Tue Jan 29 08:41:54 [initandlisten] shutdown: removing fs lock...
Tue Jan 29 08:41:54 dbexit: really exiting now

当我执行命令时 -

service mongod status

它给出错误 -

mongod dead but subsys locked

请帮我解决mongod dead but subsys locked日志可用空间不足,终止的问题强>

【问题讨论】:

  • 它告诉您,您没有足够的可用磁盘空间来创建它需要的 3.3GB 的 /var/lib/mongo/journal 文件,因此它无法启动。
  • 我有足够的空间,但问题仍然存在。我在下面发布了对我有用的内容。

标签: linux mongodb journal


【解决方案1】:

您可以在运行mongod --config mongod.conf时提供的配置文件中添加以下内容

对于 MongoDB 3.x(最新版本)

storage:
   mmapv1:
      smallFiles: true

对于版本 2.6+

storage:
   smallFiles: true

适用于 2.4 及以下版本

smallfiles = true

然后执行 mongod 来接受你的配置文件(这里假设配置的位置是 /etc/mongodb.conf):

mongod -f /etc/mongodb.conf

Documentation 用于 smallfiles 参数:

Set to true to modify MongoDB to use a smaller default data file size. 
Specifically, smallfiles reduces the initial size for data files and
limits them to 512 megabytes. The smallfiles setting also reduces the
size of each journal files from 1 gigabyte to 128 megabytes.

【讨论】:

  • @Andrei Karpushonak 配置文件在哪里?设置samllfiles = true
  • 取决于你的操作系统,在 Linux 上是 /etc/mongodb.conf
  • 解析 INI 配置文件时出错:“存储:”中无法识别的行尝试“mongod --help”以获取更多信息
  • 我运行的是 3.0.2 版本,上面的配置报错了,我必须做smallfiles=true 才能让它工作。
  • 好的,没有足够的可用磁盘空间来创建 /var/lib/mongo/journal 文件 => 3.3GB
【解决方案2】:

使用以下命令启动mongod 实例

mongod --dbpath /data/db --smallfiles

【讨论】:

  • 好吧,没有足够的可用磁盘空间来创建 /var/lib/mongo/journal 文件 => 3.3GB
【解决方案3】:

我正在关注http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/的官方指南

使用后

$sudo service mongod start

我通过查看此日志来验证 MongoDB 是否已成功启动:

/var/log/mongodb/mongod.log

这是我发现的问题:

2014-11-11T12:54:05.808-0500 [initandlisten] ERROR: Insufficient free space for journal files
2014-11-11T12:54:05.808-0500 [initandlisten] Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles
2014-11-11T12:54:05.808-0500 [initandlisten]
2014-11-11T12:54:05.808-0500 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
2014-11-11T12:54:05.808-0500 [initandlisten] dbexit:
2014-11-11T12:54:05.808-0500 [initandlisten] shutdown: going to close listening sockets...
2014-11-11T12:54:05.808-0500 [initandlisten] shutdown: going to flush diaglog...
2014-11-11T12:54:05.808-0500 [initandlisten] shutdown: going to close sockets...
2014-11-11T12:54:05.808-0500 [initandlisten] shutdown: waiting for fs preallocator...
2014-11-11T12:54:05.808-0500 [initandlisten] shutdown: lock for final commit...
2014-11-11T12:54:05.808-0500 [initandlisten] shutdown: final commit...
2014-11-11T12:54:05.808-0500 [initandlisten] shutdown: closing all files...
2014-11-11T12:54:05.808-0500 [initandlisten] closeAllFiles() finished
2014-11-11T12:54:05.808-0500 [initandlisten] journalCleanup...
2014-11-11T12:54:05.808-0500 [initandlisten] removeJournalFiles
2014-11-11T12:54:05.814-0500 [initandlisten] shutdown: removing fs lock...
2014-11-11T12:54:05.814-0500 [initandlisten] dbexit: really exiting now

解决方案:

在文件 /etc/mongod.conf 的末尾我添加了这一行:

smallfiles = true

之后,我重启了mongod服务:

$sudo service mongod restart

然后当我去查看日志时,我意识到一切都很完美,并且问题得到了解决:

2014-11-11T22:32:20.544-0500 ***** SERVER RESTARTED *****
2014-11-11T22:32:20.552-0500 [initandlisten] MongoDB starting : pid=5200 port=27017 dbpath=/var/lib/mongodb 64-bit host=jaimemontoya-VirtualBox
2014-11-11T22:32:20.552-0500 [initandlisten] db version v2.6.5
2014-11-11T22:32:20.552-0500 [initandlisten] git version: e99d4fcb4279c0279796f237aa92fe3b64560bf6
2014-11-11T22:32:20.552-0500 [initandlisten] build info: Linux build8.nj1.10gen.cc 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49
2014-11-11T22:32:20.552-0500 [initandlisten] allocator: tcmalloc
2014-11-11T22:32:20.552-0500 [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1" }, storage: { dbPath: "/var/lib/mongodb", smallFiles: true }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
2014-11-11T22:32:20.564-0500 [initandlisten] journal dir=/var/lib/mongodb/journal
2014-11-11T22:32:20.564-0500 [initandlisten] recover : no journal files present, no recovery needed
2014-11-11T22:32:20.738-0500 [initandlisten] waiting for connections on port 27017
2014-11-11T22:33:20.748-0500 [clientcursormon] mem (MB) res:36 virt:245
2014-11-11T22:33:20.748-0500 [clientcursormon]  mapped (incl journal view):64
2014-11-11T22:33:20.748-0500 [clientcursormon]  connections:0

【讨论】:

  • 好吧,没有足够的可用磁盘空间来创建 /var/lib/mongo/journal 文件 => 3.3GB
  • 在我的系统上,要编辑的文件是 /etc/mongodb.conf 而不是 /etc/mongod.conf
【解决方案4】:

尽管有足够的空间来创建日志文件,但遇到此问题的任何人。

我的问题:我有足够的空间来创建日志文件。 Mongo 给了我一个连接失败的问题。我使用 kill 命令杀死了 mongod 进程,这反过来又给了我 subsys 问题。这对我有用:

转到/var/lock/subsys并删除文件mongod

现在service mongod stop然后service mongod start

现在启动了 mongo shell,一切似乎都运行良好。

【讨论】:

    【解决方案5】:

    第一

    cd /usr/local/src/mongo/bin/<br>
    

    然后

    ./mongod --dbpath /usr/local/src/mongo/data/db/ --smallfiles
    

    【讨论】:

    • 这可能会解决问题,但如果您在答案中添加一些解释会很好。这将增加您的答案的价值。
    【解决方案6】:

    只是一个便条,对我有帮助。虽然没有与 mongo 相关的技术问题。只是系统空间不够。清除系统缓存对我来说很有效,mongo 又恢复了平稳运行。

    yum clean all
    

    【讨论】:

      【解决方案7】:

      问题背景:我将数据库服务器从 t2.micro 升级到更大的实例,而没有停止数据库服务。作为回报,它创建了这个锁文件并抛出了这个错误, mongod 已死,但 subsys 已锁定 在此之后我无法使用 mongo shell。

      如果您有足够的磁盘空间。然后按照这些步骤,

      1.sudo mongod (如果您发现以下失败原因)

      Failed to unlink socket file /tmp/mongodb-27017.sock Operation not permitted)
      
      1. 进入/tmp/目录

      2. 删除 mongodb-27017.sock 文件

      3. 使用 sudo service mongod restart

      4. 重启 mongod

      【讨论】:

        猜你喜欢
        • 2017-04-19
        • 1970-01-01
        • 2012-04-12
        • 1970-01-01
        • 2016-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多