Настройка mongo DB для работы с диском NTFS

У меня есть 120 ГБ SSD-накопитель с двумя разделами (NTFS с Windows и ext4 с Ubintu) и жесткий диск NTFS объемом 2 ТБ, общий для Windows и Ubuntu.

Я настроил мой жесткий диск для правильной установки при загрузке системы:

# /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 пользователя к нему:

[ 111]

Итак, теперь группа 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

У меня нет проблем с запуском mongodb с той же конфигурацией (включая права доступа к папке mongodb) на моем диске ext4.

Есть ли способ решить эту проблему, или мой единственный вариант - добавить раздел ext4 на мой жесткий диск?

2
задан 12 February 2013 в 13:02

2 ответа

После того, как я сам это воспроизвел, оказалось, что использование указанных вами параметров монтирования позволяет пользователю mongodb выполнять запись в том NTFS, но есть кое-что конкретное, что MongoDB пытается сделать с файлами, которые не разрешены этими опции; возможно, он не может установить umask или владельца для своих файлов именно так, как он хочет.

Решение состоит в том, чтобы использовать опцию permissions при монтировании тома NTFS, а не указывать владельца явно. Для получения дополнительной информации см. Справочную страницу 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

перед запуском: [ 1112]

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

Вы можете проверить, не вызывает ли это проблем при доступе к файлам из Windows.

0
ответ дан 12 February 2013 в 13:02

В качестве временного решения я переконфигурировал 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 с использованием моего собственного пользователя не является хорошим решением, поэтому я думаю, что разделю свой жесткий диск, чтобы предотвратить подобные проблемы.

0
ответ дан 12 February 2013 в 13:02

Другие вопросы по тегам:

Похожие вопросы: