Încerc să urmez instrucțiuni de documentare MongoDB pentru a configura LTH corect pentru o mașină rularea MongoDB.
Una dintre instrucțiuni constă în crearea unui script care rulează la pornire. Din păcate, nici scriptul sugerat, nici codul similar rescris ca serviciul systemd funcționează.
La depanarea problemei, am întâlnit o altă problemă. Când execut:
root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled
comanda pare să ruleze cu succes, dar fișierul rămâne neschimbat, așa că dacă apoi rulez:
root@demo:/# cat /sys/kernel/mm/transparent_hugepage/enabled
returnează conținutul original:
always madvise [never]
Am încercat să modific fișierul cu vim
; când am încercat să salvez fișierul, se plânge că Fsync a eșuat . În timp ce această eroare a fost documentată , în cazul meu, există suficient spațiu pe disc pe /
(20% folosit , 7 GB disponibile.)
Execut comanda în modul sudo
, iar permisiunile fișierelor par corecte:
-rw-r--r-- 1 root root 4096 ...
/sys
directorul nu este montat nici în modul de citire , așa cum se arată în:
root@demo:/# grep sysfs /proc/mounts sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
Ce se întâmplă aici?
Răspuns
sysfs
, sistemul de fișiere montat de obicei pe /sys
, este un sistem de fișiere virtuale special pentru interfață cu nucleul Linux.
Fișierele din acesta nu sunt” Fișiere reale, ele reprezintă structuri de date în nucleu și acceptă doar metode de acces destul de simple. Citirea dintr-un astfel de fișier solicită kernelului informații. Scrierea într-un astfel de fișier instruiește nucleul să schimbe o setare sau să efectueze o acțiune.
Acesta este motivul pentru care vim
eșuează. Încearcă să acceseze fișierele virtuale din moduri optimizate pentru fișiere reale și acest lucru nu este acceptat pe sysfs
.
Prima comandă
root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled
a avut deja succes!
Multe „fișiere” sysfs, inclusiv /sys/kernel/mm/transparent_hugepage/enabled
, nu tipăriți setarea curentă numai când este citită, dar tipăriți toate posibilele moduri și utilizați paranteze pentru a descrie care dintre modurile multiple este activ în schimb.
În cazul dvs. never
este între paranteze, deci modul pe care ați încercat să îl activați cu echo
este deja activ:
always madvise [never]
Dacă „vă interesează cum sysfs
funcționează, puteți citi mai multe despre aceasta pe Wikipedia sau în documentația kernel-ului Linux .