Hur och varför alternativet noatime ökar prestandan i Linux-system

Uppdateringen av atime pĂ„verkar systemets prestanda. Vad som hĂ€nder och vad man ska göra – lĂ€s i artikeln.

Hur och varför alternativet noatime ökar prestandan i Linux-system
Varje gÄng jag uppdaterar Linux pÄ min hemmadator mÄste jag hantera vissa uppgifter. Med Ären har detta blivit en vana: jag gör sÀkerhetskopior av mina filer, raderar systemet, installerar allt frÄn grunden, ÄterstÀller mina filer och installerar sedan om mina favoritprogram. Jag anpassar ocksÄ systeminstÀllningarna. Ibland tar det för mycket tid. Och nyligen funderade jag pÄ om jag verkligen behöver detta besvÀr.

atime – en av de tre tidsstĂ€mplarna för filer i Linux (mer om detta senare). Jag har sĂ€rskilt funderat pĂ„ om det fortfarande Ă€r nödvĂ€ndigt att stĂ€nga av atime i nyare Linux-system. Eftersom atime uppdateras varje gĂ„ng en fil nĂ„s insĂ„g jag att det har en betydande inverkan pĂ„ systemets prestanda.
Nyligen uppdaterade jag till Fedora 32 och av gammal vana började jag med att stÀnga av atime. Jag tÀnkte: behöver jag det överhuvudtaget? Jag beslutade mig för att undersöka frÄgan och hÀr Àr vad jag hittade.

Lite om tidsstÀmplarna för filer

För att förstÄ detta behöver du ta ett steg tillbaka och komma ihÄg nÄgra saker om Linux-filsystem och hur kÀrnan tilldelar tidsstÀmplar till filer och kataloger. Du kan se datumet för senaste Àndring av filer och kataloger genom att köra kommandot ls -l (lÄng) eller helt enkelt titta pÄ informationen om detta i filhanteraren. Men bakom kulisserna spÄrar Linux-kÀrnan flera tidsstÀmplar för filer och kataloger:

  1. NĂ€r filen senast modifierades (mtime)
  2. NÀr filens egenskaper och metadata senast Àndrades (ctime)
  3. NÀr filen senast anvÀndes (atime)
  4. Du kan anvÀnda kommandot stat, för att se data om en fil eller katalog. HÀr Àr filen /etc/fstab frÄn en av mina testservrar:

$ 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

HÀr framgÄr det att den hÀr filen skapades den 25 april 2019, nÀr jag installerade systemet. Min fil /etc/fstab Àndrades senast den 16 maj 2019, och alla andra attribut Àndrades ungefÀr samtidigt.

Om jag kopierar /etc/fstab till en ny fil, Àndras datumen och indikerar att detta Àr en ny fil:

$ sudo cp fstab fstab.bak
$ stat fstab.bak
  Fil: fstab.bak
  Storlek: 261             Block: 8          IO Block: 4096   vanlig fil
Enhet: b303h/45827d    Inode: 2105664     LĂ€nkar: 1
Åtkomst: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Kontext: unconfined_u:object_r:etc_t:s0
Åtkomst: 2020-05-12 17:53:58.442659986 -0500
Ändra: 2020-05-12 17:53:58.443659981 -0500
Ändrad: 2020-05-12 17:53:58.443659981 -0500
 Födelse: 2020-05-12 17:53:58.442659986 -0500

Men om jag bara byter namn pÄ filen utan att Àndra dess innehÄll, kommer Linux endast att uppdatera tidpunkten för filens Àndring:

$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
  Fil: fstab.tmp
  Storlek: 261             Block: 8          IO Block: 4096   vanlig fil
Enhet: b303h/45827d    Inode: 2105664     LĂ€nkar: 1
Åtkomst: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Kontext: unconfined_u:object_r:etc_t:s0
Åtkomst: 2020-05-12 17:53:58.442659986 -0500
Ändra: 2020-05-12 17:53:58.443659981 -0500
Ändrad: 2020-05-12 17:54:24.576508232 -0500
 Födelse: 2020-05-12 17:53:58.442659986 -0500

Dessa tidsstÀmplar Àr mycket anvÀndbara för vissa Unix-program. Till exempel Àr biff ett program som meddelar dig nÀr ett nytt meddelande har kommit i din e-post. Numera Àr det fÄ som anvÀnder biff, men pÄ den tiden nÀr e-postlÄdor var lokala för systemet, var biff ganska allmÀnt förekommande.

Hur vet programmet att du har ett nytt meddelande i inkorgen? Biff jÀmför tiden för senaste Àndring (nÀr filen för inkommande e-post uppdaterades med ett nytt meddelande) och tiden för senaste Ätkomst (senast du lÀste din e-post). Om Àndringen skedde senare Àn Ätkomsten, kommer biff att förstÄ att ett nytt brev har kommit, och informera dig om det. E-postklienten Mutt fungerar ungefÀr pÄ samma sÀtt.

TidsstÀmpeln för senaste Ätkomst Àr ocksÄ anvÀndbar om du behöver samla statistik över anvÀndningen av filsystemet och optimera prestandan. Systemadministratörer behöver veta vilka objekt som Ätkomstas för att pÄ lÀmpligt sÀtt konfigurera filsystemet.

Men de flesta moderna program behöver inte denna tidsstĂ€mpel lĂ€ngre, och det har föreslagits att inte anvĂ€nda den. År 2007 diskuterade Linus Torvalds och flera andra kĂ€rnutvecklare atime i samband med prestandaproblem. Kernutvecklaren Ingo Molnar gjorde följande observation om atime och filsystemet ext3:

Det Àr ganska konstigt att varje skrivbord och server i Linux lider av mÀrkbar nedgÄng i I/O-prestanda pÄ grund av stÀndiga atime-uppdateringar, trots att det bara finns tvÄ verkliga anvÀndare: tmpwatch [som kan konfigureras att anvÀnda ctime, sÄ detta Àr inte ett stort problem] samt vissa sÀkerhetskopieringsverktyg.

Men folk fortsÀtter att anvÀnda vissa program som behöver denna markering. SÄ att ta bort atime kommer att störa deras funktionalitet. Linux-kÀrnans utvecklare bör inte inskrÀnka anvÀndarens frihet.

Salomons lösning

MÄnga applikationer ingÄr i Linux-distributioner, och dessutom kan anvÀndare ladda ner och installera andra program efter behov. Detta Àr en nyckelfördel med öppen kÀllkod. Men det komplicerar optimeringen av din filsystems prestanda. Att ta bort resurskrÀvande komponenter kan störa systemets funktion.

Som en kompromiss har Linux-kÀrnans utvecklare infört ett nytt alternativ, relaytime, som syftar till att skapa balans mellan prestanda och kompatibilitet:

atime uppdateras endast om den tidigare Ă„tkomsttiden Ă€r mindre Ă€n den aktuella Ă€ndringstiden eller statusĂ€ndring 
 FrĂ„n och med Linux 2.6.30 anvĂ€nder kĂ€rnan som standard detta alternativ (om inte noatime anges) 
 Dessutom, frĂ„n och med Linux 2.6.30, uppdateras den senaste Ă„tkomsttiden för en fil alltid om den Ă€r mer Ă€n 1 dag gammal.

Moderna Linux-system (frÄn och med Linux 2.6.30, som slÀpptes 2009) anvÀnder redan relaytime, vilket bör ge en verklig prestandaförbÀttring. Detta innebÀr att du inte behöver konfigurera filen /etc/fstab, och med relaytime kan du lita pÄ standardvÀrdet.

Öka systemets prestanda med noatime

Men om du vill konfigurera ditt system för att fÄ maximal prestanda Àr det fortfarande möjligt att stÀnga av atime.

PrestandaförÀndringen kanske inte Àr sÄ mÀrkbar pÄ mycket snabba moderna diskar (sÄsom NVME eller snabba SSD), men det finns en liten förbÀttring.

Om du vet att du inte anvÀnder programvara som krÀver atime, kan du nÄgot öka prestandan genom att aktivera alternativet noatime i filen. /etc /fstab. Efter detta kommer kÀrnan inte att uppdatera atime kontinuerligt. AnvÀnd alternativet noatime vid montering av filsystemet:

/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

Ändringarna trĂ€der i kraft vid nĂ€sta omstart.

I reklamens namn

Behöver du en server för att hosta din webbplats? VÄrt företag erbjuder pÄlitliga servrar med daglig eller engÄngsbetalning, varje server Àr ansluten till en internetkanal pÄ 500 Megabit och skyddas gratis mot DDoS-attacker!

Hur och varför alternativet noatime ökar prestandan i Linux-system

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster