Kdykoli upgraduji Linux na svém domácím počítači, mám seznam úkolů, které obvykle dělám. V průběhu let se z nich staly zvyky:zálohuji své soubory, vymažu systém, znovu nainstaluji od začátku, obnovím své soubory a poté znovu nainstaluji své oblíbené doplňkové aplikace. Dělám také pár systémových úprav. Některé z těchto úprav jsem dělal tak dlouho, že jsem si nedávno říkal, jestli je ještě musím udělat.
Jedním vylepšením je atime
, což je jedno ze tří časových razítek na každém souboru v Linuxu (o tom později). Konkrétně mě napadlo, jestli má ještě cenu zakázat atime
v novějších systémech Linux. Od atime
je aktualizován při každém přístupu k souboru, pochopil jsem, že to mělo významný dopad na výkon systému.
Nedávno jsem upgradoval svůj počítač na Fedoru 32 a vypnul jsem atime
na mém upgradovaném systému ze zvyku. Ale potřeboval jsem to ještě? Rozhodl jsem se to prozkoumat dále. Zde je to, co jsem našel.
Něco o časových razítkách souborů
Pro pochopení noatime
, musíte udělat krok zpět a pochopit pár věcí o linuxových souborových systémech a o tom, jak jádro aplikuje časová razítka na soubory a adresáře. Pravděpodobně již znáte datum poslední úpravy souborů a adresářů; můžete to vidět v ls -l
(dlouhý) výpis adresářů nebo pokud se podíváte na detaily souboru ve správci souborů. Ale v zákulisí linuxové jádro sleduje několik časových razítek v souborech a adresářích:
- Když byl soubor naposledy upraven (
mtime
) - Kdy byl soubor naposledy změněn (
ctime
) - Kdy byl soubor naposledy otevřen (
atime
)
Můžete použít stat
k zobrazení těchto podrobností pro soubor nebo adresář. Zde je příklad /etc/fstab
soubor na jednom z mých testovacích serverů:
$ stat fstab
File: fstab
Size: 261 Blocks: 8 IO Block: 4096 regular file
Device: b303h/45827d Inode: 2097285 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:etc_t:s0
Access: 2019-04-25 21:10:18.083325111 -0500
Modify: 2019-05-16 10:46:47.427686706 -0500
Change: 2019-05-16 10:46:47.434686674 -0500
Birth: 2019-04-25 21:03:11.840496275 -0500
Z výstupu můžete vidět, že tento soubor byl vytvořen 25. dubna 2019, kdy jsem systém nainstaloval. Můj /etc/fstab
soubor byl naposledy upraven 16. května 2019 a všechny ostatní atributy byly změněny přibližně ve stejnou dobu.
Pokud zkopíruji /etc/fstab
do nového souboru se data změní, což znamená, že se jedná o nový soubor:
$ sudo cp fstab fstab.bak
$ stat fstab.bak
File: fstab.bak
Size: 261 Blocks: 8 IO Block: 4096 regular file
Device: b303h/45827d Inode: 2105664 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2020-05-12 17:53:58.442659986 -0500
Modify: 2020-05-12 17:53:58.443659981 -0500
Change: 2020-05-12 17:53:58.443659981 -0500
Birth: 2020-05-12 17:53:58.442659986 -0500
Ale pokud soubor pouze přejmenuji, aniž bych změnil jeho obsah, Linux aktualizuje pouze čas změny souboru:
$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
File: fstab.tmp
Size: 261 Blocks: 8 IO Block: 4096 regular file
Device: b303h/45827d Inode: 2105664 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:etc_t:s0
Access: 2020-05-12 17:53:58.442659986 -0500
Modify: 2020-05-12 17:53:58.443659981 -0500
Change: 2020-05-12 17:54:24.576508232 -0500
Birth: 2020-05-12 17:53:58.442659986 -0500
Tato časová razítka jsou velmi užitečná pro určité unixové programy. Například biff je program, který vás upozorní, když máte novou e-mailovou zprávu. V dnešní době nevidíte mnoho lidí, kteří používají biff, ale v dobách, kdy byly poštovní schránky lokální ve vašem systému, byl biff docela běžný.
Další zdroje pro Linux
- Cheat pro příkazy Linuxu
- Cheat sheet pro pokročilé příkazy systému Linux
- Bezplatný online kurz:Technický přehled RHEL
- Síťový cheat pro Linux
- Cheat sheet SELinux
- Cheat pro běžné příkazy pro Linux
- Co jsou kontejnery systému Linux?
- Naše nejnovější články o Linuxu
Jak program pozná, že máte ve schránce novou poštu? Biff porovnává čas poslední úpravy (kdy byl soubor doručené pošty aktualizován o novou e-mailovou zprávu) a čas posledního přístupu (kdy jste si naposledy přečetli svůj e-mail). Pokud je Změněno novější než Přistupováno, pak biff ví, že od posledního přečtení e-mailu přišla e-mailová zpráva, a dá vám vědět. E-mailový klient Mutt dělá něco podobného, aby vás upozornil na nové zprávy.
Čas posledního přístupu je také užitečný, pokud potřebujete provést statistiky souborového systému a vyladit výkon. Na velkých linuxových systémech mohou správci potřebovat vědět, k čemu se přistupuje, aby mohli vhodně vyladit souborový systém.
Ale většina moderních programů již nepotřebuje čas posledního přístupu, takže se objevily argumenty, proč jej nepoužívat. V roce 2007 Linus Torvalds a několik dalších vývojářů jádra diskutovali o atime
a problémy s jeho výkonem. Vývojář linuxového jádra Ingo Molnár učinil tento postřeh o atime
a souborový systém ext3:
Je trochu zvláštní, že každý linuxový počítač a server poškozuje znatelné zpomalení výkonu IO kvůli neustálým aktualizacím atime, zatímco jeho skuteční uživatelé jsou jen dva: tmpwatch [který lze nakonfigurovat tak, aby používal ctime, takže to není velký problém] a některé zálohovací nástroje. (Dobrá, a myslím, že také e-mailem.) Z desítek tisíc žádostí.
Ale lidé stále používají některé programy, které to potřebují, a odstraňují atime
by rozbil tyto uživatelské programy. A pravidlem při vývoji linuxového jádra je nenarušovat uživatelský prostor.
Relatime kompromis
Distribuce Linuxu obsahují mnoho softwarových aplikací a uživatelé si mohou stáhnout a nainstalovat další programy podle svých konkrétních potřeb. To je klíčová výhoda operačního systému s otevřeným zdrojovým kódem! To ale ztěžuje ladění výkonu vašeho souborového systému. Potřebujete atime
, nebo jeho odstranění naruší něco ve vašem systému?
Jako kompromis implementovali vývojáři linuxového jádra novou metodu:relatime
je mírně odlišné měřítko výkonu, které má vyvážit výkon a kompatibilitu. mount
manuálová stránka říká toto o relatime
:
Čas přístupu se aktualizuje pouze v případě, že předchozí čas přístupu byl dřívější než aktuální čas úpravy nebo změny. … Od Linuxu 2.6.30 se jádro implicitně nastaví na chování poskytované touto volbou (pokud nebylo specifikováno noatime) … Navíc od Linuxu 2.6.30 je čas posledního přístupu souboru vždy aktualizován, pokud je starší než 1 den.
Stručně řečeno:moderní systémy Linux (od Linuxu 2.6.30, vydaného v roce 2009) již používají relatime
, což by vám mělo poskytnout opravdu rychlé zvýšení výkonu. To znamená, že nemusíte upravovat /etc/fstab
a může se spolehnout na relatime
výchozí jádro.
Vyladění výkonu systému pomocí noatime
Pokud ale chcete svůj systém vyladit, abyste získali maximální výkon, deaktivujte atime
je stále platnou možností v roce 2020.
Toto vylepšení výkonu nemusí být na velmi rychlých moderních discích (jako je NVME nebo rychlý SSD) příliš patrné, ale stále je zde mírné zvýšení.
Pokud víte, že nepoužíváte software, který vyžaduje atime
, pak můžete dosáhnout mírného zvýšení výkonu nastavením noatime
ve vašem /etc/fstab
soubor. Tím jádru sdělíte, aby nesledovalo čas posledního přístupu, čímž se vyhnete malému výpadku výkonu kvůli neustálé aktualizaci atime
v souborovém systému. Přidejte noatime
jako možnost k vašim linuxovým souborovým systémům, obvykle po položce defaults:
/dev/mapper/fedora_localhost--live-root / ext4 defaults,noatime,x-systemd.device-timeout=0 1 1
UUID=be37c451-915e-4355-95c4-654729cf662a /boot ext4 defaults,noatime 1 2
UUID=C594-12B1 /boot/efi vfat umask=0077,shortname=winnt 0 2
/dev/mapper/fedora_localhost--live-home /home ext4 defaults,noatime,x-systemd.device-timeout=0 1 2
/dev/mapper/fedora_localhost--live-swap none swap defaults,x-systemd.device-timeout=0 0 0
To se projeví při příštím restartu.