Aktualizace atime ovlivňuje výkon systému. Co se děje a jak s tím naložit — čtěte v článku.

Kdykoli aktualizuji Linux na svém domácím počítači, musím řešit určité úkoly. S lety se to stalo rutinou: dělám zálohy svých souborů, mažu systém, instaluji vše od nuly, obnovuji své soubory a poté znovu instaluji své oblíbené aplikace. Také si přizpůsobuji nastavení systému. Někdy to zabere příliš mnoho času. Nedávno jsem přemýšlel, jestli mi tato starost vůbec stojí za to.
atime — jedna ze tří časových značek pro soubory v Linuxu (o tom více později). Konkrétně jsem se ptal, zda je stále vhodné vypínat atime v novějších systémech Linux. Jelikož se atime aktualizuje pokaždé, když je soubor otevřen, uvědomil jsem si, že má značný dopad na výkon systému.
Nedávno jsem přešel na Fedora 32 a ze zvyku jsem začal s vypnutí atime. Zamyslel jsem se, zda ho vůbec potřebuji. Rozhodl jsem se tento problém prozkoumat a to, co jsem zjistil, je následující.
Něco o časových značkách souborů
Abyste se dostali do hloubky, musíte udělat krok zpět a vzpomenout si na pár věcí o souborových systémech Linux a o tom, jak jádro přiřazuje časové značky souborům a adresářům. Datum poslední změny souborů a adresářů můžete vidět spuštěním příkazu ls -l (dlouhý) nebo jednoduše podívat se na informace o tomto v správci souborů. Ale za scénou jádro Linuxu sleduje několik časových značek pro soubory a adresáře:
- Kdy byl soubor naposledy upraven (mtime)
- Kdy byly naposledy změněny vlastnosti a metadata souboru (ctime)
- Kdy byl soubor naposledy otevřen (atime)
- Můžete použít příkaz stat, abyste viděli data 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 -0500Zde je vidět, že tento soubor byl vytvořen 25. dubna 2019, kdy jsem systém instaloval. Můj soubor /etc/fstab byl naposledy změněn 16. května 2019 a všechny ostatní atributy byly změněny přibližně ve stejnou dobu.
Pokud kopíruji /etc/fstab do nového souboru se datumy mění, což naznačuje, že se jedná o nový soubor:
$ sudo cp fstab fstab.bak
$ stat fstab.bak
Soubor: fstab.bak
Velikost: 261 Bloky: 8 IO blok: 4096 běžný soubor
Zařízení: b303h/45827d Inod: 2105664 Odkazy: 1
Přístup: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Kontext: unconfined_u:object_r:etc_t:s0
Přístup: 2020-05-12 17:53:58.442659986 -0500
Modifikováno: 2020-05-12 17:53:58.443659981 -0500
Změna: 2020-05-12 17:53:58.443659981 -0500
Vznik: 2020-05-12 17:53:58.442659986 -0500Ale pokud soubor jednoduše přejmenuji, aniž bych změnil jeho obsah, Linux aktualizuje pouze čas poslední změny souboru:
$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
Soubor: fstab.tmp
Velikost: 261 Bloky: 8 IO blok: 4096 běžný soubor
Zařízení: b303h/45827d Inod: 2105664 Odkazy: 1
Přístup: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Kontext: unconfined_u:object_r:etc_t:s0
Přístup: 2020-05-12 17:53:58.442659986 -0500
Modifikováno: 2020-05-12 17:53:58.443659981 -0500
Změna: 2020-05-12 17:54:24.576508232 -0500
Vznik: 2020-05-12 17:53:58.442659986 -0500Tyto časové značky jsou velmi užitečné pro určité unixové programy. Například biff je program, který vám oznámí, když máte novou zprávu v e-mailu. V současnosti jej používá málokdo, , ale v době, kdy byly poštovní schránky lokální pro systém, byl biff dost rozšířený.
Jak program zjistí, zda máte novou poštu ve doručené poště? biff porovnává čas poslední změny (kdy byl soubor doručené pošty aktualizován novou e-mailovou zprávou) a čas posledního přístupu (naposledy, kdy jste si přečetli svůj e-mail). Pokud k změně došlo později, než k přístupu, biff pochopí, že dorazil nový e-mail, a oznámí vám to. E-mailový klient Mutt funguje zhruba stejně.
Časová značka posledního přístupu je také užitečná, pokud potřebujete shromažďovat statistiky o využití souborového systému a nastavit jeho výkon. Správci systému potřebují vědět, ke kterým objektům dochází k přístupu, aby mohli souborový systém odpovídajícím způsobem nakonfigurovat.
Ale většině moderních programů tato značka již není potřebná, a proto bylo navrženo ji nepoužívat. V roce 2007 Linus Torvalds a několik dalších vývojářů jádra diskutovali o atime v kontextu problémů s výkonem. Vývojář jádra Linux Ingo Molnar udělal následující poznámku o atime a souborovém systému ext3:
Je poněkud zvláštní, že každá pracovní plocha a server Linux čelí znatelnému snížení výkonu vstupu/odeslání kvůli neustálým aktualizacím atime, přičemž skutečných uživatelů jsou jen dva: tmpwatch [který lze nastavit na používání ctime, takže to není velký problém] a některé nástroje pro zálohování.
Ale lidé i nadále používají některé programy, které tuto značku potřebují. Takže odstranění atime naruší jejich funkčnost. Vývojáři jádra Linux by neměli omezovat svobodu uživatele.
Šalamounské řešení
Do distribucí Linuxu je zahrnuto mnoho aplikací a navíc mohou uživatelé stahovat a instalovat další programy podle svých potřeb. To je klíčová výhoda open-source operačního systému. Ale ztěžuje to optimalizaci výkonu vašeho souborového systému. Odstranění náročných komponent může narušit funkčnost systému.
Jako kompromis vývojáři jádra Linux implementovali novou volbu relaytime, která má zajistit rovnováhu mezi výkonem a kompatibilitou:
atime se aktualizuje pouze v případě, že předchozí čas přístupu je menší než aktuální čas modifikace nebo změny stavu… Od Linuxu 2.6.30 jádro ve výchozím nastavení používá tuto volbu (pokud není uvedeno noatime)… Kromě toho, od Linuxu 2.6.30 se čas posledního přístupu k souboru vždy aktualizuje, pokud je mu více než 1 den.
Moderní systémy Linux (od Linuxu 2.6.30, vydaného v roce 2009) již používají relaytime, což by mělo přinést opravdu velký nárůst výkonu. To znamená, že se nemusíte starat o nastavení souboru /etc/fstab, a s relaytime se můžete spolehnout na výchozí hodnotu.
Zvýšení výkonu systému pomocí noatime
Ale pokud chcete nastavit svůj systém pro maximální výkon, deaktivace atime je stále možná.
Změna výkonu nemusí být příliš znatelná na velmi rychlých moderních discích (jako je NVME nebo rychlé SSD), ale je tam mírný nárůst.
Pokud víte, že nepoužíváte software, pro který je potřeba atime, můžete mírně zvýšit výkon zapnutím volby noatime v souboru. /etc /fstab. Po tomto jádro nebude neustále aktualizovat atime. Při připojování souborového systému použijte možnost 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 0Změny se projeví při příštím restartu.
Na základě reklamy
Potřebujete server pro hosting webu? Naše společnost nabízí s denním nebo jednorázovým platbami, každý server je připojen k internetovému kanálu o rychlosti 500 Megabitů a je zdarma chráněn před DDoS útoky!
Zdroj: habr.com
