web-dev-qa-db-ja.com

NTFSドライブで動作するようにmongo DBを構成する

2つのパーティション(WindowsのNTFSとUbintuのext4)とWindowsとUbuntuの間で共有される2TB NTFS HDDの120 GB SSDドライブがあります。

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フォルダーを含むドライブ全体に対する適切な権限(ファイルの場合はrwx、ディレクトリの場合はmongodb)があります。

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

ext4ドライブで同じ構成(mongodbフォルダーのアクセス許可を含む)でmongodbを実行しても問題はありません。

この問題を解決する方法はありますか、私の唯一のオプションはext4パーティションをHDDドライブに追加することですか?

2

これを自分でレプリケートすると、指定したマウントオプションを使用してmongodbユーザーがNTFSボリュームに書き込むことができるように見えますが、これらによって許可されていないファイルに対してMongoDBが実行しようとしている特定のことがありますオプション;おそらく、ファイルにumaskまたは所有権を希望どおりに設定することはできません。

解決策は、所有者を明示的に指定するのではなく、NTFSボリュームをマウントするときにpermissionsオプションを使用することです。詳細については、 ntfs-3g manページを参照してください。

したがって、/etc/fstabは次のようになります。

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

/media/B400515500512022にマウントされた新しいNTFSボリュームで、次を実行できます。

Sudo mkdir /media/B400515500512022/mongodb
Sudo chown mongodb:mongodb /media/B400515500512022/mongodb

実行する前に:

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

Windowsからファイルにアクセスするときに、これが問題を引き起こさないことを確認することができます。

3
David Edwards

一時的な解決策として、mongodb upstartスクリプトを再構成しました。 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を実行するのは良い解決策ではないため、同様の問題を防ぐためにHDDドライブをパーティション分割すると思います。

0