Warum Fehler mongod tot, aber subsys gesperrt und nicht genügend freier Speicherplatz für Journaldateien unter Linux?

68

Ich habe mongo-10gen mongo-10gen-server auf Linux CentOS Server installiert .

Ich folgte den Schritten von Link .

Ich habe /etc/mongod.conf als - konfiguriert

logpath=/var/log/mongo/mongod.log
port=27017
dbpath=/var/lib/mongo

Ich habe Port 27017 für Mongo in gesetzt iptables . Um Mongo zu starten, habe ich Befehle verwendet -

service mongod start and
mongo

Es hat gut angefangen, aber nach ein paar Tagen bekomme ich den Fehler -

Tue Jan 29 08:41:54 [initandlisten] ERROR: Insufficient free space for journal files
Tue Jan 29 08:41:54 [initandlisten] Please make at least 3379MB available in /var/lib/mongo/journal or use --smallfiles
Tue Jan 29 08:41:54 [initandlisten]
Tue Jan 29 08:41:54 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
Tue Jan 29 08:41:54 dbexit:
Tue Jan 29 08:41:54 [initandlisten] shutdown: going to close listening sockets...
Tue Jan 29 08:41:54 [initandlisten] shutdown: going to flush diaglog...
Tue Jan 29 08:41:54 [initandlisten] shutdown: going to close sockets...
Tue Jan 29 08:41:54 [initandlisten] shutdown: waiting for fs preallocator...
Tue Jan 29 08:41:54 [initandlisten] shutdown: lock for final commit...
Tue Jan 29 08:41:54 [initandlisten] shutdown: final commit...
Tue Jan 29 08:41:54 [initandlisten] shutdown: closing all files...
Tue Jan 29 08:41:54 [initandlisten] closeAllFiles() finished
Tue Jan 29 08:41:54 [initandlisten] journalCleanup...
Tue Jan 29 08:41:54 [initandlisten] removeJournalFiles
Tue Jan 29 08:41:54 [initandlisten] shutdown: removing fs lock...
Tue Jan 29 08:41:54 dbexit: really exiting now

Wenn ich den Befehl ausführe -

service mongod status

Es gibt Fehler -

mongod dead but subsys locked

Bitte helfen Sie mir, das Problem zu lösen, dass mongod tot, aber subsys gesperrt ist und nicht genügend freier Speicherplatz für Zeitschriften vorhanden ist

Deepu
quelle
9
Es zeigt Ihnen, dass Sie nicht über genügend freien Speicherplatz verfügen, um die benötigte /var/lib/mongo/journalDatei mit 3,3 GB zu erstellen , damit sie nicht gestartet werden kann.
JohnnyHK
Ich hatte genug Platz und bekam immer noch das Problem. Ich habe unten gepostet, was für mich funktioniert hat.
user3270763

Antworten:

88

Sie können der Konfigurationsdatei, die beim Ausführen bereitgestellt wird, Folgendes hinzufügen mongod --config mongod.conf

Für MongoDB 3.x (neueste Version)

storage:
   mmapv1:
      smallFiles: true

Für Version 2.6+

storage:
   smallFiles: true

Für Version 2.4 und weniger

smallfiles = true

Führen Sie dann einfach mongod aus, um Ihre Konfigurationsdatei zu akzeptieren (hier wird davon ausgegangen, dass der Speicherort der Konfiguration /etc/mongodb.conf ist ):

mongod -f /etc/mongodb.conf

Dokumentation für den Parameter smallfiles :

Set to true to modify MongoDB to use a smaller default data file size. 
Specifically, smallfiles reduces the initial size for data files and
limits them to 512 megabytes. The smallfiles setting also reduces the
size of each journal files from 1 gigabyte to 128 megabytes.
Andrei Karpushonak
quelle
@Andrei Karpushonak Wo ist die Konfigurationsdatei? zu samllfiles = true
einrichten
Abhängig von Ihrem Betriebssystem ist es unter Linux /etc/mongodb.conf
Andrei Karpushonak
Fehler beim Parsen der INI-Konfigurationsdatei: Nicht erkannte Zeile in 'Speicher:' Versuchen Sie 'mongod --help' für weitere Informationen
Thoman
2
Ich verwende die Version 3.0.2 und die obige Konfiguration hat einen Fehler ausgelöst. Ich musste tun smallfiles=true, damit es funktioniert.
Rakesh Sankar
Ok, nicht genug freier Speicherplatz, um die Datei / var / lib / mongo / journal mit => 3,3 GB <= zu erstellen
Rémi Becheras
55

Starten Sie die mongodInstanz mit dem folgenden Befehl

mongod --dbpath /data/db --smallfiles
Rajkumar Singh
quelle
1
Ok, nicht genug freier Speicherplatz, um die Datei / var / lib / mongo / journal mit => 3,3 GB <= zu erstellen
Rémi Becheras
11

Ich folgte dem offiziellen Leitfaden unter http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

Nach dem Gebrauch

$sudo service mongod start

Ich habe überprüft, ob MongoDB erfolgreich gestartet wurde, indem ich dieses Protokoll überprüft habe:

/var/log/mongodb/mongod.log

Dies ist das Problem, das ich gefunden habe:

2014-11-11T12:54:05.808-0500 [initandlisten] ERROR: Insufficient free space for journal files
2014-11-11T12:54:05.808-0500 [initandlisten] Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles
2014-11-11T12:54:05.808-0500 [initandlisten]
2014-11-11T12:54:05.808-0500 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
2014-11-11T12:54:05.808-0500 [initandlisten] dbexit:
2014-11-11T12:54:05.808-0500 [initandlisten] shutdown: going to close listening sockets...
2014-11-11T12:54:05.808-0500 [initandlisten] shutdown: going to flush diaglog...
2014-11-11T12:54:05.808-0500 [initandlisten] shutdown: going to close sockets...
2014-11-11T12:54:05.808-0500 [initandlisten] shutdown: waiting for fs preallocator...
2014-11-11T12:54:05.808-0500 [initandlisten] shutdown: lock for final commit...
2014-11-11T12:54:05.808-0500 [initandlisten] shutdown: final commit...
2014-11-11T12:54:05.808-0500 [initandlisten] shutdown: closing all files...
2014-11-11T12:54:05.808-0500 [initandlisten] closeAllFiles() finished
2014-11-11T12:54:05.808-0500 [initandlisten] journalCleanup...
2014-11-11T12:54:05.808-0500 [initandlisten] removeJournalFiles
2014-11-11T12:54:05.814-0500 [initandlisten] shutdown: removing fs lock...
2014-11-11T12:54:05.814-0500 [initandlisten] dbexit: really exiting now

Lösung:

Am Ende der Datei /etc/mongod.conf habe ich folgende Zeile hinzugefügt:

smallfiles = true

Danach habe ich den Mongod-Dienst neu gestartet:

$sudo service mongod restart

Als ich dann das Protokoll überprüfte, stellte ich fest, dass alles perfekt war und das Problem behoben war:

2014-11-11T22:32:20.544-0500 ***** SERVER RESTARTED *****
2014-11-11T22:32:20.552-0500 [initandlisten] MongoDB starting : pid=5200 port=27017 dbpath=/var/lib/mongodb 64-bit host=jaimemontoya-VirtualBox
2014-11-11T22:32:20.552-0500 [initandlisten] db version v2.6.5
2014-11-11T22:32:20.552-0500 [initandlisten] git version: e99d4fcb4279c0279796f237aa92fe3b64560bf6
2014-11-11T22:32:20.552-0500 [initandlisten] build info: Linux build8.nj1.10gen.cc 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49
2014-11-11T22:32:20.552-0500 [initandlisten] allocator: tcmalloc
2014-11-11T22:32:20.552-0500 [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1" }, storage: { dbPath: "/var/lib/mongodb", smallFiles: true }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
2014-11-11T22:32:20.564-0500 [initandlisten] journal dir=/var/lib/mongodb/journal
2014-11-11T22:32:20.564-0500 [initandlisten] recover : no journal files present, no recovery needed
2014-11-11T22:32:20.738-0500 [initandlisten] waiting for connections on port 27017
2014-11-11T22:33:20.748-0500 [clientcursormon] mem (MB) res:36 virt:245
2014-11-11T22:33:20.748-0500 [clientcursormon]  mapped (incl journal view):64
2014-11-11T22:33:20.748-0500 [clientcursormon]  connections:0
Jaime Montoya
quelle
1
Ok, nicht genug freier Speicherplatz, um die Datei / var / lib / mongo / journal mit => 3,3 GB <= zu erstellen
Rémi Becheras
Auf meinem System war die zu bearbeitende Datei /etc/mongodb.confanstelle von/etc/mongod.conf
jtlindsey
1

Für alle, die dieses Problem haben, obwohl genügend Speicherplatz für die Erstellung der Journaldatei vorhanden ist.

Mein Problem: Ich hatte mehr als genug Platz, um die Journaldatei zu erstellen. Mongo gab mir ein Verbindungsproblem. Ich habe den Befehl kill verwendet, um den Mongod-Prozess zu beenden, der mir wiederum das Subsys-Problem bescherte. Folgendes hat bei mir funktioniert:

Gehen Sie zu /var/lock/subsysund löschen Sie die Dateimongod

ab service mongod stopund zuservice mongod start

Mongo Shell jetzt gestartet und alles scheint gut zu laufen.

user3270763
quelle
0

zuerst

cd /usr/local/src/mongo/bin/<br>

dann

./mongod --dbpath /usr/local/src/mongo/data/db/ --smallfiles
user3831127
quelle
3
Dies kann das Problem lösen, aber es wäre schön, wenn Sie Ihrer Antwort eine Erklärung hinzufügen würden. Das erhöht den Wert Ihrer Antwort.
Amit
0

Nur eine Notiz, die mir geholfen hat. Es gab jedoch keine technischen Probleme im Zusammenhang mit Mongo. Es war nur der Platz des Systems nicht ausreichend. Das Löschen des Systemcaches hat für mich geklappt und Mongo lief wieder reibungslos.

yum clean all
Kunal Panchal
quelle
0

Problem Hintergrund: Ich habe den DB-Server von t2.micro auf die größere Instanz aktualisiert, ohne die Datenbankdienste zu stoppen . was im Gegenzug diese Sperrdatei erstellt und diesen Fehler ausgelöst hat , mongod tot, aber subsys gesperrt Danach konnte ich die mongo-Shell nicht mehr verwenden.

Wenn Sie genügend Speicherplatz haben . Folgen Sie dann diesen Schritten:

1. sudo mongod (wenn Sie unten einen fehlgeschlagenen Grund finden)

Failed to unlink socket file /tmp/mongodb-27017.sock Operation not permitted)
  1. Gehen Sie zum Verzeichnis / tmp /

  2. Entfernen Sie die Datei mongodb-27017.sock

  3. Starten Sie mongod mit sudo service mongod restart neu

Adeel
quelle