为什么得到错误mongod死了,但是锁定并且Linux上的日志文件的可用空间不足?

Dee*_*epu 67 linux journal mongodb

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

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

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

logpath=/var/log/mongo/mongod.log
port=27017
dbpath=/var/lib/mongo
Run Code Online (Sandbox Code Playgroud)

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

service mongod start and
mongo
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

当我执行命令时 -

service mongod status
Run Code Online (Sandbox Code Playgroud)

它给出错误 -

mongod dead but subsys locked
Run Code Online (Sandbox Code Playgroud)

请帮我解决mongod死的问题,但是锁定并且期刊的可用空间不足,终止

And*_*nak 87

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

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

storage:
   mmapv1:
      smallFiles: true
Run Code Online (Sandbox Code Playgroud)

适用于2.6+版本

storage:
   smallFiles: true
Run Code Online (Sandbox Code Playgroud)

适用于2.4及更低版本

smallfiles = true
Run Code Online (Sandbox Code Playgroud)

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

mongod -f /etc/mongodb.conf
Run Code Online (Sandbox Code Playgroud)

文档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.
Run Code Online (Sandbox Code Playgroud)

  • 我正在运行3.0.2版本,上面的配置引发了一个错误,我不得不做`smallfiles = true`来使它工作. (2认同)

小智 55

mongod使用以下命令启动实例

mongod --dbpath /data/db --smallfiles
Run Code Online (Sandbox Code Playgroud)


Jai*_*oya 11

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

使用后

$sudo service mongod start
Run Code Online (Sandbox Code Playgroud)

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

/var/log/mongodb/mongod.log
Run Code Online (Sandbox Code Playgroud)

这是我发现的问题:

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
Run Code Online (Sandbox Code Playgroud)

解:

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

smallfiles = true
Run Code Online (Sandbox Code Playgroud)

之后,我重新启动了mongod服务:

$sudo service mongod restart
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)