v Part 13 této série LFCS (Linux Foundation Certified Sysadmin) jsme vysvětlili, jak použít GRUB k úpravě chování systému předáním voleb jádru pro probíhající proces zavádění.

Podobně můžete použít příkazový řádek v běžícím systému Linux ke změně určitých parametrů běhového jádra jednorázovou úpravou nebo trvale úpravou konfiguračního souboru.

Můžete tedy povolit nebo zakázat parametry jádra za běhu bez větších potíží, když je to potřeba kvůli požadované změně způsobu, jakým se očekává fungování systému.

Představujeme souborový systém /proc

To naznačuje nejnovější specifikace standardu Filesystem Hierarchy Standard /proc představuje výchozí metodu pro zpracování procesních a systémových informací, jakož i dalších informací o jádře a paměti. Zejména, /proc/sys je místo, kde můžete najít všechny informace o zařízeních, ovladačích a některých funkcích jádra.

Skutečná vnitřní struktura /proc/sys velmi závisí na použitém jádře, ale pravděpodobně uvnitř najdete následující adresáře. Každý z nich bude dále obsahovat další podadresáře, kde jsou udržovány hodnoty pro každou kategorii parametrů:

  1. dev: parametry pro konkrétní zařízení připojená ke stroji.
  2. fs: konfigurace souborového systému (například kvóty a inody).
  3. kernel: konfigurace specifická pro jádro.
  4. net: konfigurace sítě.
  5. vm: použití virtuální paměti jádra.

K úpravě parametrů běhu jádra použijeme sysctl. Přesný počet parametrů, které lze upravit, lze zobrazit pomocí:

# sysctl -a | wc -l

Pokud chcete zobrazit úplný seznam parametrů jádra, postupujte takto:

# sysctl -a 

Protože výstup výše uvedeného příkazu bude sestávat ze HODNĚ řádků, můžeme použít potrubí následované méně, abychom jej prozkoumali pečlivěji:

# sysctl -a | less

Pojďme se podívat na prvních pár řádků. Vezměte prosím na vědomí, že první znaky v každém řádku odpovídají názvům adresářů uvnitř /proc/sys:

Pochopte systém souborů Linux /proc

Například zvýrazněný řádek:

dev.cdrom.info = drive name:        	sr0

to naznačuje sr0 je alias pro optickou mechaniku. Jinými slovy, tak je jádro sees ten disk a používá tento název k odkazování na něj.

V následující části vysvětlíme, jak změnit jiné more important parametry běhu jádra v Linuxu.

Jak změnit nebo upravit parametry běhu jádra Linuxu

Na základě toho, co jsme si dosud vysvětlili, je snadné vidět, že název parametru odpovídá adresářové struktuře uvnitř /proc/sys kde se dá najít.

Například:

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

Zkontrolujte parametry jádra Linuxu

To znamená, že můžeme zobrazit hodnotu konkrétního parametru linuxového jádra pomocí obou sysctl podle názvu parametru nebo čtení přidruženého souboru:

# sysctl dev.cdrom.autoclose
# cat /proc/sys/dev/cdrom/autoclose
# sysctl net.ipv4.ip_forward
# cat /proc/sys/net/ipv4/ip_forward
Zkontrolujte parametry jádra Linuxu
Zkontrolujte parametry jádra Linuxu

Nastavte nebo upravte parametry jádra Linuxu

K nastavení hodnoty parametru jádra můžeme také použít sysctlale pomocí -w a následuje název parametru, rovnítko a požadovaná hodnota.

Další metoda spočívá v použití echo pro přepsání souboru spojeného s parametrem. Jinými slovy, následující metody jsou ekvivalentní k deaktivaci funkce předávání paketů v našem systému (což by mimochodem měla být výchozí hodnota, když box nemá předávat provoz mezi sítěmi):

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

Je důležité si uvědomit, že parametry jádra, které se nastavují pomocí sysctl bude vynuceno pouze během aktuální relace a zmizí po restartování systému.

Chcete-li tyto hodnoty trvale nastavit, upravte /etc/sysctl.conf požadované hodnoty. Chcete-li například zakázat předávání paketů dovnitř /etc/sysctl.conf ujistěte se, že se v souboru objeví tento řádek:

net.ipv4.ip_forward=0

Poté spusťte následující příkaz a použijte změny na běžící konfiguraci.

# sysctl -p

Další příklady důležitých parametrů běhu jádra jsou:

fs.file-max udává maximální počet popisovačů souborů, které může jádro systému přidělit. V závislosti na zamýšleném použití vašeho systému (web / databáze / souborový server, abychom jmenovali několik příkladů), můžete chtít tuto hodnotu změnit, aby vyhovovala potřebám systému.

V opačném případě obdržíte a Too many open files v nejlepším případě chybová zpráva a v nejhorším může zabránit spuštění operačního systému.

Pokud se kvůli nevinné chybě ocitnete v této poslední situaci, spusťte v režimu jednoho uživatele (jak je vysvětleno v části 13 – Konfigurace a řešení problémů s Linux Grub Boot Loader) a upravte /etc/sysctl.conf jak bylo uvedeno dříve. Chcete-li nastavit stejné omezení na úrovni jednotlivých uživatelů, přečtěte si část 14 – Monitorování a nastavení limitu využití procesu Linuxu této řady.

kernel.sysrq se používá k povolení SysRq na klávesnici (také známé jako klávesa tiskové obrazovky), aby bylo možné určitým kombinacím kláves vyvolat nouzové akce, když systém přestane reagovat.

Výchozí hodnota (16) znamená, že systém bude respektovat Alt+SysRq+key a proveďte akce uvedené v sysrq.c dokumentace nalezená v kernel.org (kde klíč je jedno písmeno v rozsahu bz). Například, Alt+SysRq+b násilně restartuje systém (použijte to jako poslední možnost, pokud váš server nereaguje).

Varování! Nepokoušejte se stisknout tuto kombinaci kláves na virtuálním počítači, protože to může vynutit restart vašeho hostitelského systému!

Při nastavení na 1, net.ipv4.icmp_echo_ignore_all bude ignorovat požadavky ping a zahodí je na úrovni jádra. To je znázorněno na obrázku níže – všimněte si, jak se po nastavení tohoto parametru jádra ztratí požadavky na ping:

Blokování požadavků Ping v Linuxu
Blokování požadavků Ping v Linuxu

Lepším a jednodušším způsobem nastavení jednotlivých runtime parametrů je použití .confs uvnitř /etc/sysctl.dseskupení podle kategorií.

Například místo nastavení net.ipv4.ip_forward=0 a net.ipv4.icmp_echo_ignore_all=1 v /etc/sysctl.confmůžeme vytvořit nový soubor s názvem net.conf uvnitř /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

Pokud se rozhodnete použít tento přístup, nezapomeňte odstranit stejné řádky z /etc/sysctl.conf.

souhrn

V tomto článku jsme vysvětlili, jak upravit parametry běhu jádra, perzistentní i neperzistentní, pomocí sysctl, /etc/sysctl.confa soubory uvnitř /etc/sysctl.d.

V sysctl docs můžete najít více informací o významu více proměnných. Tyto soubory představují nejúplnější zdroj dokumentace o parametrech, které lze nastavit pomocí sysctl.

Přišel vám tento článek užitečný? Určitě doufáme, že ano. Neváhejte a dejte nám vědět, pokud máte nějaké dotazy nebo návrhy na zlepšení.