Próbuję postępować zgodnie z instrukcjami dokumentacji MongoDB , aby poprawnie skonfigurować LTH dla maszyny uruchomienie MongoDB.
Jedna z instrukcji polega na utworzeniu skryptu uruchamianego podczas rozruchu. Niestety ani sugerowany skrypt, ani podobny kod nie zostały przepisane jako systemd działa.
Podczas debugowania problemu napotkałem inny. Kiedy wykonuję:
root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled
polecenie wygląda na to, że działa pomyślnie, ale plik pozostaje niezmieniony, więc jeśli następnie uruchomię:
root@demo:/# cat /sys/kernel/mm/transparent_hugepage/enabled
zwraca oryginalną treść:
always madvise [never]
Próbowałem zmodyfikować plik za pomocą vim
; podczas próby zapisania pliku narzeka, że Fsync nie powiodło się . Chociaż ten błąd został udokumentowany , w moim przypadku jest wystarczająco dużo miejsca na dysku /
(20% zajęte , Dostępne 7 GB.)
Uruchamiam polecenie w trybie sudo
i uprawnienia do pliku wydają się prawidłowe:
-rw-r--r-- 1 root root 4096 ...
Katalog /sys
nie jest zamontowany w trybie tylko do odczytu , jak pokazano:
root@demo:/# grep sysfs /proc/mounts sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
Co się tutaj dzieje?
Odpowiedź
sysfs
, system plików zwykle montowany na /sys
, jest specjalnym wirtualnym systemem plików do połączenia z jądrem Linuksa.
Pliki w nim zawarte są n” Prawdziwe pliki, reprezentują struktury danych w jądrze i obsługują tylko raczej proste metody dostępu. Czytanie z takiego pliku prosi jądro o informacje. Zapis do takiego pliku instruuje jądro, aby zmieniło ustawienie lub wykonało działanie.
Dlatego vim
kończy się niepowodzeniem. Próbuje uzyskać dostęp do wirtualnych plików w sposoby zoptymalizowane dla prawdziwych plików i nie jest „t obsługiwane na sysfs
.
Twoje pierwsze polecenie
root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled
już się udało!
Wiele „plików” sysfs, w tym /sys/kernel/mm/transparent_hugepage/enabled
, nie drukuje tylko aktualnych ustawień podczas odczytu, ale wypisuje wszystkie możliwe tryby i użyj nawiasów, aby opisać, który z wielu trybów jest aktywny.
W twoim przypadku never
jest w nawiasach, więc tryb, który próbujesz aktywować za pomocą echo
jest już aktywny:
always madvise [never]
Jeśli „interesuje Cię, jak sysfs
działa, więcej na ten temat możesz przeczytać w Wikipedii lub w dokumentacji jądra Linuksa .