配置 mongo DB 以使用 NTFS 驱动器

配置 mongo DB 以使用 NTFS 驱动器

我有 120 GB 的 SSD 驱动器,其中有两个分区(Windows 的 NTFS 和 Ubintu 的 ext4)以及在 Windows 和 Ubuntu 之间共享的 2TB NTFS HDD。

我将我的硬盘配置为在系统启动时正确安装:

# /etc/fstab: static file system information.
UUID=B400515500512022 /media/B400515500512022 ntfs-3g auto,users,uid=1000,gid=1001,fmask=113,dmask=002,utf8 0 0

我还创建了特殊组(gid=1001)来处理权限并向mongodb其中添加了用户:

ntfsdrive:x:1001:leonid,mongodb

因此,现在组对整个驱动器(包括文件夹)ntfsdrive拥有适当的权限(rw针对文件和目录) :rwxmongodb

drwxrwxr-x 1 leonid ntfsdrive       4096 Feb  6 12:51 mongodb

但 mongodb 仍然拒绝在此驱动器上运行:

Wed Feb  6 12:51:31 [initandlisten] MongoDB starting : pid=7480 port=27017 dbpath=/media/B400515500512022/mongodb 64-bit host=ubuntu
Wed Feb  6 12:51:31 [initandlisten] db version v2.2.3, pdfile version 4.5
Wed Feb  6 12:51:31 [initandlisten] git version: f570771a5d8a3846eb7586eaffcf4c2f4a96bf08
Wed Feb  6 12:51:31 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Wed Feb  6 12:51:31 [initandlisten] options: { config: "/etc/mongodb.conf", dbpath: "/media/B400515500512022/mongodb", logappend: "true", logpath: "/var/log/mongodb/mongodb.log" }
Wed Feb  6 12:51:31 [initandlisten] journal dir=/media/B400515500512022/mongodb/journal
Wed Feb  6 12:51:31 [initandlisten] recover : no journal files present, no recovery needed
Wed Feb  6 12:51:31 [initandlisten] info preallocateIsFaster couldn't run due to: couldn't open file /media/B400515500512022/mongodb/journal/tempLatencyTest for writing errno:1 Operation not permitted; returning false
Wed Feb  6 12:51:31 [initandlisten] exception in initAndListen: 13516 couldn't open file /media/B400515500512022/mongodb/journal/j._0 for writing errno:1 Operation not permitted, terminating
Wed Feb  6 12:51:31 dbexit: 
Wed Feb  6 12:51:31 [initandlisten] shutdown: going to close listening sockets...
Wed Feb  6 12:51:31 [initandlisten] shutdown: going to flush diaglog...
Wed Feb  6 12:51:31 [initandlisten] shutdown: going to close sockets...
Wed Feb  6 12:51:31 [initandlisten] shutdown: waiting for fs preallocator...
Wed Feb  6 12:51:31 [initandlisten] shutdown: lock for final commit...
Wed Feb  6 12:51:31 [initandlisten] shutdown: final commit...
Wed Feb  6 12:51:31 [initandlisten] shutdown: closing all files...
Wed Feb  6 12:51:31 [initandlisten] closeAllFiles() finished
Wed Feb  6 12:51:31 [initandlisten] journalCleanup...
Wed Feb  6 12:51:31 [initandlisten] removeJournalFiles
Wed Feb  6 12:51:31 [initandlisten] shutdown: removing fs lock...
Wed Feb  6 12:51:31 dbexit: really exiting now

mongodb我在我的驱动器上运行具有相同配置(包括文件夹权限)的mongodb 没有任何问题ext4

有没有办法解决这个问题,或者我唯一的选择就是给ext4我的硬盘驱动器添加分区?

答案1

我自己复制了此操作后,看来使用您指定的挂载选项允许用户mongodb写入 NTFS 卷,但 MongoDB 试图对这些文件执行一些这些选项不允许的特定操作;也许它无法按照它想要的方式设置其文件的 umask 或所有权。

解决方案是在挂载 NTFS 卷时使用该permissions选项,而不是明确指定所有者。请参阅ntfs-3g手册页以了解更多详细信息。

因此/etc/fstab看起来像这样:

UUID=B400515500512022 /media/B400515500512022 ntfs-3g defaults,locale=en_US.UTF-8,permissions 0 0

在安装于 的新 NTFS 卷上/media/B400515500512022,您可以运行:

sudo mkdir /media/B400515500512022/mongodb
sudo chown mongodb:mongodb /media/B400515500512022/mongodb

跑步前:

sudo -u mongodb mongod --dbpath /media/B400515500512022/mongodb

您可能希望检查这不会在从 Windows 访问文件时造成问题。

答案2

作为临时解决方案,我重新配置了mongodbupstart 脚本。我将其配置为mongodb使用我自己的用户而不是mongodb用户运行。

为此,我更改了/etc/init/mongodb.conf文件中的以下行:

if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --chuid mongodb --exec  /usr/bin/mongod -- --config /etc/mongodb.conf; fi

--chuid mongodb:ntfsdrive和选项都--chuid leonid导致了相同的错误,因此我完全--chuid从中删除了选项:

if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --exec  /usr/bin/mongod -- --config /etc/mongodb.conf; fi

使用我自己的用户运行mongodb不是一个好的解决方案,所以我想我会对我的硬盘驱动器进行分区以防止类似的问题。

相关内容