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 .