Vyhledávání na webu

Jak změnit parametry běhu jádra trvalým a netrvalým způsobem


V části 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

Nejnovější specifikace standardu Filesystem Hierarchy Standard uvádí, že /proc představuje výchozí metodu pro zpracování procesních a systémových informací a také 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 do značné míry závisí na používané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 příkaz sysctl. Přesný počet parametrů, které lze upravit, lze zobrazit pomocí:

sysctl -a | wc -l

Chcete-li 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ů. Upozorňujeme, že první znaky v každém řádku odpovídají názvům adresářů v /proc/sys:

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

dev.cdrom.info = drive name:        	sr0

označuje, že sr0 je alias pro optickou jednotku. Jinými slovy, tak jádro „vidí“ disk a používá tento název k odkazování na něj.

V následující části vysvětlíme, jak změnit další „důležitější“ 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 v /proc/sys, kde jej lze nalézt.

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 buď pomocí sysctl následovaného názvem parametru, nebo čtením souvisejícího souboru:

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

Nastavte nebo upravte parametry jádra Linuxu

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

Další metoda spočívá v použití echo k 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é poznamenat, že parametry jádra nastavené pomocí sysctl budou vynuceny pouze během aktuální relace a po restartu systému zmizí.

Chcete-li tyto hodnoty nastavit trvale, upravte /etc/sysctl.conf s požadovanými hodnotami. Chcete-li například zakázat předávání paketů v /etc/sysctl.conf, ujistěte se, že se v souboru zobrazuje 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 určuje maximální počet ovladačů 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ě se v nejlepším případě zobrazí chybová zpráva „Příliš mnoho otevřených souborů “ a v nejhorším případě může zabránit spuštění operačního systému.

Pokud se kvůli nevinné chybě ocitnete v této poslední situaci, zaveďte systém 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 soubor /etc/sysctl.conf jako poučen 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í klávesy SysRq na vaší klávesnici (také známé jako klávesa print screen), aby bylo možné určitým kombinacím kláves vyvolat nouzové akce, když systém přestal reagovat.

Výchozí hodnota (16) znamená, že systém bude respektovat kombinaci Alt+SysRq+key a provede akce uvedené v souboru sysrq.c dokumentaci naleznete na kernel.org (kde klíč je jedno písmeno v rozsahu b-z). Například Alt+SysRq+b násilně restartuje systém (použijte to jako poslední možnost, pokud váš server neodpovídá).

Upozorně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!

Když je nastaveno 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:

Lepším a jednodušším způsobem nastavení jednotlivých parametrů běhu je použití souborů .conf uvnitř /etc/sysctl.d, které seskupují podle kategorií.

Například místo nastavení net.ipv4.ip_forward=0 a net.ipv4.icmp_echo_ignore_all=1 v /etc/sysctl.conf, můž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ěhového prostředí jádra, trvalé i neperzistentní, pomocí sysctl, /etc/sysctl.conf a souborů uvnitř / etc/sysctl.d.

V dokumentech sysctl najdete další informace 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í.