MongoDB使用Docker和Lustre装载驱动器时出现“无法build立locking”错误

我正在尝试使用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/

默认情况下,lustre没有flockfunction[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]

你不得不卸载和安装文件系统光泽不支持-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 +++ 
Interesting Posts