Jeg prøver at følge MongoDB-dokumentationsinstruktioner for at konfigurere LTH korrekt til en maskine kører MongoDB.

En af instruktionerne består i at oprette et script, der kører ved opstart. Desværre blev hverken det foreslåede script eller den lignende kode omskrevet som en systemtjeneste fungerer.

Når jeg fejler fejlen, stødte jeg på en anden. Når jeg udfører:

root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled 

kommandoen ser ud til at køre med succes, men filen forbliver uændret, så hvis jeg derefter kører:

root@demo:/# cat /sys/kernel/mm/transparent_hugepage/enabled 

returnerer det det oprindelige indhold:

always madvise [never] 

Jeg forsøgte at ændre filen med vim; når jeg prøver at gemme filen, klager den over, at Fsync mislykkedes Mens denne fejl er blevet dokumenteret , er der i mit tilfælde nok diskplads på / (20% brugt , 7 GB tilgængelig.)

Jeg kører kommandoen i sudo -tilstand, og filtilladelserne virker korrekte:

-rw-r--r-- 1 root root 4096 ... 

/sys -mappen er heller ikke monteret i skrivebeskyttet tilstand , som vist ved:

root@demo:/# grep sysfs /proc/mounts sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0 

Hvad sker der her?

Svar

sysfs, filsystemet, der normalt er monteret på /sys, er et specielt virtuelt filsystem, der skal interface til Linux-kernen.

Filerne i det er ikke” i virkelige filer repræsenterer de datastrukturer i kernen og understøtter kun ret enkle adgangsmetoder. Læsning fra en sådan fil beder kernen om information. At skrive til en sådan fil beder kernen om at ændre en indstilling eller udføre en handling.

Derfor mislykkes vim. Den forsøger at få adgang til de virtuelle filer i måder optimeret til rigtige filer, og dette understøttes ikke på sysfs.

Din første kommando

root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled 

var allerede vellykket!

Mange sysfs “filer”, inklusive /sys/kernel/mm/transparent_hugepage/enabled, udskriver ikke kun den aktuelle indstilling, når de læses, men udskriv alle mulige og brug parenteser til at beskrive, hvilken af flere tilstande der er aktiv i stedet.

I dit tilfælde er never i parentes, så den tilstand, du forsøgte at aktivere med echo er allerede aktiv:

always madvise [never] 

Hvis du er interesseret i hvordan sysfs fungerer, du kan læse mere om det på Wikipedia eller i Linux-kernedokumentation .

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *