Aktualizace Atime ovlivňuje výkon systému. Co se tam děje a co s tím dělat - přečtěte si článek.
Kdykoli aktualizuji Linux na svém domácím počítači, musím vyřešit určité problémy. V průběhu let se z toho stal zvyk: zálohuji své soubory, vymažu systém, nainstaluji vše od začátku, obnovím své soubory a poté znovu nainstaluji své oblíbené aplikace. Také si měním nastavení systému podle sebe. Někdy to zabere příliš mnoho času. A nedávno mě napadlo, jestli potřebuji tu bolest hlavy.
Doba je jedním ze tří časových razítek pro soubory v Linuxu (více o tom později). Zejména jsem přemýšlel, zda by bylo stále dobré zakázat atime na novějších systémech Linux. Protože atime se aktualizuje při každém přístupu k souboru, uvědomil jsem si, že to má významný dopad na výkon systému.
Nedávno jsem upgradoval na Fedoru 32 a ze zvyku jsem začal deaktivací atime. Říkal jsem si: Opravdu to potřebuji? Rozhodl jsem se tuto problematiku nastudovat a toto jsem vyhrabal.
Něco málo o časových razítkách souborů
Abyste na to přišli, musíte udělat krok zpět a zapamatovat si pár věcí o souborových systémech Linuxu a o tom, jak jádro označuje soubory a adresáře časovými značkami. Spuštěním příkazu můžete zobrazit datum poslední změny souborů a adresářů ls -l (dlouhý) nebo jednoduše pohledem na informace o něm ve správci souborů. Ale v zákulisí linuxové jádro sleduje několik časových razítek pro soubory a adresáře:
- Kdy byl soubor naposledy upraven (mtime)
- Kdy byly naposledy změněny vlastnosti souboru a metadata (ctime)
- Kdy byl soubor naposledy otevřen (atime)
- Můžete použít příkaz statpro zobrazení informací o souboru nebo adresáři. Zde je soubor / etc / fstab z jednoho 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
Zde vidíte, že tento soubor byl vytvořen 25. dubna 2019, když jsem systém nainstaloval. Můj soubor / etc / fstab 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í, aby indikovala, ž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
Pokud však soubor přejmenuji, aniž bych změnil jeho obsah, Linux aktualizuje pouze čas, kdy byl soubor upraven:
$ 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ž je ve vašem e-mailu nová zpráva. V dnešní době málokdo používá
Jak program pozná, že máte ve schránce novou poštu? biff porovnává čas poslední změny (kdy byl soubor doručené pošty aktualizován o novou e-mailovou zprávu) a čas posledního přístupu (kdy jste naposledy četli svůj e-mail). Pokud ke změně došlo později než při přístupu, pak biff pochopí, že přišel nový dopis, a upozorní vás na to. E-mailový klient Mutt funguje velmi podobně.
Časové razítko posledního přístupu je také užitečné, pokud potřebujete shromáždit statistiky využití souborového systému a vyladit výkon. Správci systému potřebují vědět, ke kterým objektům se přistupuje, aby mohli odpovídajícím způsobem nakonfigurovat systém souborů.
Většina moderních programů už ale toto označení nepotřebuje, proto padl návrh nepoužívat ho. V roce 2007 Linus Torvalds a několik dalších vývojářů jádra diskutovali o čase v kontextu problému s výkonem. Vývojář linuxového jádra Ingo Molnar se o atime a souborovém systému ext3 vyjádřil následovně:
„Je docela zvláštní, že každý linuxový desktop a server trpí znatelným snížením I/O výkonu kvůli neustálým aktualizacím atime, i když existují pouze dva skuteční uživatelé: tmpwatch [který lze nakonfigurovat tak, aby používal ctime, takže to není velký problém] a nějaké zálohovací nástroje."
Lidé ale stále používají některé programy, které toto označení potřebují. Takže odstranění atime naruší jejich funkčnost. Vývojáři linuxového jádra by neměli zasahovat do svobody uživatele.
Solomonův roztok
V distribucích Linuxu je obsaženo mnoho aplikací a uživatelé si navíc mohou stahovat a instalovat další programy podle svých potřeb. To je klíčová výhoda open source OS. To však ztěžuje optimalizaci výkonu systému souborů. Odstranění komponent náročných na zdroje může narušit systém.
Jako kompromis zavedli vývojáři linuxového jádra novou možnost relaytime, která je určena k dosažení rovnováhy mezi výkonem a kompatibilitou:
atime se aktualizuje pouze v případě, že je předchozí přístupový čas kratší než aktuální čas modifikace nebo změny stavu... Od Linuxu 2.6.30 jádro používá tuto možnost standardně (pokud není specifikováno noatime)... Také od Linuxu 2.6.30 . 1, je čas posledního přístupu k souboru vždy aktualizován, pokud je starší než XNUMX den.
Moderní linuxové systémy (od Linuxu 2.6.30, vydaného v roce 2009) již využívají relaytime, což by mělo poskytnout opravdu velký výkon. To znamená, že soubor nemusíte konfigurovat / etc / fstab, as reléovým časem se můžete spolehnout na výchozí.
Zlepšení výkonu systému pomocí noatime
Pokud však chcete vyladit svůj systém tak, abyste získali maximální výkon, deaktivace atime je stále možná.
Změna výkonu nemusí být na velmi rychlých moderních discích (jako je NVME nebo Fast SSD) příliš patrná, ale malý nárůst tam je.
Pokud víte, že nepoužíváte software, který vyžaduje atime, můžete výkon mírně zlepšit povolením možnosti noatime v souboru /etc/fstab. Poté se jádro nebude neustále aktualizovat atime. Při připojování souborového systému použijte volbu noatime:
/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
Změny se projeví při příštím restartu.
Jako reklama
Potřebujete server pro hostování vašeho webu? Naše společnost nabízí
Zdroj: www.habr.com