Kako promijeniti parametre vremena izvođenja kernela na uporan i nepostojan način


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

Slično, možete koristiti komandnu liniju u pokrenutom Linux sistemu za promjenu određenih parametara kernela vremena izvođenja kao jednokratnu modifikaciju ili trajno uređivanjem konfiguracijske datoteke.

Stoga vam je dozvoljeno da u hodu omogućite ili onemogućite parametre kernela bez većih poteškoća kada je to potrebno zbog potrebne promjene u načinu na koji se očekuje da sistem radi.

Predstavljamo /proc sistem datoteka

Najnovija specifikacija Standarda hijerarhije sistema datoteka ukazuje da /proc predstavlja zadanu metodu za rukovanje procesnim i sistemskim informacijama, kao i drugim informacijama o kernelu i memoriji. Konkretno, /proc/sys je mjesto gdje možete pronaći sve informacije o uređajima, drajverima i nekim karakteristikama kernela.

Stvarna interna struktura /proc/sys uvelike zavisi od kernela koji se koristi, ali ćete verovatno pronaći sledeće direktorijume unutra. Zauzvrat, svaki od njih će sadržavati druge poddirektorije u kojima se održavaju vrijednosti za svaku kategoriju parametara:

  1. dev: parametri za određene uređaje povezane na mašinu.
  2. fs: konfiguracija sistema datoteka (kvote i inode, na primjer).
  3. kernel: konfiguracija specifična za kernel.
  4. net: mrežna konfiguracija.
  5. vm: korištenje virtuelne memorije kernela.

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

sysctl -a | wc -l

Ako želite vidjeti kompletnu listu parametara kernela, samo učinite:

sysctl -a 

Kako će se izlaz gornje naredbe sastojati od MNOGO redova, možemo koristiti cjevovod nakon kojeg slijedi manje da ga pažljivije pregledamo:

sysctl -a | less

Pogledajmo prvih nekoliko redova. Imajte na umu da se prvi znakovi u svakom redu podudaraju s imenima direktorija unutar /proc/sys:

Na primjer, istaknuta linija:

dev.cdrom.info = drive name:        	sr0

označava da je sr0 pseudonim za optičku disk jedinicu. Drugim riječima, na taj način kernel “vidi” taj pogon i koristi to ime da se odnosi na njega.

U sljedećem odjeljku ćemo objasniti kako promijeniti druge "važnije" parametre kernela runtimea u Linuxu.

Kako promijeniti ili modificirati Runtime parametre Linux kernela

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

Na primjer:

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

Provjerite parametre Linux kernela

Uz to, možemo vidjeti vrijednost određenog parametra jezgre Linuxa koristeći ili sysctl nakon čega slijedi ime 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 Linux kernela

Za postavljanje vrijednosti za parametar kernela možemo koristiti i sysctl, ali koristeći opciju -w i nakon toga ime parametra, znak jednakosti i željenu vrijednost.

Druga metoda se sastoji od korištenja echo za prepisivanje datoteke povezane s parametrom. Drugim riječima, sljedeće metode su ekvivalentne za onemogućavanje funkcionalnosti prosljeđivanja paketa u našem sistemu (koja bi, inače, trebala biti zadana vrijednost kada kutija ne bi trebalo da propušta 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 tokom trenutne sesije i nestat će kada se sistem ponovo pokrene.

Da biste trajno postavili ove vrijednosti, uredite /etc/sysctl.conf sa željenim vrijednostima. Na primjer, da onemogućite prosljeđivanje paketa u /etc/sysctl.conf provjerite da li se ovaj red pojavljuje u datoteci:

net.ipv4.ip_forward=0

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

sysctl -p

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

fs.file-max specificira maksimalan broj rukovanja datotekama koje kernel može dodijeliti sistemu. Ovisno o namjeravanoj upotrebi vašeg sistema (web/baza podataka/server datoteka, da navedemo nekoliko primjera), možda ćete htjeti promijeniti ovu vrijednost kako biste zadovoljili potrebe sistema.

U suprotnom ćete u najboljem slučaju dobiti poruku o grešci “Previše otvorenih datoteka”, a u najgorem slučaju možete spriječiti pokretanje operativnog sistema.

Ako se zbog nevine greške nađete u ovoj posljednjoj situaciji, pokrenite u jednom korisničkom modu (kao što je objašnjeno u 13. dijelu – Konfiguracija i rješavanje problema Linux Grub Boot Loadera) i uredite /etc/sysctl.conf kao ranije upućeno. Da biste postavili isto ograničenje za svakog korisnika, pogledajte dio 14 – Nadgledanje i postavljanje ograničenja korištenja Linux procesa u ovoj seriji.

kernel.sysrq se koristi za omogućavanje tipke SysRq na vašoj tastaturi (takođe poznatog kao print screen tipka) kako bi se omogućilo određenim kombinacijama tipki da izazovu hitne radnje kada sistem je postalo neodgovarajuće.

Zadana vrijednost (16) označava da će sistem poštovati kombinaciju Alt+SysRq+key i izvršiti radnje navedene u sysrq.c dokumentaciju koja se nalazi na kernel.org (gdje je ključ jedno slovo u opsegu b-z). Na primjer, Alt+SysRq+b će ponovo pokrenuti sistem nasilno (koristite ovo kao posljednje sredstvo ako vaš server ne reagira).

Upozorenje! Ne pokušavajte pritisnuti ovu kombinaciju tipki na virtuelnoj mašini jer to može natjerati vaš host sistem da se ponovo pokrene!

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

Bolji i lakši način za postavljanje pojedinačnih parametara vremena izvođenja je korištenje datoteka .conf unutar /etc/sysctl.d, grupisajuć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 kreirati novi fajl pod imenom 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 da koristite ovaj pristup, ne zaboravite da uklonite te iste linije iz /etc/sysctl.conf.

Sažetak

U ovom članku smo objasnili kako modificirati parametre vremena izvođenja kernela, trajne i nepostojane, koristeći sysctl, /etc/sysctl.conf i datoteke unutar / etc/sysctl.d.

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

Da li vam je ovaj članak bio koristan? Nadamo se da jeste. Ne ustručavajte se javiti nam ako imate bilo kakvih pitanja ili prijedloga za poboljšanje.