Ich versuche, den Anweisungen der MongoDB-Dokumentation zu folgen, um LTH für eine Maschine ordnungsgemäß zu konfigurieren Ausführen von MongoDB.
Eine der Anweisungen besteht darin, ein Skript zu erstellen, das beim Booten ausgeführt wird. Leider wurden weder das vorgeschlagene Skript noch der ähnliche Code als a umgeschrieben systemd service funktioniert.
Beim Debuggen des Problems ist ein anderes aufgetreten. Bei der Ausführung:
root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled
der Befehl scheint erfolgreich ausgeführt zu werden, aber die Datei bleibt unverändert. Wenn ich also Folgendes ausführe:
root@demo:/# cat /sys/kernel/mm/transparent_hugepage/enabled
, wird der ursprüngliche Inhalt zurückgegeben:
always madvise [never]
Ich habe versucht, die Datei mit vim
zu ändern. Beim Versuch, die Datei zu speichern, wird beanstandet, dass Fsync fehlgeschlagen ist Während dieser Fehler dokumentiert wurde , ist in meinem Fall auf /
genügend Speicherplatz vorhanden (20% verwendet) , 7 GB verfügbar.) P. >
Ich führe den Befehl im Modus sudo
aus, und die Dateiberechtigungen scheinen korrekt zu sein:
-rw-r--r-- 1 root root 4096 ...
Die Das Verzeichnis /sys
ist auch nicht im schreibgeschützten Modus gemountet , wie gezeigt durch:
root@demo:/# grep sysfs /proc/mounts sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
Was passiert hier?
Antwort
sysfs
, das normalerweise auf /sys
gemountete Dateisystem, ist ein spezielles virtuelles Dateisystem für die Schnittstelle mit dem Linux-Kernel.
Die darin enthaltenen Dateien sind nicht“ Bei realen Dateien stellen sie Datenstrukturen im Kernel dar und unterstützen nur recht einfache Zugriffsmethoden. Das Lesen aus einer solchen Datei fragt den Kernel nach Informationen. Das Schreiben in eine solche Datei weist den Kernel an, eine Einstellung zu ändern oder eine Aktion auszuführen.
Aus diesem Grund schlägt vim
fehl. Er versucht, auf die virtuellen Dateien in zuzugreifen Für echte Dateien optimierte Methoden, die auf sysfs
nicht unterstützt werden.
Ihr erster Befehl
root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled
war bereits erfolgreich!
Viele sysfs „-Dateien“, einschließlich /sys/kernel/mm/transparent_hugepage/enabled
, drucken nicht nur die aktuelle Einstellung beim Lesen, sondern alle möglichen Modi und verwenden Sie Klammern, um zu beschreiben, welcher von mehreren Modi stattdessen aktiv ist.
In Ihrem Fall steht never
in Klammern, sodass der Modus, den Sie mit echo
ist bereits aktiv:
always madvise [never]
Wenn Sie daran interessiert sind, wie sysfs
funktioniert, Sie können mehr darüber in Wikipedia oder in der Linux-Kerneldokumentation lesen .