Lorsque j'essaie d'exécuter mongod --dbpath=./data
J'obtiens l'erreur suivante:
2017-09-20T21:47:55.720+0200 I CONTROL [initandlisten] MongoDB starting : pid=20500 port=27017 dbpath=./data 64-bit Host=debian
2017-09-20T21:47:55.721+0200 I CONTROL [initandlisten] db version v3.2.11
2017-09-20T21:47:55.721+0200 I CONTROL [initandlisten] git version: 009580ad490190ba33d1c6253ebd8d91808923e4
2017-09-20T21:47:55.721+0200 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.2l 25 May 2017
2017-09-20T21:47:55.721+0200 I CONTROL [initandlisten] allocator: tcmalloc
2017-09-20T21:47:55.721+0200 I CONTROL [initandlisten] modules: none
2017-09-20T21:47:55.721+0200 I CONTROL [initandlisten] build environment:
2017-09-20T21:47:55.721+0200 I CONTROL [initandlisten] distarch: x86_64
2017-09-20T21:47:55.721+0200 I CONTROL [initandlisten] target_Arch: x86_64
2017-09-20T21:47:55.722+0200 I CONTROL [initandlisten] options: { storage: { dbPath: "./data" } }
2017-09-20T21:47:55.781+0200 I - [initandlisten] Detected data files in ./data created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2017-09-20T21:47:55.802+0200 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=1G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2017-09-20T21:47:55.894+0200 E STORAGE [initandlisten] WiredTiger (1) [1505936875:894516][20500:0x7f357e7c1cc0], file:WiredTiger.wt, connection: ./data/WiredTiger.wt: handle-open: open: Operation not permitted
2017-09-20T21:47:55.895+0200 I - [initandlisten] Assertion: 28595:1: Operation not permitted
2017-09-20T21:47:55.895+0200 I STORAGE [initandlisten] exception in initAndListen: 28595 1: Operation not permitted, terminating
2017-09-20T21:47:55.895+0200 I CONTROL [initandlisten] dbexit: rc: 100
Le contenu et les autorisations du ./data
le répertoire est le suivant:
drwxrwx--- 1 root vboxsf 4096 Sep 20 05:11 .
drwxrwx--- 1 root vboxsf 4096 Sep 20 22:07 ..
-rwxrwx--- 1 root vboxsf 36864 Sep 19 05:25 collection-0--661121965341019305.wt
-rwxrwx--- 1 root vboxsf 36864 Sep 19 05:26 collection-0--9187569579836644431.wt
-rwxrwx--- 1 root vboxsf 16384 Sep 19 05:24 collection-2--661121965341019305.wt
drwxrwx--- 1 root vboxsf 0 Sep 19 19:16 diagnostic.data
-rwxrwx--- 1 root vboxsf 16384 Sep 19 05:24 index-0-7518289071480072689.wt
-rwxrwx--- 1 root vboxsf 16384 Mar 1 2017 index-1-7518289071480072689.wt
-rwxrwx--- 1 root vboxsf 36864 Sep 19 05:26 index-2-7518289071480072689.wt
-rwxrwx--- 1 root vboxsf 36864 Sep 19 05:25 index-3-7518289071480072689.wt
drwxrwx--- 1 root vboxsf 0 Sep 20 05:12 journal
-rwxrwx--- 1 root vboxsf 36864 Sep 19 05:24 _mdb_catalog.wt
-rwxrwx--- 1 root vboxsf 0 Sep 20 05:11 mongod.lock
-rwxrwx--- 1 root vboxsf 36864 Sep 19 05:26 sizeStorer.wt
-rwxrwx--- 1 root vboxsf 95 Feb 23 2017 storage.bson
-rwxrwx--- 1 root vboxsf 49 Feb 23 2017 WiredTiger
-rwxrwx--- 1 root vboxsf 4096 Sep 19 05:24 WiredTigerLAS.wt
-rwxrwx--- 1 root vboxsf 21 Sep 20 04:49 WiredTiger.lock
-rwxrwx--- 1 root vboxsf 1000 Sep 19 05:27 WiredTiger.turtle
-rwxrwx--- 1 root vboxsf 61440 Sep 20 05:12 WiredTiger.wt
Mon utilisateur est dans le groupe vboxsf
.
Est-ce que quelqu'un sait pourquoi j'obtiens cette erreur ou ce que je peux faire pour résoudre ce problème?
Je dois noter que j'exécute Debian dans Virtual Box sur un hôte Windows 8.1. Le répertoire en question est un dossier partagé (d'où le groupe vboxsf
).
Connaître le problème avec mongod ... Cela ne fonctionne pas avec les dossiers partagés de VirtualBox. dbPath doit être local, NFS, SAN .. Quoi qu'il en soit quelque chose qui est monté ...
Un résumé des solutions possibles est répertorié ci-dessous pour votre commodité:
MongoDB fonctionnait parfaitement jusqu'au jour où il a généré un fichier de verrouillage et a cessé de démarrer avec l'erreur suivante:
Le correspondant accepté Réponse était:
En supposant que les autorisations sont correctes. Il peut s'agir d'un problème selinux, essayez:
setenforce 0
puis essayez de démarrer le serveur. Si le serveur démarre, vous devrez utiliser semanage pour définir le contexte approprié dans le dossier de données mongo
J'essaie de monter/data/db à partir de mon PC de développement Windows mais à chaque fois que j'essaye, Mongo se bloque car il ne semble pas avoir le bon MAIS:
- J'ai changé les paramètres de sécurité dans les fenêtres pour permettre à tout le monde de tout faire (accès complet)
- Si je monte dans un répertoire différent, cela fonctionne (le conteneur se lance et je peux écrire dans mon répertoire)
Une explication possible était:
Lien trouvé: les dossiers partagés de VirtualBox ne sont pas pris en charge par mongodb.
Apparemment, un utilisateur a trouvé une solution de contournement et l'a documentée comme suit:
Il fonctionne à l'aide d'un volume créé à l'aide du docker volume create --name = myvolume Le nom du volume est utilisé à la place du chemin local. C'est juste une solution de contournement. Pour être plus précis la ligne que j'ai utilisée dans mon cas:
docker volume create --name=mongodata docker run -d -p 27017:27017 -v mongodata:/data/db --name=mymongo mongodb:3.3
La première personne qui a écrit le problème avait déjà déterminé que cela ne fonctionnerait pas et était à la recherche d'une solution.
Mongo docs dit Par exemple, HGFS et les dossiers partagés de Virtual Box ne prennent pas en charge cette opération. https://docs.mongodb.com/manual/administration/production-notes/#fsync-on-directories
Je me demande s'il est possible de faire fonctionner le docker actuel pour Windows.
Il y avait un lien dans ce cas qui recommandait de régler le moteur de stockage mongodb:
Docker n'a-t-il pas l'intention de mettre en œuvre quelque chose comme ça?
Non pas maintenant. Vous pourrez peut-être modifier le moteur de stockage mongodb pour travailler sur un partage SMB: https://forums.docker.com/t/issues-with-mongo-with- volume-monté-pour-données/15085/4
Il existe plusieurs problèmes liés à MongoDB et aux serveurs virtuels sous Microsoft Windows, vous pouvez donc envisager d’exécuter votre MongoDB dans un environnement * nix.
2017-09-20T21:47:55.802+0200 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=1G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2017-09-20T21:47:55.894+0200 E STORAGE [initandlisten] WiredTiger (1) [1505936875:894516][20500:0x7f357e7c1cc0], file:WiredTiger.wt, connection: ./data/WiredTiger.wt: handle-open: open: Operation not permitted
2017-09-20T21:47:55.895+0200 I - [initandlisten] Assertion: 28595:1: Operation not permitted
2017-09-20T21:47:55.895+0200 I STORAGE [initandlisten] exception in initAndListen: 28595 1: Operation not permitted, terminating
2017-09-20T21:47:55.895+0200 I CONTROL [initandlisten] dbexit: rc: 100
Mr. @ o01, j'ai parcouru votre journal des erreurs, la vraie erreur est Impossible de démarrer le serveur. Le moteur de stockage par défaut wiredTiger
n'est pas disponible avec cette version de mongod
.
quel est votre chemin d'installation du serveur mongod
à partir de là, vous exécutez la commande mention ci-dessous.
Veuillez spécifier explicitement un autre moteur de stockage.
par exemple. mongod.exe --storageEngine = mmapv1
pour votre référence supplémentaire moteurs de stockage