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ドライブに追加することですか?
これを自分でレプリケートすると、指定したマウントオプションを使用して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からファイルにアクセスするときに、これが問題を引き起こさないことを確認することができます。
一時的な解決策として、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ドライブをパーティション分割すると思います。