Atime-uppdatering påverkar systemets prestanda. Vad som händer där och vad du ska göra åt det - läs artikeln.
När jag uppdaterar Linux på min hemdator måste jag lösa vissa problem. Med åren har detta blivit en vana: jag säkerhetskopierar mina filer, torkar systemet, installerar allt från början, återställer mina filer och installerar sedan om mina favoritprogram. Jag ändrar även systeminställningarna så att de passar mig själv. Ibland tar det för mycket tid. Och nyligen undrade jag om jag behövde den här huvudvärken.
en tid är en av tre tidsstämplar för filer i Linux (mer om detta senare). I synnerhet undrade jag om det fortfarande skulle vara en bra idé att inaktivera Atime på nyare Linux-system. Eftersom atime uppdateras varje gång filen öppnas, insåg jag att det har en betydande inverkan på systemets prestanda.
Jag uppgraderade nyligen till Fedora 32 och, av vana, började jag med att inaktivera Atime. Jag tänkte: behöver jag verkligen det? Jag bestämde mig för att studera den här frågan och det här är vad jag grävde fram.
Lite om filtidsstämplar
För att ta reda på det måste du ta ett steg tillbaka och komma ihåg några saker om Linux-filsystem och hur kärnan tidsstämplar filer och kataloger. Du kan se det senaste ändrade datumet för filer och kataloger genom att köra kommandot ls -l (lång) eller helt enkelt genom att titta på information om det i filhanteraren. Men bakom kulisserna håller Linux-kärnan reda på flera tidsstämplar för filer och kataloger:
- När ändrades filen senast (mtime)
- När ändrades senast filegenskaper och metadata (ctime)
- När öppnades filen senast (atime)
- Du kan använda kommandot statför att visa information 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 kan du se 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 för att indikera att det är en ny fil:
$ 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
Men om jag bara byter namn på filen utan att ändra dess innehåll kommer Linux bara att uppdatera den tid då filen ändrades:
$ 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
Dessa tidsstämplar är mycket användbara för vissa Unix-program. Till exempel är biff ett program som meddelar dig när det finns ett nytt meddelande i din e-post. Nuförtiden använder få människor
Hur vet programmet om du har ny e-post i din inkorg? biff jämför den senast ändrade tiden (när inkorgsfilen uppdaterades med ett nytt e-postmeddelande) och den senaste åtkomsttiden (senaste gången du läste din e-post). Om ändringen inträffade senare än access, kommer biff att förstå att ett nytt brev har kommit och kommer att meddela dig om det. Mutt-e-postklienten fungerar på ungefär samma sätt.
Den senaste åtkomsttidsstämpeln är också användbar om du behöver samla in filsystemanvändningsstatistik och justera prestanda. Systemadministratörer behöver veta vilka objekt som nås så att de kan konfigurera filsystemet därefter.
Men de flesta moderna program behöver inte längre denna etikett, så det fanns ett förslag om att inte använda den. 2007 diskuterade Linus Torvalds och flera andra kärnutvecklare tid i samband med en prestandafråga. Linux-kärnutvecklaren Ingo Molnar gjorde följande påpekande om atime och ext3-filsystemet:
"Det är ganska konstigt att varje Linux-skrivbord och -server lider av märkbar I/O-prestandaförsämring på grund av ständiga tidsuppdateringar, även om det bara finns två riktiga användare: tmpwatch [som kan konfigureras för att använda ctime, så det är inte ett stort problem] och några säkerhetskopieringsverktyg."
Men folk använder fortfarande vissa program som behöver denna etikett. Så att ta bort atime kommer att bryta deras funktionalitet. Linux-kärnutvecklare bör inte inkräkta på användarfriheten.
Salomos lösning
Det finns många applikationer som ingår i Linux-distributioner och dessutom kan användare ladda ner och installera andra program efter deras behov. Detta är en viktig fördel med ett operativsystem med öppen källkod. Men detta gör det svårt att optimera ditt filsystems prestanda. Att ta bort resurskrävande komponenter kan störa systemet.
Som en kompromiss har Linux-kärnutvecklarna introducerat ett nytt relätidsalternativ som är avsett att hitta en balans mellan prestanda och kompatibilitet:
atime uppdateras endast om den tidigare åtkomsttiden är mindre än den aktuella ändrings- eller statusändringstiden... Sedan Linux 2.6.30 använder kärnan det här alternativet som standard (om inte noatime anges)... Också eftersom Linux 2.6.30 . 1 uppdateras den senaste åtkomsttiden för en fil alltid om den är mer än XNUMX dag gammal.
Moderna Linux-system (sedan Linux 2.6.30, släppt 2009) använder redan relätid, vilket borde ge en riktigt stor prestandaökning. Det betyder att du inte behöver konfigurera filen / Etc / fstab, och med relätid kan du lita på standarden.
Förbättra systemets prestanda med noatime
Men om du vill ställa in ditt system för att få maximal prestanda är det fortfarande möjligt att inaktivera tid.
Prestandaförändringen kanske inte är särskilt märkbar på mycket snabba moderna enheter (som NVME eller Fast SSD), men det finns en liten ökning där.
Om du vet att du inte använder programvara som kräver atime kan du förbättra prestandan något genom att aktivera alternativet noatime i filen /etc/fstab. Efter detta kommer kärnan inte att uppdateras hela tiden. Använd alternativet noatime när du monterar 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 nästa gång du startar om.
Om reklamens rättigheter
Behöver du en server för din webbplats? Vårt företag erbjuder
Källa: will.com