Kuinka muuttaa ytimen ajonaikaisia parametreja pysyvällä ja pysyvällä tavalla


Tämän osassa 13 kuinka GRUB: n avulla voidaan muuttaa järjestelmän käyttäytymistä siirtämällä valintoja ytimelle käynnissä olevaa käynnistysprosessia varten.

Vastaavasti voit käyttää käynnissä olevan Linux-järjestelmän komentoriviä muuttamaan tiettyjä ajonaikaisia ytimen parametreja kertamuutoksena tai muokkaamalla pysyvästi määritystiedostoa.

Siten sinulla on mahdollisuus ottaa ydinparametrit käyttöön tai poistaa käytöstä lennossa ilman suurempia vaikeuksia, kun sitä tarvitaan järjestelmän odotetun toimintatavan muutoksen vuoksi.

Esittelyssä/proc-tiedostojärjestelmä

Tiedostojärjestelmän hierarkiastandardin viimeisimmät määritykset osoittavat, että /proc edustaa oletusmenetelmää prosessi- ja järjestelmätietojen sekä muun ytimen ja muistin tietojen käsittelemiseksi. Erityisesti /proc/sys on kaikki tiedot laitteista, ohjaimista ja joistakin ytimen ominaisuuksista.

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

  1. dev : tiettyjen laitteeseen kytkettyjen laitteiden parametrit.
  2. fs : tiedostojärjestelmän kokoonpano (esimerkiksi kiintiöt ja inodit).
  3. ydin: ytinkohtainen kokoonpano.
  4. net : verkon määritykset.
  5. vm : ytimen virtuaalimuistin käyttö.

Ytimen ajonaikaisia parametreja muokataan komennolla sysctl . Tarkan muutettavien parametrien lukumäärän voi tarkastella seuraavilla tavoilla:

# sysctl -a | wc -l

Jos haluat tarkastella täydellistä ytimen parametrien luetteloa, tee vain:

# sysctl -a 

Koska yllä olevan komennon lähtö koostuu PALJON riveistä, voimme käyttää putkea, jota seuraa vähemmän, tarkastamaan sen tarkemmin:

# sysctl -a | less

Katsotaanpa muutamia ensimmäisiä rivejä. Huomaa, että kunkin rivin ensimmäiset merkit vastaavat hakemistojen nimiä /proc/sys :

Esimerkiksi korostettu rivi:

dev.cdrom.info = drive name:        	sr0

ilmaisee, että sr0 on optisen aseman aliaksen nimi. Toisin sanoen näin ydin "näkee" sen aseman ja käyttää kyseistä nimeä viitaten siihen.

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

Kuinka muuttaa tai muokata Linux-ytimen ajonaikaisia parametreja

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

Esimerkiksi:

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

Tästä huolimatta voimme tarkastella tietyn Linux-ytimen parametrin arvoa joko sysctl -kohdalla, jota seuraa parametrin nimi, tai lukemalla liittyvä tiedosto:

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

Ydinparametrin arvon asettamiseksi voimme käyttää myös sysctl -asetusta, mutta käyttämällä vaihtoehtoa -w ja sen jälkeen parametrin nimeä, yhtäläisyysmerkkiä ja haluttua arvoa.

Toinen menetelmä koostuu echo -toiminnosta korvaamaan parametriin liittyvä tiedosto. Toisin sanoen seuraavat menetelmät vastaavat pakettien edelleenlähetystoiminnon poistamista käytöstä järjestelmässämme (jonka, muuten, pitäisi olla oletusarvo, kun laatikon ei ole tarkoitus siirtää 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 sysctl -toiminnolla, pakotetaan vasta nykyisen istunnon aikana ja häviävät, kun järjestelmä käynnistetään uudelleen.

Jos haluat asettaa nämä arvot pysyvästi, muokkaa /etc/sysctl.conf haluttuilla 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 soveltaa muutoksia käynnissä olevaan kokoonpanoon.

# sysctl -p

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

fs.file-max määrittää enimmäismäärän tiedostokäsittelyjä, jotka ydin voi varata järjestelmälle. Järjestelmän käyttötarkoituksesta (verkko/tietokanta/tiedostopalvelin, muutama esimerkki) riippuen, kannattaa ehkä muuttaa tätä arvoa vastaamaan järjestelmän tarpeita.

Muuten saat parhaimmillaan "Liian monta avointa tiedostoa" -virhesanoman, mikä saattaa estää käyttöjärjestelmän käynnistymisen pahimmillaan.

Jos syyttömän virheen takia löydät itsesi viimeisestä tilanteesta, käynnistä se yhden käyttäjän tilassa (kuten tämän sarjan osassa 14 - Monitori ja Linux-prosessirajoitusten määrittäminen on selitetty).

kernel.sysrq -toimintoa käytetään ottamaan käyttöön näppäimistön SysRq-avain (joka tunnetaan myös nimellä tulostusnäppäin), jotta tietyt näppäinyhdistelmät voivat käynnistää hätätoimenpiteet, kun järjestelmä ei ole enää reagoinut.

Oletusarvo (16) osoittaa, että järjestelmä kunnioittaa Alt + SysRq + key -yhdistelmää ja suorittaa toiminnot, jotka on lueteltu sysrq.c-ohjeissa, jotka löytyvät kernel.org-palvelusta (jossa avain on yksi kirjain bz-alue). Esimerkiksi Alt + SysRq + b käynnistää järjestelmän uudelleen voimakkaasti (käytä tätä viimeisenä keinona, jos palvelimesi ei vastaa).

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

Kun asetus on 1, net.ipv4.icmp_echo_ignore_all jättää ping-pyynnöt huomiotta ja pudottaa ne ytimen tasolle. Tämä näkyy alla olevassa kuvassa - huomaa kuinka ping-pyynnöt menetetään tämän ytimen parametrin asettamisen jälkeen:

Parempi ja helpompi tapa asettaa yksittäiset ajonaikaiset parametrit on käyttää .conf-tiedostoja /etc/sysctl.d -kohdassa ja ryhmitellä ne luokkiin.

Esimerkiksi sen sijaan, että asetat net.ipv4.ip_forward = 0 ja net.ipv4.icmp_echo_ignore_all = 1 tiedostoon /etc/sysctl.conf, voimme luoda uuden tiedoston nimeltä net.conf /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 samoja rivejä kohdasta /etc/sysctl.conf .

Yhteenveto

Tässä artikkelissa olemme selittäneet, kuinka kernelin ajonaikaisia parametreja, sekä pysyviä että ei-pysyviä, voidaan muokata käyttämällä sysctl-, /etc/sysctl.conf- ja /etc/sysctl.d-tiedostoja.

Sysctl-dokumenteista löydät lisätietoja muuttujien merkityksestä. Nämä tiedostot edustavat täydellistä lähdettä sysctl: n kautta asetettavista parametreista.

Piditkö tätä artikkelia hyödyllisenä? Toivomme varmasti. Älä epäröi ilmoittaa meille, jos sinulla on kysyttävää tai ehdotuksia parannettavaksi.