gpt4 book ai didi

mongodb - 使用Docker和Luster挂载的驱动器上的MongoDB “Unable to establish lock”错误

转载 作者:行者123 更新时间:2023-12-02 20:14:37 27 4
gpt4 key购买 nike

我正在尝试使用Docker通过主机上安装的驱动器将MongoDB实例容器化。

使用mongo:latest图片:

[user@dcos-master ~]$ docker run -d --name mongo -v /local/cluster/drive:/data/db mongo:latest

但是不断失败:
exception in initAndListen: 98 Unable to lock file: /data/db/mongod.lock Function not implemented. Is a mongod instance already running?, terminating

认为这是一个权限问题,因此我尝试在主机目录上打开对777的权限,并且还只是以root用户身份运行mongod实例,因此遇到了同样的问题。

肯定没有另一个mongod实例正在运行并指向同一数据目录。

最后,有一点需要指出:唯一的共同点似乎是文件系统。 Mongod在Lustre驱动器上始终失败,但在其他任何文件系统上均未失败。如果我的源目录在NFS驱动器或其他任何设备上,则运行良好。

最佳答案

https://anilmaurya.wordpress.com/2015/05/06/abaqus-with-lustre-file-system/

默认情况下,光泽没有flock功能[1],在挂载[2]文件系统时必须添加“flock”选项才能使其工作[3]

[1]

$ touch temp
$ strace -e flock perl -e 'open(FH, "+< temp"); flock(FH, 2) or exit 1; sleep 1; close(FH);'
flock(3, LOCK_EX) = -1 ENOSYS (Function not implemented)
+++ exited with 1 +++

[2]

您必须卸载并挂载文件系统,因为lustre不支持 -o remount选项:
$ mount | grep /data
mgs@tcp:/data on /data type lustre (rw,lazystatfs)
$ mount -o remount,flock /data
$ mount | grep /data
mgs@tcp:/data on /data type lustre (rw,lazystatfs)

# umount /data
# mount -t lustre -o rw,flock mgs@tcp:/data /data
$ mount | grep /data
mgs@tcp:/data on /data type lustre (rw,flock,lazystatfs)

[3]
$ strace -e flock perl -e 'open(FH, "+< temp"); flock(FH, 2) or exit 1; sleep 1; close(FH);'
flock(3, LOCK_EX) = 0
+++ exited with 0 +++

关于mongodb - 使用Docker和Luster挂载的驱动器上的MongoDB “Unable to establish lock”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44417974/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com