Cum și de ce opțiunea noatime îmbunătățește performanța sistemelor Linux

Actualizarea atime afectează performanța sistemului. Ce se întâmplă acolo și ce ar trebui să facem — citiți în articol.

Cum și de ce opțiunea noatime îmbunătățește performanța sistemelor Linux
De fiecare dată când actualizez Linux pe computerul meu de acasă, trebuie să mă ocup de anumite sarcini. De-a lungul anilor, aceasta a devenit o obișnuință: fac copii de rezervă ale fișierelor mele, șterg sistemul, instalez totul de la zero, restabilesc fișierele, apoi instalez din nou aplicațiile mele preferate. De asemenea, îmi personalizez setările sistemului. Uneori, asta durează prea mult timp. Și recent m-am gândit dacă am nevoie de această durere de cap.

atime — una dintre cele trei mărci temporale pentru fișierele din Linux (mai multe despre asta mai târziu). În special, mă întrebam dacă ar trebui să dezactivez în continuare atime în sistemele Linux mai recente. Deoarece atime se actualizează de fiecare dată când se accesează un fișier, am realizat că aceasta are un impact semnificativ asupra performanței sistemului.
Recent m-am actualizat la Fedora 32 și din obișnuință am început prin a dezactiva atime. M-am întrebat: am nevoie de ea în principiu? Am decis să investighez această problemă și iată ce am descoperit.

Puțin despre mărci temporale pentru fișiere

Pentru a înțelege, trebuie să facem un pas înapoi și să ne amintim câteva lucruri despre sistemele de fișiere Linux și despre cum nucleul atribuie mărci temporale fișierelor și directorilor. Puteți vedea data ultimei modificări a fișierelor și directorilor rulând comanda ls -l (lung) sau pur și simplu uitându-vă la informațiile despre acestea în managerul de fișiere. Dar în spatele scenei, nucleul Linux urmărește mai multe mărci temporale pentru fișiere și directoare:

  1. Când a fost modificat ultima dată fișierul (mtime)
  2. Când au fost modificate ultimele date și metadatele fișierului (ctime)
  3. Când a fost accesat ultima dată fișierul (atime)
  4. Puteți folosi comanda stat, pentru a vizualiza datele despre fișier sau director. Iată fișierul /etc/fstab de pe unul dintre serverele mele de testare:

$ stat fstab
  Fișier: fstab
  Dimensiune: 261             Blocuri: 8          IO Block: 4096   fișier obișnuit
Dispozitiv: b303h/45827d    Inod: 2097285     Linkuri: 1
Acces: (0664/-rw-rw-r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:etc_t:s0
Acces: 2019-04-25 21:10:18.083325111 -0500
Modificat: 2019-05-16 10:46:47.427686706 -0500
Schimbat: 2019-05-16 10:46:47.434686674 -0500
 Naștere: 2019-04-25 21:03:11.840496275 -0500

Aici se poate vedea că acest fișier a fost creat pe 25 aprilie 2019, când am instalat sistemul. Fișierul meu /etc/fstab a fost modificat ultima dată pe 16 mai 2019, iar toate celelalte atribute au fost schimbate aproximativ în același timp.

Dacă copiez /etc/fstab într-un fișier nou, datele se schimbă, indicând că acesta este un fișier nou:

$ sudo cp fstab fstab.bak
$ stat fstab.bak
  File: fstab.bak
  Size: 261             Blocks: 8          IO Block: 4096   fișier obișnuit
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

Dar dacă pur și simplu redenumesc fișierul, fără a-i schimba conținutul, Linux va actualiza doar timpul modificării fișierului:

$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
  File: fstab.tmp
  Size: 261             Blocks: 8          IO Block: 4096   fișier obișnuit
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

Aceste marcaje temporale sunt foarte utile pentru anumite programe Unix. De exemplu, biff este un program care vă notifică despre apariția unui nou mesaj în e-mail. Acum, puțini folosesc biff, dar în acele zile, când căsuțele de email erau locale pentru sistem, biff era destul de răspândit.

Cum știe programul dacă aveți un nou email în căsuța de primire? biff compară timpul ultimei modificări (când fișierul căsuței de email a fost actualizat cu un mesaj nou) și timpul ultimei accesări (ultima dată când ați citit emailul). Dacă modificarea a avut loc mai recent decât accesarea, atunci biff va înțelege că ați primit un nou mesaj și vă va informa despre acest lucru. Clientul de email Mutt funcționează cam la fel.

Marcajul timpului ultimei accesări este, de asemenea, util dacă trebuie să colectați statistici despre utilizarea sistemului de fișiere și să optimizați performanța. Administratorii de sistem trebuie să știe la ce obiecte se accesează pentru a configura adecvat sistemul de fișiere.

Dar majoritatea programelor moderne nu mai au nevoie de acest marcaj, astfel că a fost propus să nu fie folosit. În 2007, Linus Torvalds și câțiva alți dezvoltatori de kernel au discutat despre atime în contextul problemelor de performanță. Dezvoltatorul kernelului Linux Ingo Molnar a făcut următoarea observație despre atime și sistemul de fișiere ext3:

„Este destul de ciudat că fiecare desktop și server Linux suferă de o scădere semnificativă a performanței de intrare-ieșire din cauza actualizărilor constante ale atime, deși utilizatorii reali sunt doar doi: tmpwatch [care poate fi configurat pentru a folosi ctime, așa că nu este o mare problemă] și unele instrumente de backup.”

Dar oamenii continuă să folosească unele programe care au nevoie de această etichetă. Așadar, eliminarea atime va afecta funcționarea lor. Dezvoltatorii nucleului Linux nu ar trebui să îngrădească libertatea utilizatorilor.

Soluția lui Solomon

Distribuțiile Linux includ o mulțime de aplicații, iar pe lângă acestea, utilizatorii pot descărca și instala alte programe conform nevoilor lor. Acesta este un avantaj cheie al sistemelor de operare cu cod sursă deschis. Însă, acest lucru complică optimizarea performanței sistemului de fișiere. Eliminarea componentelor care consumă multe resurse poate afecta funcționarea sistemului.

Ca un compromis, dezvoltatorii nucleului Linux au implementat o nouă opțiune relaytime, care are rolul de a asigura un echilibru între performanță și compatibilitate:

atime se actualizează doar dacă timpul anterior de acces este mai mic decât timpul curent de modificare sau schimbare a stării... Începând cu Linux 2.6.30, nucleul folosește această opțiune în mod implicit (dacă nu este specificat noatime)... În plus, începând cu Linux 2.6.30, timpul ultimei accesări a unui fișier este întotdeauna actualizat dacă acesta are mai mult de 1 zi.

Sistemele moderne Linux (începând cu Linux 2.6.30, lansat în 2009) folosesc deja relaytime, ceea ce ar trebui să ofere un impuls semnificativ de performanță. Acest lucru înseamnă că nu trebuie să configurați fișierul /etc/fstab, iar cu relaytime puteți fi sigur de valoarea implicită.

Îmbunătățirea performanței sistemului cu ajutorul noatime

Dar dacă doriți să configurați sistemul pentru a obține maximum de performanță, dezactivarea atime este încă o opțiune.

Schimbarea performanței poate să nu fie foarte evidentă pe discurile moderne foarte rapide (precum NVME sau SSD-uri rapide), dar există o mică îmbunătățire.

Dacă știți că nu utilizați software care necesită atime, puteți îmbunătăți ușor performanța activând opțiunea noatime în fișierul /etc /fstab. După aceasta, nucleul nu va actualiza constant atime. Utilizați opțiunea noatime la montarea sistemului de fișiere:

/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

Modificările vor intra în vigoare la următoarea repornire.

În numele publicității

Aveți nevoie de un server pentru găzduirea site-ului? Compania noastră oferă servere fiabile cu plată zilnică sau unică, fiecare server fiind conectat la un canal de internet de 500 Megabiți și protejat gratuit împotriva atacurilor DDoS!

Cum și de ce opțiunea noatime îmbunătățește performanța sistemelor Linux

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster