Kuinka muuttaa ytimen ajonaikaisia parametreja pysyvästi ja ei-pysyvästi


Tämän LFCS (Linux Foundation Certified Sysadmin) -sarjan osassa 13 selitimme, kuinka GRUB:n avulla muokataan järjestelmän toimintaa siirtämällä ytimen valintoja käynnissä olevaa käynnistysprosessia varten.

Vastaavasti voit käyttää komentoriviä käynnissä olevassa Linux-järjestelmässä muuttaaksesi tiettyjä ajonaikaisia ytimen parametreja kertaluonteisena muutoksena tai pysyvästi muokkaamalla asetustiedostoa.

Siten voit ottaa käyttöön tai poistaa käytöstä ytimen parametreja lennossa ilman suuria vaikeuksia, kun sitä tarvitaan järjestelmän toiminnan edellyttämän muutoksen vuoksi.

Esittelyssä /proc-tiedostojärjestelmä

Tiedostojärjestelmähierarkiastandardin uusin määritys osoittaa, että /proc edustaa oletusmenetelmää prosessi- ja järjestelmätietojen sekä muiden ydin- ja muistitietojen käsittelyssä. Erityisesti /proc/sys on paikka, josta löydät kaikki tiedot laitteista, ohjaimista ja joistakin ytimen ominaisuuksista.

Tiedoston /proc/sys todellinen sisäinen rakenne riippuu suuresti käytetystä ytimestä, mutta löydät todennäköisesti seuraavat hakemistot sisältä. Jokainen niistä puolestaan sisältää muita alihakemistoja, joissa kunkin parametriluokan arvot säilytetään:

  1. dev: koneeseen kytkettyjen tiettyjen laitteiden parametrit.
  2. fs: tiedostojärjestelmän asetukset (esimerkiksi kiintiöt ja inodit).
  3. ydin: ydinkohtainen kokoonpano.
  4. net: verkkoasetukset.
  5. vm: ytimen virtuaalimuistin käyttö.

Ytimen ajonaikaisten parametrien muokkaamiseen käytämme sysctl-komentoa. Muokattavien parametrien tarkkaa määrää voidaan tarkastella seuraavilla tavoilla:

sysctl -a | wc -l

Jos haluat nähdä täydellisen luettelon ytimen parametreista, toimi seuraavasti:

sysctl -a 

Koska yllä olevan komennon tulos koostuu PALJON riveistä, voimme käyttää liukuhihnaa, jota seuraa vähemmän, tarkistaaksemme sen tarkemmin:

sysctl -a | less

Katsotaanpa muutamaa ensimmäistä riviä. Huomaa, että jokaisen rivin ensimmäiset merkit vastaavat /proc/sys-hakemiston hakemistojen nimiä:

Esimerkiksi korostettu rivi:

dev.cdrom.info = drive name:        	sr0

osoittaa, että sr0 on optisen aseman alias. Toisin sanoen näin ydin "näkee" aseman ja käyttää tätä nimeä viittaaessaan siihen.

Seuraavassa osiossa selitämme, kuinka muita "tärkeämpiä" ytimen ajonaikaisia parametreja muutetaan Linuxissa.

Kuinka muuttaa tai muokata Linux-ytimen ajonaikaisia parametreja

Tähän mennessä selittämiemme tietojen perusteella on helppo nähdä, että parametrin nimi vastaa hakemistorakennetta /proc/sys-hakemistossa, josta se löytyy.

Esimerkiksi:

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

Tarkista Linux-ytimen parametrit

Voimme kuitenkin tarkastella tietyn Linux-ytimen parametrin arvoa käyttämällä joko sysctl-koodia, jota seuraa parametrin nimi, tai lukemalla siihen liittyvän tiedoston:

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

Aseta tai muokkaa Linux-ytimen parametreja

Ytimen parametrin arvon asettamiseksi voimme myös käyttää sysctl-komentoa, mutta käyttämällä vaihtoehtoa -w ja sen jälkeen parametrin nimi, yhtäläisyysmerkki ja haluttu arvo.

Toinen tapa on käyttää echo-toimintoa parametriin liittyvän tiedoston päällekirjoittamiseen. Toisin sanoen seuraavat menetelmät vastaavat pakettien edelleenlähetystoiminnon poistamista järjestelmästämme (jonka muuten pitäisi olla oletusarvo, kun laatikon ei ole tarkoitus välittää liikennettä verkkojen välillä):

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

On tärkeää huomata, että ytimen parametrit, jotka on asetettu komennolla sysctl, pakotetaan vain nykyisen istunnon aikana ja katoavat, kun järjestelmä käynnistetään uudelleen.

Jos haluat asettaa nämä arvot pysyvästi, muokkaa /etc/sysctl.conf-tiedostoa haluamillasi arvoilla. Jos esimerkiksi haluat poistaa pakettien edelleenlähetyksen käytöstä tiedostossa /etc/sysctl.conf, varmista, että tämä rivi näkyy tiedostossa:

net.ipv4.ip_forward=0

Suorita sitten seuraava komento ottaaksesi muutokset käyttöön käynnissä olevaan kokoonpanoon.

sysctl -p

Muita esimerkkejä tärkeistä ytimen ajonaikaisista parametreista ovat:

fs.file-max määrittää tiedostojen käsittelyjen enimmäismäärän, jonka ydin voi varata järjestelmälle. Riippuen järjestelmän käyttötarkoituksesta (verkko/tietokanta/tiedostopalvelin, muutamia esimerkkejä mainitakseni), saatat haluta muuttaa tätä arvoa vastaamaan järjestelmän tarpeita.

Muuten saat parhaimmillaan Liian monta avointa tiedostoa -virheilmoituksen, ja pahimmillaan se saattaa estää käyttöjärjestelmän käynnistymisen.

Jos joudut tähän viimeiseen tilanteeseen viattoman virheen vuoksi, käynnistä yhden käyttäjän tilassa (kuten on selitetty osassa 13 – Linux Grub Boot Loaderin asetukset ja vianmääritys) ja muokkaa /etc/sysctl.conf-muotoa ohjeistettu aiemmin. Jos haluat asettaa saman rajoituksen käyttäjäkohtaisesti, katso tämän sarjan osa 14 – Tarkkaile ja aseta Linux-prosessin käyttörajoitus.

kernel.sysrq:lla otetaan käyttöön SysRq-näppäin näppäimistössäsi (tunnetaan myös tulostusnäytön näppäimenä), jotta tietyt näppäinyhdistelmät voivat käynnistää hätätoimintoja, kun järjestelmä on jäänyt vastaamatta.

Oletusarvo (16) osoittaa, että järjestelmä kunnioittaa Alt+SysRq+näppäin-yhdistelmää ja suorittaa sysrq.c-tiedostossa luetellut toiminnot. dokumentaatio löytyy kernel.org:sta (jossa avain on yksi kirjain välillä b-z). Esimerkiksi Alt+SysRq+b käynnistää järjestelmän uudelleen väkisin (käytä tätä viimeisenä keinona, jos palvelimesi ei vastaa).

Varoitus! Älä yritä painaa tätä näppäinyhdistelmää virtuaalikoneessa, koska se saattaa pakottaa isäntäjärjestelmän käynnistymään uudelleen!

Kun arvo on 1, net.ipv4.icmp_echo_ignore_all ohittaa ping-pyynnöt ja pudottaa ne ydintasolla. Tämä näkyy alla olevassa kuvassa – huomaa, kuinka ping-pyynnöt menetetään tämän ydinparametrin asettamisen jälkeen:

Parempi ja helpompi tapa asettaa yksittäisiä ajonaikaisia parametreja on käyttää .conf-tiedostoja hakemistossa /etc/sysctl.d ja ryhmitellä ne luokkien mukaan.

Esimerkiksi sen sijaan, että määrität net.ipv4.ip_forward=0 ja net.ipv4.icmp_echo_ignore_all=1 tiedostossa /etc/sysctl.conf, voimme luoda uuden tiedoston nimeltä net.conf kohtaan /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

Jos päätät käyttää tätä lähestymistapaa, älä unohda poistaa samat rivit tiedostosta /etc/sysctl.conf.

Yhteenveto

Tässä artikkelissa olemme selittäneet, kuinka ytimen ajonaikaisia parametreja muokataan, sekä pysyviä että ei-pysyviä, käyttämällä sysctl-, /etc/sysctl.conf- ja /-tiedostojen sisällä olevia tiedostoja. etc/sysctl.d.

sysctl-dokumenteista löydät lisätietoja useiden muuttujien merkityksestä. Nämä tiedostot ovat täydellisin lähde sysctl:n avulla määritettävistä parametreista.

Oliko tämä artikkeli mielestäsi hyödyllinen? Toivomme varmasti, että teit. Älä epäröi kertoa meille, jos sinulla on kysyttävää tai parannusehdotuksia.