Kako promijeniti parametre vremena izvođenja jezgre na postojan i nepostojan način


U 13. dijelu ove serije LFCS (Linux Foundation Certified Sysadmin) objasnili smo kako koristiti GRUB za izmjenu ponašanja sustava prosljeđivanjem opcija kernelu za tekući proces pokretanja.

Slično, možete koristiti naredbeni redak u pokrenutom Linux sustavu za promjenu određenih parametara jezgre za vrijeme izvođenja kao jednokratnu izmjenu ili trajno uređivanjem konfiguracijske datoteke.

Stoga vam je dopušteno omogućiti ili onemogućiti parametre jezgre u hodu bez većih poteškoća kada je to potrebno zbog potrebne promjene u načinu na koji se očekuje da sustav radi.

Predstavljamo datotečni sustav /proc

Najnovija specifikacija hijerarhijskog standarda datotečnog sustava ukazuje da /proc predstavlja zadanu metodu za rukovanje informacijama o procesu i sustavu, kao i drugim informacijama o jezgri i memoriji. Konkretno, /proc/sys je mjesto gdje možete pronaći sve informacije o uređajima, upravljačkim programima i nekim značajkama kernela.

Stvarna unutarnja struktura /proc/sys uvelike ovisi o kernelu koji se koristi, ali vjerojatno ćete unutar njega pronaći sljedeće direktorije. Zauzvrat, svaki od njih će sadržavati druge poddirektorije u kojima se održavaju vrijednosti za svaku kategoriju parametra:

  1. dev: parametri za određene uređaje spojene na stroj.
  2. fs: konfiguracija datotečnog sustava (kvote i inodes, na primjer).
  3. kernel: konfiguracija specifična za kernel.
  4. net: konfiguracija mreže.
  5. vm: korištenje virtualne memorije kernela.

Za izmjenu parametara vremena izvođenja jezgre koristit ćemo naredbu sysctl. Točan broj parametara koji se mogu mijenjati može se vidjeti pomoću:

sysctl -a | wc -l

Ako želite vidjeti potpuni popis parametara kernela, samo učinite:

sysctl -a 

Budući da će se izlaz gornje naredbe sastojati od MNOGO redaka, možemo koristiti cjevovod nakon kojeg slijedi manje kako bismo ga pažljivije pregledali:

sysctl -a | less

Pogledajmo prvih nekoliko redaka. Imajte na umu da prvi znakovi u svakom retku odgovaraju imenima direktorija unutar /proc/sys:

Na primjer, označena linija:

dev.cdrom.info = drive name:        	sr0

označava da je sr0 alias za optički pogon. Drugim riječima, to je način na koji kernel “vidi” taj pogon i koristi to ime da bi ga nazvao.

U sljedećem odjeljku objasnit ćemo kako promijeniti druge "važnije" parametre vremena izvođenja jezgre u Linuxu.

Kako promijeniti ili modificirati parametre vremena izvođenja jezgre Linuxa

Na temelju onoga što smo do sada objasnili, lako je vidjeti da naziv parametra odgovara strukturi direktorija unutar /proc/sys gdje se može pronaći.

Na primjer:

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

Provjerite parametre jezgre Linuxa

Uz to, možemo vidjeti vrijednost određenog parametra jezgre Linuxa koristeći ili sysctl iza kojeg slijedi naziv parametra ili čitajući pridruženu datoteku:

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

Postavite ili izmijenite parametre jezgre Linuxa

Za postavljanje vrijednosti parametra jezgre također možemo koristiti sysctl, ali koristeći opciju -w nakon čega slijedi naziv parametra, znak jednakosti i željena vrijednost.

Druga metoda sastoji se od korištenja echo za brisanje datoteke povezane s parametrom. Drugim riječima, sljedeće su metode ekvivalentne onemogućavanju funkcionalnosti prosljeđivanja paketa u našem sustavu (što bi, usput rečeno, trebala biti zadana vrijednost kada kutija ne bi trebala prosljeđivati promet između mreža):

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

Važno je napomenuti da će parametri kernela koji su postavljeni pomoću sysctl biti nametnuti samo tijekom trenutne sesije i nestat će kada se sustav ponovno pokrene.

Za trajno postavljanje ovih vrijednosti uredite /etc/sysctl.conf sa željenim vrijednostima. Na primjer, da onemogućite prosljeđivanje paketa u /etc/sysctl.conf provjerite pojavljuje li se ovaj redak u datoteci:

net.ipv4.ip_forward=0

Zatim pokrenite sljedeću naredbu da biste primijenili promjene na pokrenutu konfiguraciju.

sysctl -p

Drugi primjeri važnih parametara vremena izvođenja jezgre su:

fs.file-max navodi maksimalni broj rukovanja datotekama koje kernel može dodijeliti sustavu. Ovisno o namjeravanoj upotrebi vašeg sustava (web/baza podataka/poslužitelj datoteka, da navedemo nekoliko primjera), možda ćete htjeti promijeniti ovu vrijednost kako bi zadovoljila potrebe sustava.

U suprotnom ćete u najboljem slučaju primiti poruku o pogrešci "Previše otvorenih datoteka", a u najgorem slučaju možete spriječiti pokretanje operativnog sustava.

Ako se zbog nedužne pogreške nađete u ovoj posljednjoj situaciji, pokrenite sustav u načinu rada za jednog korisnika (kao što je objašnjeno u Dijelu 13 – Konfiguracija i rješavanje problema s Linux Grub Boot Loaderom) i uredite /etc/sysctl.conf kao upućen ranije. Da biste postavili isto ograničenje za svakog korisnika, pogledajte Dio 14 – Praćenje i postavljanje ograničenja upotrebe Linux procesa u ovoj seriji.

kernel.sysrq se koristi za omogućavanje tipke SysRq na vašoj tipkovnici (također poznate kao tipka za ispis ekrana) kako bi se omogućile određene kombinacije tipki za pozivanje hitnih radnji kada sustav ne reagira.

Zadana vrijednost (16) označava da će sustav poštovati kombinaciju Alt+SysRq+tipka i izvršiti radnje navedene u sysrq.c dokumentacija pronađena na kernel.org (gdje je ključ jedno slovo u b-z rasponu). Na primjer, Alt+SysRq+b prisilno će ponovno pokrenuti sustav (koristite ovo kao posljednje sredstvo ako vaš poslužitelj ne reagira).

Upozorenje! Ne pokušavajte pritisnuti ovu kombinaciju tipki na virtualnom računalu jer bi to moglo prisiliti vaš glavni sustav na ponovno pokretanje!

Kada je postavljen na 1, net.ipv4.icmp_echo_ignore_all će zanemariti ping zahtjeve i odbaciti ih na razini kernela. Ovo je prikazano na donjoj slici – imajte na umu kako se ping zahtjevi gube nakon postavljanja ovog parametra kernela:

Bolji i lakši način postavljanja pojedinačnih parametara vremena izvođenja je korištenje datoteka .conf unutar /etc/sysctl.d, grupirajući ih po kategorijama.

Na primjer, umjesto postavljanja net.ipv4.ip_forward=0 i net.ipv4.icmp_echo_ignore_all=1 u /etc/sysctl.conf, možemo stvoriti novu datoteku pod nazivom net.conf unutar /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

Ako odlučite koristiti ovaj pristup, ne zaboravite ukloniti te iste retke iz /etc/sysctl.conf.

Sažetak

U ovom smo članku objasnili kako izmijeniti parametre vremena izvođenja jezgre, postojane i nepostojane, koristeći sysctl, /etc/sysctl.conf i datoteke unutar / itd/sysctl.d.

U sysctl dokumentima možete pronaći više informacija o značenju više varijabli. Te datoteke predstavljaju najpotpuniji izvor dokumentacije o parametrima koji se mogu postaviti preko sysctl-a.

Jeste li smatrali ovaj članak korisnim? Nadamo se da jeste. Ne ustručavajte se javiti nam ako imate pitanja ili prijedloga za poboljšanje.