Jak a proč volba noatime zvyšuje výkon systémů Linux

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

Jak a proč volba noatime zvyšuje výkon systémů Linux
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:

  1. Kdy byl soubor naposledy upraven (mtime)
  2. Kdy byly naposledy změněny vlastnosti a metadata souboru (ctime)
  3. Kdy byl soubor naposledy otevřen (atime)
  4. 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 -0500

Zde 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 -0500

Ale 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 -0500

Tyto č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, biff, 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 0

Změ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í spolehlivé servery 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!

Jak a proč volba noatime zvyšuje výkon systémů Linux

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster