为什么在Linux上让错误mongod死机,但子系统被锁定,日志文件的可用空间不足?

为什么在Linux上让错误mongod死机,但子系统被锁定,日志文件的可用空间不足?,linux,mongodb,journal,Linux,Mongodb,Journal,我已在Linux CentOS服务器上安装了mongo-10gen-mongo-10gen-server 我沿着楼梯走 我已将/etc/mongod.conf配置为- logpath=/var/log/mongo/mongod.log port=27017 dbpath=/var/lib/mongo 我已在iptables中为mongo设置了端口27017。 要启动mongo,我使用命令- service mongod start and mongo 它开始得很好,但几天后我发现了错误- T

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

我沿着楼梯走

我已将/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死机但子系统锁定的问题,以及日志可用空间不足的问题,终止

您可以在运行
mongod--config mongod.conf

适用于MongoDB3.x(最新版本)

对于版本2.6+

storage:
   smallFiles: true
适用于2.4及以下版本

smallfiles = true
然后只需执行mongod以接受您的配置文件(这里它假定配置的位置是/etc/mongodb.conf):

对于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.

使用以下命令启动
mongod
实例

mongod --dbpath /data/db --smallfiles

我当时正在跟随官方的导游

使用后

$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
首先


适用于存在此问题的任何人,尽管有足够的空间创建日志文件。

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

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

现在
service mongod停止
,然后
service mongod启动


现在开始使用mongo shell,一切似乎都很好。

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

yum clean all

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

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

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

  • 转到/tmp/目录

  • 删除mongodb-27017.sock文件

  • 使用sudo服务mongod Restart重新启动mongod


  • 它告诉您,您没有足够的可用磁盘空间来创建它需要的3.3GB的
    /var/lib/mongo/journal
    文件,因此无法启动。我有足够的空间,但仍然存在问题。我已经在下面发布了对我有用的东西。@Andrei Karpushonak配置文件在哪里?要根据您的操作系统设置
    samllfiles=true
    ,Linux上的/etc/mongodb.conferer解析INI配置文件:“存储”中的未识别行:“请尝试“mongod--help”了解更多信息我正在运行3.0.2版本,上述配置引发错误,我必须做
    smallfiles=true
    来让它工作。好的,没有足够的可用磁盘空间来创建=>3.3GB的/var/lib/mongo/journal文件。这可能会解决问题,但如果您在回答中添加一些解释就好了。这将增加您的答案的值。确定没有足够的可用磁盘空间创建大于3.3GB的/var/lib/mongo/journal文件确定没有足够的可用磁盘空间在我的系统上创建大于3.3GB的/var/lib/mongo/journal文件要编辑的文件是
    /etc/mongodb.conf
    ,而不是
    /etc/mongod.conf
    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
    
    cd /usr/local/src/mongo/bin/<br>
    
    ./mongod --dbpath /usr/local/src/mongo/data/db/ --smallfiles
    
    yum clean all
    
    Failed to unlink socket file /tmp/mongodb-27017.sock Operation not permitted)