W Part 13 z tej serii LFCS (Linux Foundation Certified Sysadmin) wyjaśniliśmy, jak używać GRUB do modyfikowania zachowania systemu poprzez przekazywanie opcji do jądra dla trwającego procesu uruchamiania.

Podobnie można użyć wiersza poleceń w działającym systemie Linux, aby zmienić niektóre parametry jądra środowiska wykonawczego jako jednorazową modyfikację lub na stałe, edytując plik konfiguracyjny.

W ten sposób możesz włączać lub wyłączać parametry jądra w locie bez większych trudności, gdy jest to potrzebne z powodu wymaganej zmiany sposobu działania systemu.

Przedstawiamy system plików /proc

Najnowsza specyfikacja Filesystem Hierarchy Standard wskazuje, że: /proc reprezentuje domyślną metodę obsługi informacji o procesie i systemie, a także innych informacji o jądrze i pamięci. W szczególności, /proc/sys to miejsce, w którym można znaleźć wszystkie informacje o urządzeniach, sterownikach i niektórych funkcjach jądra.

Rzeczywista struktura wewnętrzna /proc/sys zależy w dużym stopniu od używanego jądra, ale prawdopodobnie znajdziesz w nim następujące katalogi. Z kolei każdy z nich będzie zawierał inne podkatalogi, w których zachowane są wartości dla każdej kategorii parametrów:

  1. dev: parametry dla określonych urządzeń podłączonych do maszyny.
  2. fs: konfiguracja systemu plików (na przykład przydziały i i-węzły).
  3. jądro: konfiguracja specyficzna dla jądra.
  4. net: konfiguracja sieci.
  5. vm: użycie pamięci wirtualnej jądra.

Aby zmodyfikować parametry wykonawcze jądra, użyjemy sysctl. Dokładną liczbę parametrów, które można modyfikować, można wyświetlić za pomocą:

# sysctl -a | wc -l

Jeśli chcesz zobaczyć pełną listę parametrów jądra, po prostu wykonaj:

# sysctl -a 

Ponieważ wynik powyższego polecenia będzie składał się z DUŻO wierszy, możemy użyć potoku, a następnie mniej, aby dokładniej go sprawdzić:

# sysctl -a | less

Rzućmy okiem na kilka pierwszych linijek. Pamiętaj, że pierwsze znaki w każdym wierszu odpowiadają nazwom katalogów w środku /proc/sys:

Zrozumienie systemu plików Linux /proc

Na przykład podświetlona linia:

dev.cdrom.info = drive name:        	sr0

wskazuje, że sr0 to alias napędu optycznego. Innymi słowy, tak właśnie działa jądro sees ten dysk i używa tej nazwy, aby się do niego odnosić.

W dalszej części wyjaśnimy, jak zmienić inne more important parametry wykonawcze jądra w systemie Linux.

Jak zmienić lub zmodyfikować parametry wykonawcze jądra systemu Linux?

Na podstawie tego, co do tej pory wyjaśniliśmy, łatwo zauważyć, że nazwa parametru odpowiada strukturze katalogów wewnątrz /proc/sys gdzie można go znaleźć.

Na przykład:

dev.cdrom.autoclose → /proc/sys/dev/cdrom/autoclose
net.ipv4.ip_forward → /proc/sys/net/ipv4/ip_forward

Sprawdź parametry jądra Linux

To powiedziawszy, możemy wyświetlić wartość konkretnego parametru jądra Linuksa za pomocą: sysctl według nazwy parametru lub odczytu skojarzonego pliku:

# sysctl dev.cdrom.autoclose
# cat /proc/sys/dev/cdrom/autoclose
# sysctl net.ipv4.ip_forward
# cat /proc/sys/net/ipv4/ip_forward
Sprawdź parametry jądra Linux
Sprawdź parametry jądra Linux

Ustaw lub zmodyfikuj parametry jądra Linux

Aby ustawić wartość parametru jądra, możemy również użyć sysctlale używając -w a następnie nazwa parametru, znak równości i żądana wartość.

Inna metoda polega na użyciu echo aby nadpisać plik skojarzony z parametrem. Innymi słowy, poniższe metody są równoważne wyłączeniu funkcji przekazywania pakietów w naszym systemie (która, nawiasem mówiąc, powinna być domyślną wartością, gdy box nie ma przekazywać ruchu między sieciami):

# echo 0 > /proc/sys/net/ipv4/ip_forward
# sysctl -w net.ipv4.ip_forward=0

Należy zauważyć, że parametry jądra ustawiane za pomocą sysctl zostanie wymuszone tylko podczas bieżącej sesji i zniknie po ponownym uruchomieniu systemu.

Aby ustawić te wartości na stałe, edytuj /etc/sysctl.conf żądane wartości. Na przykład, aby wyłączyć przekazywanie pakietów w /etc/sysctl.conf upewnij się, że ta linia pojawia się w pliku:

net.ipv4.ip_forward=0

Następnie uruchom następujące polecenie, aby zastosować zmiany do bieżącej konfiguracji.

# sysctl -p

Inne przykłady ważnych parametrów wykonawczych jądra to:

fs.file-max określa maksymalną liczbę uchwytów plików, jakie jądro może przydzielić systemowi. W zależności od zamierzonego zastosowania systemu (sieć/baza danych/serwer plików, żeby wymienić kilka przykładów), możesz zmienić tę wartość, aby spełnić wymagania systemu.

W przeciwnym razie otrzymasz Too many open files w najlepszym razie komunikat o błędzie, a w najgorszym może uniemożliwić uruchomienie systemu operacyjnego.

Jeśli z powodu niewinnego błędu znajdziesz się w tej ostatniej sytuacji, uruchom komputer w trybie pojedynczego użytkownika (jak wyjaśniono w części 13 – Konfiguracja i rozwiązywanie problemów z programem ładującym Linux Grub Boot Loader) i edytuj /etc/sysctl.conf zgodnie z wcześniejszą instrukcją. Aby ustawić to samo ograniczenie dla poszczególnych użytkowników, zapoznaj się z częścią 14 — Monitorowanie i ustawianie limitów wykorzystania procesów w systemie Linux z tej serii.

kernel.sysrq służy do włączania SysRq na klawiaturze (znanej również jako klawisz ekranu drukowania), aby umożliwić niektórym kombinacjom klawiszy wywoływanie działań awaryjnych, gdy system przestanie odpowiadać.

Wartość domyślna (16) wskazuje, że system będzie honorował Alt+SysRq+key i wykonaj czynności wymienione w sysrq.c dokumentacja znaleziona w kernel.org (gdzie klucz to jedna litera z zakresu bz). Na przykład, Alt+SysRq+b wymusi ponowne uruchomienie systemu (użyj tego w ostateczności, jeśli serwer nie odpowiada).

Ostrzeżenie! Nie próbuj naciskać tej kombinacji klawiszy na maszynie wirtualnej, ponieważ może to wymusić ponowne uruchomienie systemu hosta!

Po ustawieniu na 1, net.ipv4.icmp_echo_ignore_all zignoruje żądania ping i usunie je na poziomie jądra. Jest to pokazane na poniższym obrazku – zwróć uwagę, jak żądania ping są tracone po ustawieniu tego parametru jądra:

Blokuj żądania ping w systemie Linux
Blokuj żądania ping w systemie Linux

Lepszym i łatwiejszym sposobem na ustawienie indywidualnych parametrów runtime jest użycie .confs w środku /etc/sysctl.dgrupując je według kategorii.

Na przykład zamiast ustawienia net.ipv4.ip_forward=0 oraz net.ipv4.icmp_echo_ignore_all=1 w /etc/sysctl.confmożemy utworzyć nowy plik o nazwie net.conf w środku /etc/sysctl.d:

# echo "net.ipv4.ip_forward=0" > /etc/sysctl.d/net.conf
# echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.d/net.conf

Jeśli zdecydujesz się skorzystać z tego podejścia, nie zapomnij usunąć tych samych linii z /etc/sysctl.conf.

Streszczenie

W tym artykule wyjaśniliśmy, jak modyfikować parametry wykonawcze jądra, zarówno trwałe, jak i nietrwałe, używając sysctl, /etc/sysctl.confi pliki w środku /etc/sysctl.d.

w sysctl w dokumentacji można znaleźć więcej informacji na temat znaczenia większej liczby zmiennych. Pliki te stanowią najbardziej kompletne źródło dokumentacji na temat parametrów, które można ustawić za pomocą sysctl.

Czy ten artykuł był przydatny? Mamy nadzieję, że tak. Nie wahaj się dać nam znać, jeśli masz jakieś pytania lub sugestie dotyczące ulepszenia.