Kaip nuolat ir nepaliaujamai pakeisti branduolio vykdymo laiko parametrus


Šios LFCS („Linux Foundation Certified Sysadmin“) serijos 13 dalyje paaiškinome, kaip naudoti GRUB sistemos veikimui modifikuoti perduodant branduoliui parinktis vykstančiam įkrovos procesui.

Panašiai galite naudoti komandų eilutę veikiančioje Linux sistemoje, kad pakeistumėte tam tikrus vykdymo laiko branduolio parametrus kaip vienkartinį pakeitimą arba visam laikui redaguodami konfigūracijos failą.

Taigi, jums leidžiama įjungti arba išjungti branduolio parametrus skrydžio metu be didelių sunkumų, kai to reikia dėl būtino sistemos veikimo būdo pakeitimo.

Pristatome /proc failų sistemą

Naujausia failų sistemos hierarchijos standarto specifikacija nurodo, kad /proc yra numatytasis proceso ir sistemos informacijos, taip pat kitos branduolio ir atminties informacijos tvarkymo metodas. Visų pirma, /proc/sys yra vieta, kur galite rasti visą informaciją apie įrenginius, tvarkykles ir kai kurias branduolio funkcijas.

Tikroji vidinė /proc/sys struktūra labai priklauso nuo naudojamo branduolio, tačiau tikėtina, kad viduje rasite šiuos katalogus. Savo ruožtu kiekviename iš jų bus kiti pakatalogiai, kuriuose išlaikomos kiekvienos parametrų kategorijos reikšmės:

  1. dev: konkrečių prie įrenginio prijungtų įrenginių parametrai.
  2. fs: failų sistemos konfigūracija (pvz., kvotos ir inodes).
  3. branduolys: branduolio konfigūracija.
  4. net: tinklo konfigūracija.
  5. vm: branduolio virtualios atminties naudojimas.

Norėdami modifikuoti branduolio vykdymo parametrus, naudosime komandą sysctl. Tikslų parametrų, kuriuos galima keisti, skaičių galite peržiūrėti:

sysctl -a | wc -l

Jei norite peržiūrėti visą branduolio parametrų sąrašą, tiesiog atlikite:

sysctl -a 

Kadangi aukščiau pateiktos komandos išvestį sudarys DAUG eilučių, galime naudoti konvejerį, po kurio seka mažiau, kad galėtume jį atidžiau patikrinti:

sysctl -a | less

Pažvelkime į kelias pirmąsias eilutes. Atminkite, kad pirmieji simboliai kiekvienoje eilutėje atitinka katalogų pavadinimus, esančius /proc/sys:

Pavyzdžiui, paryškinta eilutė:

dev.cdrom.info = drive name:        	sr0

rodo, kad sr0 yra optinio disko slapyvardis. Kitaip tariant, būtent taip branduolys „mato“, kuris vairuoja, ir naudoja šį pavadinimą, nurodydamas jį.

Kitame skyriuje paaiškinsime, kaip pakeisti kitus „svarbesnius“ branduolio vykdymo parametrus Linux sistemoje.

Kaip pakeisti arba modifikuoti Linux branduolio vykdymo parametrus

Remiantis tuo, ką iki šiol paaiškinome, nesunku pastebėti, kad parametro pavadinimas atitinka katalogo struktūrą /proc/sys, kur jį galima rasti.

Pavyzdžiui:

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

Patikrinkite Linux branduolio parametrus

Be to, galime peržiūrėti konkretaus Linux branduolio parametro reikšmę naudodami sysctl, po kurio nurodomas parametro pavadinimas, arba nuskaitant susijusį failą:

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

Nustatykite arba modifikuokite Linux branduolio parametrus

Norėdami nustatyti branduolio parametro reikšmę, taip pat galime naudoti sysctl, bet naudodami parinktį -w, po kurios nurodomas parametro pavadinimas, lygybės ženklas ir norima reikšmė.

Kitas būdas yra naudoti echo, kad perrašytumėte su parametru susietą failą. Kitaip tariant, šie metodai yra lygiaverčiai norint išjungti paketų persiuntimo funkciją mūsų sistemoje (kuri, beje, turėtų būti numatytoji reikšmė, kai dėžutė neturėtų perduoti srauto tarp tinklų):

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

Svarbu pažymėti, kad branduolio parametrai, nustatyti naudojant sysctl, bus vykdomi tik dabartinės sesijos metu ir išnyks, kai sistema bus paleista iš naujo.

Norėdami nustatyti šias reikšmes visam laikui, redaguokite /etc/sysctl.conf su norimomis reikšmėmis. Pavyzdžiui, norėdami išjungti paketų persiuntimą /etc/sysctl.conf, įsitikinkite, kad faile yra ši eilutė:

net.ipv4.ip_forward=0

Tada paleiskite šią komandą, kad pritaikytumėte vykdomos konfigūracijos pakeitimus.

sysctl -p

Kiti svarbių branduolio vykdymo laiko parametrų pavyzdžiai:

fs.file-max nurodo maksimalų failų tvarkyklių skaičių, kurį branduolys gali skirti sistemai. Atsižvelgiant į numatomą jūsų sistemos naudojimą (žiniatinklis/duomenų bazė/failų serveris, kad būtų galima paminėti kelis pavyzdžius), galbūt norėsite pakeisti šią reikšmę, kad ji atitiktų sistemos poreikius.

Priešingu atveju gausite klaidos pranešimą „Per daug atidarytų failų“, o blogiausiu atveju galite neleisti operacinei sistemai paleisti.

Jei dėl nekaltos klaidos atsidūrėte šioje paskutinėje situacijoje, paleiskite vieno vartotojo režimu (kaip paaiškinta 13 dalyje – „Linux Grub Boot Loader“ konfigūravimas ir trikčių šalinimas) ir redaguokite /etc/sysctl.conf kaip nurodė anksčiau. Norėdami nustatyti tą patį apribojimą kiekvienam vartotojui, žr. šios serijos 14 dalį – Stebėkite ir nustatykite Linux proceso apribojimą.

kernel.sysrq naudojamas įgalinti klaviatūros klavišą SysRq (taip pat žinomas kaip spausdinimo ekrano klavišas), kad tam tikri klavišų deriniai galėtų iškviesti avarinius veiksmus, kai sistema tapo nereaguojantis.

Numatytoji reikšmė (16) rodo, kad sistema laikysis Alt + SysRq + klavišas ir atliks veiksmus, nurodytus sysrq.c dokumentai, rasti kernel.org (kur raktas yra viena raidė b-z diapazone). Pavyzdžiui, paspaudus Alt+SysRq+b sistema bus paleista iš naujo (naudokite tai kaip paskutinę priemonę, jei serveris nereaguoja).

Įspėjimas! Nebandykite paspausti šio klavišų kombinacijos virtualioje mašinoje, nes tai gali priversti jūsų pagrindinę sistemą paleisti iš naujo!

Nustačius 1, net.ipv4.icmp_echo_ignore_all nepaisys ping užklausų ir atmes jas branduolio lygiu. Tai parodyta žemiau esančiame paveikslėlyje – atkreipkite dėmesį, kaip ping užklausos prarandamos nustačius šį branduolio parametrą:

Geresnis ir paprastesnis būdas nustatyti atskirus vykdymo parametrus yra naudoti .conf failus, esančius /etc/sysctl.d, sugrupuojant juos pagal kategorijas.

Pavyzdžiui, užuot nustatę net.ipv4.ip_forward=0 ir net.ipv4.icmp_echo_ignore_all=1 /etc/sysctl.conf, galime sukurti naują failą pavadinimu net.conf, esantį /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

Jei nuspręsite naudoti šį metodą, nepamirškite pašalinti tų pačių eilučių iš /etc/sysctl.conf.

Santrauka

Šiame straipsnyje paaiškinome, kaip keisti nuolatinius ir nenuolatinius branduolio vykdymo laiko parametrus naudojant sysctl, /etc/sysctl.conf ir failus, esančius / etc/sysctl.d.

sysctl dokumentuose galite rasti daugiau informacijos apie daugiau kintamųjų reikšmę. Šie failai yra išsamiausias dokumentų šaltinis apie parametrus, kuriuos galima nustatyti naudojant sysctl.

Ar šis straipsnis jums buvo naudingas? Mes tikrai tikimės, kad tai padarėte. Nedvejodami praneškite mums, jei turite klausimų ar pasiūlymų, kaip patobulinti.