Hvordan og hvorfor noatime-alternativet forbedrer ytelsen til Linux-systemer

Atime-oppdatering påvirker systemytelsen. Hva skjer der og hva du skal gjøre med det - les artikkelen.

Hvordan og hvorfor noatime-alternativet forbedrer ytelsen til Linux-systemer
Når jeg oppdaterer Linux på hjemmedatamaskinen min, må jeg løse visse problemer. I løpet av årene har dette blitt en vane: Jeg tar sikkerhetskopi av filene mine, tørker systemet, installerer alt fra bunnen av, gjenoppretter filene mine og installerer så favorittappene mine på nytt. Jeg endrer også systeminnstillingene for å passe meg selv. Noen ganger tar det for mye tid. Og nylig lurte jeg på om jeg trengte denne hodepinen.

en gang er ett av tre tidsstempler for filer i Linux (mer om dette senere). Spesielt lurte jeg på om det fortsatt ville være en god idé å deaktivere atime på nyere Linux-systemer. Siden atime oppdateres hver gang filen åpnes, innså jeg at det har en betydelig innvirkning på systemytelsen.
Jeg oppgraderte nylig til Fedora 32 og startet av vane med å deaktivere Atime. Jeg tenkte: trenger jeg det virkelig? Jeg bestemte meg for å studere dette problemet, og dette er hva jeg gravde opp.

Litt om filtidsstempler

For å finne ut av det, må du ta et skritt tilbake og huske noen få ting om Linux-filsystemer og hvordan kjernen tidsstempler filer og kataloger. Du kan se siste endrede dato for filer og kataloger ved å kjøre kommandoen ls -l (lang) eller ganske enkelt ved å se på informasjon om det i filbehandleren. Men bak kulissene holder Linux-kjernen styr på flere tidsstempler for filer og kataloger:

  1. Når ble filen sist endret (mtime)
  2. Når var siste gang filegenskaper og metadata ble endret (ctime)
  3. Når ble filen sist åpnet (atime)
  4. Du kan bruke kommandoen statfor å vise informasjon om en fil eller katalog. Her er filen / Etc / fstab fra en av mine testservere:

$ 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

Her kan du se at denne filen ble opprettet 25. april 2019 da jeg installerte systemet. Min fil / Etc / fstab ble sist endret 16. mai 2019, og alle andre attributter ble endret omtrent samtidig.

Hvis jeg kopierer / Etc / fstab til en ny fil, datoene endres for å indikere at det er 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 hvis jeg bare gir nytt navn til filen uten å endre innholdet, vil Linux bare oppdatere tidspunktet filen ble endret:

$ 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

Disse tidsstemplene er svært nyttige for enkelte Unix-programmer. For eksempel er biff et program som varsler deg når det er en ny melding i e-posten din. I dag er det få som bruker biff, men i tiden da postkasser var lokale for systemet, var biff ganske vanlig.

Hvordan vet programmet om du har ny post i innboksen din? biff sammenligner det siste endrede tidspunktet (da innboksfilen ble oppdatert med en ny e-postmelding) og siste tilgangstid (siste gang du leste e-posten din). Hvis endringen skjedde senere enn tilgang, vil biff forstå at et nytt brev har kommet og vil varsle deg om det. Mutt-e-postklienten fungerer omtrent på samme måte.

Det siste tidsstempelet for tilgang er også nyttig hvis du trenger å samle inn filsystembruksstatistikk og justere ytelsen. Systemadministratorer må vite hvilke objekter som får tilgang til, slik at de kan konfigurere filsystemet deretter.

Men de fleste moderne programmer trenger ikke lenger denne etiketten, så det var et forslag om å ikke bruke den. I 2007 diskuterte Linus Torvalds og flere andre kjerneutviklere en tid i sammenheng med et ytelsesproblem. Linux-kjerneutvikler Ingo Molnar kom med følgende poeng om atime og ext3-filsystemet:

"Det er ganske merkelig at alle Linux-skrivebord og -servere lider av merkbar I/O-ytelsesforringelse på grunn av konstante tidsoppdateringer, selv om det bare er to ekte brukere: tmpwatch [som kan konfigureres til å bruke ctime, så det er ikke et stort problem] og noen sikkerhetskopieringsverktøy."

Men folk bruker fortsatt noen programmer som trenger denne etiketten. Så fjerning av atime vil ødelegge funksjonaliteten deres. Linux-kjerneutviklere bør ikke krenke brukerfriheten.

Salomos løsning

Det er mange applikasjoner inkludert i Linux-distribusjoner og i tillegg kan brukere laste ned og installere andre programmer i henhold til deres behov. Dette er en viktig fordel med et åpen kildekode OS. Men dette gjør det vanskelig å optimalisere filsystemets ytelse. Fjerning av ressurskrevende komponenter kan forstyrre systemet.

Som et kompromiss har Linux-kjerneutviklerne introdusert et nytt relétidsalternativ som er ment å finne en balanse mellom ytelse og kompatibilitet:

atime oppdateres bare hvis forrige tilgangstid er mindre enn gjeldende modifikasjons- eller statusendringstid... Siden Linux 2.6.30 bruker kjernen dette alternativet som standard (med mindre noatime er spesifisert)... Også siden Linux 2.6.30 . 1, siste tilgangstidspunkt for en fil oppdateres alltid hvis den er mer enn XNUMX dag gammel.

Moderne Linux-systemer (siden Linux 2.6.30, utgitt i 2009) bruker allerede relétid, noe som burde gi et virkelig stort ytelsesløft. Dette betyr at du ikke trenger å konfigurere filen / Etc / fstab, og med relétid kan du stole på standarden.

Forbedre systemytelsen med noatime

Men hvis du vil justere systemet for å få maksimal ytelse, er det fortsatt mulig å deaktivere en tid.

Ytelsesendringen er kanskje ikke særlig merkbar på veldig raske moderne stasjoner (som NVME eller Fast SSD), men det er en liten økning der.

Hvis du vet at du ikke bruker programvare som krever atime, kan du forbedre ytelsen litt ved å aktivere noatime-alternativet i filen /etc/fstab. Etter dette vil ikke kjernen oppdatere hele tiden. Bruk noatime-alternativet når du monterer 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

Endringene trer i kraft neste gang du starter på nytt.

Om rettighetene til annonsering

Trenger du en server for å være vert for nettstedet ditt? Vårt firma tilbyr pålitelige servere med en daglig eller engangsbetaling er hver server koblet til en Internett-kanal på 500 megabit og er beskyttet mot DDoS-angrep gratis!

Hvordan og hvorfor noatime-alternativet forbedrer ytelsen til Linux-systemer

Kilde: www.habr.com

Legg til en kommentar