Wyszukiwanie w witrynie

Jak zmieniać parametry wykonawcze jądra w sposób trwały i nietrwały


W Części 13 tej serii LFCS (Linux Foundation Certified Sysadmin) wyjaśniliśmy, jak używać GRUB-a do modyfikowania zachowania systemu poprzez przekazywanie opcji do jądra na potrzeby trwającego procesu uruchamiania.

Podobnie możesz użyć wiersza poleceń w działającym systemie Linux, aby zmienić pewne parametry jądra środowiska wykonawczego w ramach jednorazowej modyfikacji lub na stałe, edytując plik konfiguracyjny.

W ten sposób możesz włączać lub wyłączać parametry jądra na bieżąco, bez większych trudności, gdy jest to potrzebne ze względu na wymaganą zmianę w oczekiwanym sposobie działania systemu.

Przedstawiamy system plików /proc

Najnowsza specyfikacja standardu hierarchii systemów plików wskazuje, że /proc reprezentuje domyślną metodę obsługi informacji o procesach 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 wewnętrzna struktura /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 przechowywane są wartości dla poszczególnych kategorii parametrów:

  1. dev: parametry dla konkretnych 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: wykorzystanie pamięci wirtualnej jądra.

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

sysctl -a | wc -l

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

sysctl -a 

Ponieważ wynik powyższego polecenia będzie się składał z DUŻO linii, możemy użyć potoku, po którym następuje less, aby dokładniej 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 /proc/sys:

Na przykład podświetlona linia:

dev.cdrom.info = drive name:        	sr0

wskazuje, że sr0 jest aliasem napędu optycznego. Innymi słowy, w ten sposób jądro „widzi” ten dysk i używa tej nazwy, aby się do niego odnieść.

W poniższej sekcji wyjaśnimy, jak zmienić inne „ważniejsze” parametry środowiska wykonawczego jądra w systemie Linux.

Jak zmienić lub zmodyfikować parametry środowiska wykonawczego jądra systemu Linux

W oparciu o to, co wyjaśniliśmy do tej pory, ł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, używając albo sysctl, po którym następuje nazwa parametru, albo czytając powiązany plik:

sysctl dev.cdrom.autoclose
cat /proc/sys/dev/cdrom/autoclose
sysctl net.ipv4.ip_forward
cat /proc/sys/net/ipv4/ip_forward

Ustaw lub zmodyfikuj parametry jądra systemu Linux

Aby ustawić wartość parametru jądra, możemy również użyć sysctl, ale używając opcji -w, po której następuje nazwa parametru, znak równości i żądana wartość.

Inna metoda polega na użyciu echo do nadpisania pliku powiązanego z parametrem. Innymi słowy, poniższe metody są równoznaczne z wyłączeniem funkcji przekazywania pakietów w naszym systemie (która, nawiasem mówiąc, powinna być wartością domyślną, gdy skrzynka nie ma przepuszczać ruchu między sieciami):

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

Należy pamiętać, że parametry jądra ustawione za pomocą sysctl będą egzekwowane tylko podczas bieżącej sesji i znikną po ponownym uruchomieniu systemu.

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

net.ipv4.ip_forward=0

Następnie uruchom następujące polecenie, aby zastosować zmiany w działają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, które jądro może przydzielić systemowi. W zależności od przeznaczenia systemu (sieć WWW/baza danych/serwer plików, żeby wymienić tylko kilka przykładów), możesz chcieć zmienić tę wartość, aby spełnić potrzeby systemu.

W przeciwnym razie w najlepszym przypadku zostanie wyświetlony komunikat o błędzie „Zbyt wiele otwartych plików”, a w najgorszym możesz 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 – Konfigurowanie i rozwiązywanie problemów z programem ładującym Grub Boot w systemie Linux) i edytuj plik /etc/sysctl.conf jako poinstruowano wcześniej. Aby ustawić to samo ograniczenie dla poszczególnych użytkowników, zapoznaj się z częścią 14 – Monitoruj i ustawiaj wykorzystanie limitów procesów systemu Linux z tej serii.

kernel.sysrq służy do włączania klawisza SysRq na klawiaturze (znanego również jako klawisz drukowania na ekranie), aby umożliwić określonym kombinacjom klawiszy wywoływanie działań awaryjnych, gdy system przestał reagować.

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

Uwaga! 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 będzie ignorować żądania ping i odrzucać je na poziomie jądra. Pokazuje to poniższy obrazek – zwróć uwagę, jak żądania ping są tracone po ustawieniu tego parametru jądra:

Lepszym i łatwiejszym sposobem ustawienia indywidualnych parametrów wykonawczych jest użycie plików .conf w /etc/sysctl.d, grupujących je według kategorii.

Na przykład zamiast ustawiać net.ipv4.ip_forward=0 i net.ipv4.icmp_echo_ignore_all=1 w /etc/sysctl.conf, możemy utworzyć nowy plik o nazwie net.conf w /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, przy użyciu sysctl, /etc/sysctl.conf i plików wewnątrz / etc/sysctl.d.

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

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