Jeg prøver å følge MongoDB-dokumentasjonsinstruksjoner for å konfigurere LTH riktig for en maskin kjører MongoDB.

En av instruksjonene består i å lage et skript som kjører ved oppstart. Dessverre ble verken det foreslåtte skriptet eller den lignende koden omskrevet som en systemtjeneste fungerer.

Når jeg feilsøker problemet, møtte jeg en annen. Når jeg utfører:

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

kommandoen ser ut til å kjøre vellykket, men filen forblir uendret, så hvis jeg kjører:

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

returnerer det det opprinnelige innholdet:

always madvise [never] 

Jeg prøvde å endre filen med vim. Når jeg prøver å lagre filen, klager den over at Fsync mislyktes Mens denne feilen er dokumentert , er det i mitt tilfelle nok diskplass på / (20% brukt , 7 GB tilgjengelig.)

Jeg kjører kommandoen i sudo -modus, og filtillatelsene virker riktige:

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

The /sys katalogen er heller ikke montert i skrivebeskyttet modus , som vist av:

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

Hva skjer her?

Svar

sysfs, filsystemet som vanligvis er montert på /sys, er et spesielt virtuelt filsystem for grensesnitt med Linux-kjernen.

Filene i det er ikke» ekte filer, de representerer datastrukturer i kjernen og støtter bare ganske enkle tilgangsmetoder. Lesing fra en slik fil ber kjernen om informasjon. Å skrive til en slik fil instruerer kjernen om å endre en innstilling eller utføre en handling.

Det er derfor vim mislykkes. Den prøver å få tilgang til de virtuelle filene i måter optimalisert for ekte filer, og dette støttes ikke på sysfs.

Din første kommando

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

var allerede vellykket!

Mange sysfs «filer», inkludert /sys/kernel/mm/transparent_hugepage/enabled, skriver ikke bare ut gjeldende innstilling når du leser, men skriver ut alt mulig moduser og bruk parentes for å beskrive hvilken av flere moduser som er aktiv i stedet.

I ditt tilfelle er never i parentes, så modusen du prøvde å aktivere med echo er allerede aktiv:

always madvise [never] 

Hvis du er interessert i hvordan sysfs fungerer, kan du lese mer om det på Wikipedia eller i Linux-kjernedokumentasjonen .

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *