首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB未启动:无法创建/打开锁文件

MongoDB未启动:无法创建/打开锁文件
EN

Server Fault用户
提问于 2017-12-21 20:24:53
回答 2查看 4.2K关注 0票数 2

MongoDB已经跑了几个月,然后突然停了下来。

我跑了:

代码语言:javascript
复制
service mongod restart 
Restarting mongod (via systemctl):  Job for mongod.service failed because
the control process exited with error code. See "systemctl status mongod.service" 
and "journalctl -xe" for details

然后:

代码语言:javascript
复制
systemctl status mongod.service
mongod.service - SYSV: Mongo is a scalable, document-oriented database.
   Loaded: loaded (/etc/rc.d/init.d/mongod; bad; vendor preset: disabled)
   Active: failed (Result: exit-code) since Thu 2017-12-21 14:57:30 EST; 9s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 22675 ExecStop=/etc/rc.d/init.d/mongod stop (code=exited, status=0/SUCCESS)
  Process: 28515 ExecStart=/etc/rc.d/init.d/mongod start (code=exited, status=1/FAILURE)

systemd[1]: Starting SYSV: Mongo is a scalable, document-oriented database....
mongod[28515]: Error starting mongod. /var/run/mongodb/mongod.pid exists.
systemd[1]: mongod.service: control process exited, code=exited status=1
systemd[1]: Failed to start SYSV: Mongo is a scalable, document-oriented database..
systemd[1]: Unit mongod.service entered failed state.
systemd[1]: mongod.service failed.

我查了一下mongodb.log,得到了以下信息:

代码语言:javascript
复制
I CONTROL  ***** SERVER RESTARTED *****
I CONTROL  [initandlisten] MongoDB starting : pid=24312 port=27017 dbpath=/var/lib/mongo 64-bit host=server-11
I CONTROL  [initandlisten] db version v3.0.15
I CONTROL  [initandlisten] git version: b8ff507269c382bc100fc52f75f48d54cd42ec3b
I CONTROL  [initandlisten] allocator: tcmalloc
I CONTROL  [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1", port: 27017 }, processManagement: { fork: true, pidFilePath: "/var/run/mongodb/mongod.pid" }, storage: { dbPath: "/var/lib/mongo", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
I STORAGE  [initandlisten] exception in initAndListen: 98 Unable to create/open lock file: /var/lib/mongo/mongod.lock errno:28 No space left on device Is a mongod instance already running?, terminating
I CONTROL  [initandlisten] dbexit:  rc: 100

这很奇怪,因为运行df -h显示我仍然有很多空间:

代码语言:javascript
复制
[root@server-11 /]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       20G  4.4G   15G  24% /
devtmpfs        485M     0  485M   0% /dev
tmpfs           494M     0  494M   0% /dev/shm
tmpfs           494M   57M  438M  12% /run
tmpfs           494M     0  494M   0% /sys/fs/cgroup
tmpfs            99M     0   99M   0% /run/user/0

[root@server-11 /]# df -i
Filesystem      Inodes IUsed   IFree IUse% Mounted on
/dev/xvda1     1310720 68253 1242467    6% /
devtmpfs        123983   303  123680    1% /dev
tmpfs           126358     1  126357    1% /dev/shm
tmpfs           126358   495  125863    1% /run
tmpfs           126358    16  126342    1% /sys/fs/cgroup
tmpfs           126358     1  126357    1% /run/user/0

我还运行了ls -la /var/lib/mongo

代码语言:javascript
复制
total 376860
drwxr-xr-x.  3 mongod mongod      4096 Dec 21 16:18 .
drwxr-xr-x. 38 root   root        4096 Aug 17 13:25 ..
-rw-------.  1 mongod mongod  67108864 Aug 17 14:23 admin.0
-rw-------.  1 mongod mongod  16777216 Aug 17 14:23 admin.ns
drwxr-xr-x.  2 mongod mongod      4096 Dec 14 14:28 journal
-rw-------.  1 mongod mongod  67108864 Dec 20 16:59 learning_locker.0
-rw-------.  1 mongod mongod 134217728 Dec 20 16:59 learning_locker.1
-rw-------.  1 mongod mongod  16777216 Dec 20 16:59 learning_locker.ns
-rw-------.  1 mongod mongod  67108864 Dec 14 14:26 local.0
-rw-------.  1 mongod mongod  16777216 Dec 14 14:26 local.ns
-rw-r--r--.  1 mongod mongod        69 Aug 17 13:29 storage.bson

我用根用户安装了mongodb,并使用同一个用户重新启动了mongo。我不知道为什么它会突然改变。

EN

回答 2

Server Fault用户

发布于 2017-12-21 20:40:54

通常情况下,这条错误信息具有误导性。正如您所看到的,磁盘空间不是问题所在。

如果mongod失败并在清除锁文件(/var/lib/mongo/mongod.lock)之前死亡,那么锁文件仍然存在,新实例将无法创建新的锁文件,并将与此错误消息一起死亡。

要重新启动mongod,首先要确保没有运行mongod实例,删除锁文件并启动它。

这条消息的另一个原因是当您使用一个用户(例如mongod)启动mongod,并试图在另一个用户(www-datanobody)下再次启动它。在这种情况下,用户www-data将没有在锁目录上写入的权限。如果运行ls -la /var/lib/mongo,您可以看到哪个用户是该目录的所有者,以及是否使用正确的用户启动mongod

票数 2
EN

Server Fault用户

发布于 2019-01-06 22:31:25

苏丹restorecon -R /var/lib/mongo

我对磁盘或权限没有问题。我研究了一下,终于发现了那个小窍门。每次我有那个问题的时候都管用。每次更改该目录(链接或其他任何内容)时,都必须运行该目录。Jira.monGodb.org/浏览/DOCS-4170

票数 -2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/889265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档