Weboldal keresés

A kernel futásidejű paramétereinek állandó és nem állandó módosítása


Ennek az LFCS (Linux Foundation Certified Sysadmin) sorozatnak a 13. részében elmagyaráztuk, hogyan lehet a GRUB segítségével módosítani a rendszer viselkedését úgy, hogy a folyamatban lévő rendszerindítási folyamathoz opciókat adunk át a kernelnek.

Hasonlóképpen használhatja a parancssort egy futó Linux rendszerben bizonyos futásidejű kernelparaméterek egyszeri módosításaként vagy egy konfigurációs fájl szerkesztésével véglegesen megváltoztatására.

Így a kernelparamétereket menet közben, különösebb nehézségek nélkül engedélyezheti vagy letilthatja, amikor a rendszer várható működési módjában szükséges változtatások miatt szükség van rá.

A /proc fájlrendszer bemutatása

A Fájlrendszer-hierarchia szabvány legújabb specifikációja szerint a /proc a folyamat- és rendszerinformációk, valamint egyéb kernel- és memóriainformációk kezelésének alapértelmezett módszere. Különösen a /proc/sys az, ahol minden információt megtalálhat az eszközökről, illesztőprogramokról és néhány kernelfunkcióról.

A /proc/sys tényleges belső szerkezete nagymértékben függ a használt kerneltől, de valószínűleg a következő könyvtárakat találjuk benne. Viszont mindegyik tartalmazni fog más alkönyvtárakat, ahol az egyes paraméterkategóriák értékei megmaradnak:

  1. dev: a géphez csatlakoztatott meghatározott eszközök paraméterei.
  2. fs: fájlrendszer-konfiguráció (például kvóták és inode-ok).
  3. kernel: kernel-specifikus konfiguráció.
  4. net: hálózati konfiguráció.
  5. vm: a kernel virtuális memóriájának használata.

A kernel futásidejű paramétereinek módosításához a sysctl parancsot használjuk. A módosítható paraméterek pontos száma megtekinthető:

sysctl -a | wc -l

Ha meg szeretné tekinteni a kernelparaméterek teljes listáját, tegye a következőket:

sysctl -a 

Mivel a fenti parancs kimenete SOK sorból áll, használhatunk egy folyamatot, amelyet kevesebb követ, hogy alaposabban megvizsgáljuk:

sysctl -a | less

Nézzük az első néhány sort. Kérjük, vegye figyelembe, hogy az egyes sorok első karakterei megegyeznek a /proc/sys könyvtárban található könyvtárak nevével:

Például a kiemelt sor:

dev.cdrom.info = drive name:        	sr0

azt jelzi, hogy az sr0 az optikai meghajtó álneve. Más szóval, így „látja” a rendszermag, amely meghajtót, és ezt a nevet használja rá.

A következő részben elmagyarázzuk, hogyan módosíthatunk más „fontosabb” kernel futásidejű paramétereket Linuxban.

Hogyan lehet megváltoztatni vagy módosítani a Linux kernel futásidejű paramétereit

Az eddigiek alapján könnyen belátható, hogy egy paraméter neve megegyezik a /proc/sys könyvtárszerkezettel, ahol megtalálható.

Például:

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

Ellenőrizze a Linux kernel paramétereit

Ennek ellenére megtekinthetjük egy adott Linux kernelparaméter értékét a sysctl használatával, amelyet a paraméter neve követ, vagy elolvashatjuk a kapcsolódó fájlt:

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

Állítsa be vagy módosítsa a Linux kernel paramétereit

A kernelparaméter értékének beállításához használhatjuk a sysctl parancsot is, de a -w kapcsolóval, majd a paraméter nevével, az egyenlőségjellel és a kívánt értékkel.

Egy másik módszer az echo használatával írja felül a paraméterhez tartozó fájlt. Más szóval, a következő módszerek egyenértékűek a csomagtovábbítási funkció letiltására a rendszerünkben (amely egyébként az alapértelmezett érték kell, hogy legyen, ha egy doboznak nem kellene forgalmat továbbítania a hálózatok között):

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

Fontos megjegyezni, hogy a sysctl paranccsal beállított kernelparaméterek csak az aktuális munkamenet során lesznek kényszerítve, és a rendszer újraindításakor eltűnnek.

Ezen értékek végleges beállításához módosítsa az /etc/sysctl.conf fájlt a kívánt értékekkel. Például a csomagtovábbítás letiltásához az /etc/sysctl.conf fájlban, győződjön meg arról, hogy ez a sor megjelenik a fájlban:

net.ipv4.ip_forward=0

Ezután futtassa a következő parancsot a módosítások alkalmazásához a futó konfigurációban.

sysctl -p

További példák fontos kernel futásidejű paraméterekre:

Az fs.file-max a rendszermag által a rendszer számára kijelölhető fájlkezelők maximális számát adja meg. A rendszer tervezett használatától függően (web/adatbázis/fájlszerver, hogy néhány példát említsünk), érdemes lehet módosítani ezt az értéket, hogy megfeleljen a rendszer igényeinek.

Ellenkező esetben a legjobb esetben „Túl sok megnyitott fájl” hibaüzenetet fog kapni, és a legrosszabb esetben megakadályozhatja az operációs rendszer indítását.

Ha egy ártatlan hiba miatt ebben az utolsó helyzetben találja magát, indítsa el a rendszert egyfelhasználós módban (a 13. részben – A Linux Grub Boot Loader konfigurálása és hibaelhárítása) leírtak szerint, és szerkessze az /etc/sysctl.conf fájlt a következőképpen: korábban utasították. Ugyanennek a korlátozásnak a felhasználónkénti beállításához olvassa el a sorozat 14. részét – A Linux-folyamatok használatának figyelése és beállítása.

A kernel.sysrq a SysRq billentyű engedélyezésére szolgál a billentyűzeten (más néven a nyomtatási képernyő billentyűje), hogy lehetővé tegye bizonyos billentyűkombinációk vészhelyzeti műveletek végrehajtását, amikor a rendszer válaszképtelenné vált.

Az alapértelmezett (16) érték azt jelzi, hogy a rendszer tiszteletben tartja az Alt+SysRq+billentyű kombinációt, és végrehajtja a sysrq.c fájlban felsorolt műveleteket. a kernel.org-ban található dokumentáció (ahol a kulcs egy betű a b-z tartományban). Például az Alt+SysRq+b erőteljesen újraindítja a rendszert (ezt végső megoldásként használja, ha a szerver nem válaszol).

Figyelem! Ne kísérelje meg lenyomni ezt a billentyűkombinációt virtuális gépen, mert az a gazdagép rendszerének újraindítására kényszerítheti!

Ha 1 értékre van állítva, a net.ipv4.icmp_echo_ignore_all figyelmen kívül hagyja a ping kéréseket, és eldobja azokat a kernel szintjén. Ez az alábbi képen látható – figyelje meg, hogyan vesznek el a ping kérések a kernelparaméter beállítása után:

Az egyéni futásidejű paraméterek beállításának jobb és egyszerűbb módja a .conf fájlok használata a /etc/sysctl.d fájlban, kategóriák szerint csoportosítva őket.

Például a /etc/sysctl.conf fájlban a net.ipv4.ip_forward=0 és a net.ipv4.icmp_echo_ignore_all=1 beállítása helyett, létrehozhatunk egy új fájlt net.conf néven az /etc/sysctl.d fájlban:

echo "net.ipv4.ip_forward=0" > /etc/sysctl.d/net.conf
echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.d/net.conf

Ha ezt a megközelítést választja, ne felejtse el eltávolítani ugyanezeket a sorokat a /etc/sysctl.conf fájlból.

Összegzés

Ebben a cikkben elmagyaráztuk, hogyan módosíthatók a kernel futásidejű paraméterei, mind állandóan, mind nem állandóan a sysctl, /etc/sysctl.conf és a / fájlokon belüli fájlokkal. etc/sysctl.d.

A sysctl dokumentumokban további információkat találhat több változó jelentéséről. Ezek a fájlok jelentik a legteljesebb dokumentációforrást a sysctl-lel beállítható paraméterekről.

Hasznosnak találta ezt a cikket? Reméljük, hogy sikerült. Ne habozzon jelezni nekünk, ha bármilyen kérdése vagy javaslata van a javításra.