Sto cercando di seguire le istruzioni della documentazione di MongoDB per configurare correttamente LTH per una macchina in esecuzione MongoDB.
Una delle istruzioni consiste nel creare uno script che viene eseguito allavvio. Sfortunatamente, né lo script suggerito, né il codice simile sono stati riscritti come Il servizio systemd funziona.
Durante il debug del problema, ne ho riscontrato un altro. Quando eseguo:
root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled
il comando sembra funzionare correttamente, ma il file rimane invariato, quindi se eseguo:
root@demo:/# cat /sys/kernel/mm/transparent_hugepage/enabled
restituisce il contenuto originale:
always madvise [never]
Ho provato a modificare il file con vim
; quando provo a salvare il file, si lamenta che Fsync non è riuscito . Sebbene questo errore sia stato documentato , nel mio caso cè abbastanza spazio su disco su /
(20% utilizzato , 7 GB disponibili.)
Eseguo il comando in modalità sudo
e le autorizzazioni del file sembrano corrette:
-rw-r--r-- 1 root root 4096 ...
Il La directory /sys
non è montata in modalità di sola lettura , come mostrato da:
root@demo:/# grep sysfs /proc/mounts sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
Che cosa sta succedendo qui?
Risposta
sysfs
, il filesystem solitamente montato su /sys
, è uno speciale filesystem virtuale per interfacciarsi con il kernel Linux.
I file in esso non sono” t file reali, rappresentano strutture di dati nel kernel e supportano solo metodi di accesso piuttosto semplici. La lettura da un file di questo tipo richiede informazioni al kernel. La scrittura su un file di questo tipo indica al kernel di modificare unimpostazione o di eseguire unazione.
Ecco perché vim
non riesce. Prova ad accedere ai file virtuali in modi ottimizzati per file reali e questo non è supportato su sysfs
.
Il tuo primo comando
root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled
ha già avuto successo!
Molti “file” sysfs, incluso /sys/kernel/mm/transparent_hugepage/enabled
, non stampano solo limpostazione corrente quando vengono letti, ma stampano tutto il possibile modalità e utilizza le parentesi per descrivere quale delle più modalità è invece attiva.
Nel tuo caso never
è tra parentesi, quindi la modalità che hai provato ad attivare con echo
è già attivo:
always madvise [never]
Se “sei interessato a come sysfs
funziona, puoi leggere ulteriori informazioni su Wikipedia o nella documentazione del kernel Linux .