Snažím se podle pokynů k dokumentaci MongoDB správně nakonfigurovat LTH pro stroj spuštěním MongoDB.
Jedna z pokynů spočívá ve vytvoření skriptu, který běží při bootování. Bohužel ani navrhovaný skript, ani podobný kód nebyl přepsán jako služba systemd funguje.
Při ladění problému jsem narazil na další. Když spustím:
root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled
příkaz Zdá se, že běží úspěšně, ale soubor zůstane beze změny, takže pokud spustím:
root@demo:/# cat /sys/kernel/mm/transparent_hugepage/enabled
vrátí původní obsah:
always madvise [never]
Pokusil jsem se upravit soubor pomocí vim
; při pokusu o uložení souboru si stěžuje, že Fsync selhal . Zatímco byla tato chyba zdokumentována , v mém případě je na disku /
dostatek místa (20% použito) , 7 GB k dispozici.)
Spustím příkaz v režimu sudo
a oprávnění k souboru se zdají správná:
-rw-r--r-- 1 root root 4096 ...
The /sys
adresář není připojen v režimu jen pro čtení , jak ukazuje:
root@demo:/# grep sysfs /proc/mounts sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
Co se to tady děje?
Odpověď
sysfs
, souborový systém obvykle připojený k /sys
, je speciální virtuální souborový systém pro propojení s linuxovým jádrem.
Soubory v něm nejsou“ Skutečné soubory představují datové struktury v jádře a podporují pouze poměrně jednoduché přístupové metody. Čtení z takového souboru vyžaduje jádro o informace. Zápis do takového souboru dává jádru pokyn, aby změnil nastavení nebo provedl akci.
Proto vim
selže. Pokouší se o přístup k virtuálním souborům v způsoby optimalizované pro skutečné soubory a toto není podporováno v sysfs
.
Váš první příkaz
root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled
již bylo úspěšné!
Mnoho „souborů“ sysfs, včetně /sys/kernel/mm/transparent_hugepage/enabled
, nevytiskne aktuální nastavení pouze při čtení, ale vytiskne vše možné režimy a pomocí závorek popište, který z více režimů je místo toho aktivní.
Ve vašem případě je never
v závorkách, takže režim, který jste se pokusili aktivovat pomocí echo
je již aktivní:
always madvise [never]
Pokud vás zajímá, jak sysfs
funguje, více si o něm můžete přečíst na Wikipedii nebo v dokumentaci k jádru systému Linux .