Kaip ir kodėl noatime parinktis pagerina Linux sistemų našumą

Atime atnaujinimas turi įtakos sistemos veikimui. Kas ten vyksta ir ką su tuo daryti – skaitykite straipsnyje.

Kaip ir kodėl noatime parinktis pagerina Linux sistemų našumą
Kai atnaujinu Linux savo namų kompiuteryje, turiu išspręsti tam tikras problemas. Bėgant metams tai tapo įpročiu: darau atsargines failų kopijas, išvalau sistemą, įdiegiu viską nuo nulio, atkuriu failus, tada iš naujo įdiegiu mėgstamas programas. Taip pat keičiu sistemos nustatymus sau. Kartais tai užima per daug laiko. Ir neseniai susimąsčiau, ar man reikia šio galvos skausmo.

laikas yra vienas iš trijų „Linux“ failų laiko žymų (daugiau apie tai vėliau). Visų pirma, man buvo įdomu, ar vis dar būtų gera idėja išjungti naujesnėse „Linux“ sistemose. Kadangi „atime“ atnaujinamas kiekvieną kartą, kai pasiekiamas failas, supratau, kad tai daro didelę įtaką sistemos veikimui.
Neseniai atnaujinau į Fedora 32 ir iš įpročio pradėjau tam tikru metu išjungti. Pagalvojau: ar man to tikrai reikia? Nusprendžiau išstudijuoti šią problemą ir tai išsikasiau.

Šiek tiek apie failų laiko žymes

Norėdami tai išsiaiškinti, turite žengti žingsnį atgal ir prisiminti keletą dalykų apie Linux failų sistemas ir tai, kaip branduolys žymi failus ir katalogus. Vykdydami komandą galite pamatyti paskutinį failų ir katalogų modifikavimo datą ls -l (ilgas) arba tiesiog peržiūrėdami informaciją apie tai failų tvarkyklėje. Tačiau užkulisiuose „Linux“ branduolys stebi keletą failų ir katalogų laiko žymų:

  1. Kada paskutinį kartą failas buvo pakeistas (mtime)
  2. Kada paskutinį kartą buvo pakeistos failo savybės ir metaduomenys (ctime)
  3. Kada paskutinį kartą buvo pasiektas failas (laiku)
  4. Galite naudoti komandą statnorėdami peržiūrėti informaciją apie failą ar katalogą. Štai failas / etc / fstab iš vieno iš mano bandomųjų serverių:

$ 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

Čia matote, kad šis failas buvo sukurtas 25 m. balandžio 2019 d., kai įdiegiau sistemą. Mano failas / etc / fstab paskutinį kartą buvo pakeistas 16 m. gegužės 2019 d., o visi kiti atributai buvo pakeisti maždaug tuo pačiu metu.

Jei nukopijuosiu / etc / fstab į naują failą, datos pasikeičia taip, kad tai būtų naujas failas:

$ 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

Bet jei tik pervardysiu failą nekeisdamas jo turinio, „Linux“ atnaujins tik failo modifikavimo laiką:

$ 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

Šios laiko žymos yra labai naudingos tam tikroms Unix programoms. Pavyzdžiui, biff yra programa, kuri praneša, kai el. laiške yra naujas pranešimas. Šiuo metu mažai žmonių naudojasi biff, tačiau tais laikais, kai pašto dėžutės buvo vietinės sistemoje, biff buvo gana įprasta.

Kaip programa žino, ar jūsų pašto dėžutėje yra naujų laiškų? biff lygina paskutinio modifikavimo laiką (kai gautųjų failas buvo atnaujintas nauju el. pašto pranešimu) ir paskutinio prieigos laiką (paskutinį kartą, kai skaitėte savo el. laišką). Jei pakeitimas įvyko vėliau nei prieiga, biff supras, kad atėjo naujas laiškas ir apie tai praneš. „Mutt“ el. pašto klientas veikia panašiai.

Paskutinė prieigos laiko žyma taip pat naudinga, jei reikia rinkti failų sistemos naudojimo statistiką ir suderinti našumą. Sistemos administratoriai turi žinoti, kokie objektai yra pasiekiami, kad galėtų atitinkamai konfigūruoti failų sistemą.

Tačiau daugumai šiuolaikinių programų šios etiketės nebereikia, todėl buvo pasiūlyta jos nenaudoti. 2007 m. Linusas Torvaldsas ir keli kiti branduolio kūrėjai diskutavo apie našumo problemą. „Linux“ branduolio kūrėjas Ingo Molnaras atkreipė dėmesį į „atime“ ir „ext3“ failų sistemą:

„Gana keista, kad kiekvienas Linux stalinis kompiuteris ir serveris patiria pastebimą I/O našumo pablogėjimą dėl nuolatinių atnaujinimų, nors yra tik du tikri vartotojai: tmpwatch [kurį galima sukonfigūruoti naudoti ctime, todėl tai nėra didelė problema] ir kai kurie atsarginiai įrankiai“.

Tačiau žmonės vis dar naudoja kai kurias programas, kurioms reikia šios etiketės. Taigi pašalinus vieną kartą, jų funkcionalumas bus pažeistas. Linux branduolio kūrėjai neturėtų pažeisti vartotojo laisvės.

Saliamono sprendimas

Į Linux platinimus įtraukta daug programų, be to, vartotojai gali atsisiųsti ir įdiegti kitas programas pagal savo poreikius. Tai yra pagrindinis atvirojo kodo OS pranašumas. Tačiau dėl to sunku optimizuoti failų sistemos našumą. Jei pašalinsite daug išteklių reikalaujančius komponentus, sistema gali sutrikti.

Kaip kompromisą „Linux“ branduolio kūrėjai pristatė naują perdavimo laiko parinktį, kuria siekiama išlaikyti našumo ir suderinamumo pusiausvyrą:

atime atnaujinamas tik tuo atveju, jei ankstesnis prieigos laikas yra mažesnis už dabartinį modifikavimo ar būsenos keitimo laiką... Nuo Linux 2.6.30 branduolys šią parinktį naudoja pagal nutylėjimą (nebent nurodytas noatime)... Taip pat, kadangi Linux 2.6.30 . 1, paskutinis failo prieigos laikas visada atnaujinamas, jei jis yra senesnis nei XNUMX diena.

Šiuolaikinės Linux sistemos (nuo Linux 2.6.30, išleistos 2009 m.) jau naudoja relaytime, o tai turėtų duoti tikrai didelį našumo postūmį. Tai reiškia, kad jums nereikia konfigūruoti failo / etc / fstab, o naudodami relaytime galite pasikliauti numatytuoju.

Sistemos našumo gerinimas naudojant noatime

Bet jei norite sureguliuoti savo sistemą, kad jos našumas būtų maksimalus, vis tiek galima išjungti tam tikrą laiką.

Veikimo pokytis gali būti nelabai pastebimas labai greituose šiuolaikiniuose diskuose (pvz., NVME arba Fast SSD), tačiau ten yra nedidelis padidėjimas.

Jei žinote, kad nenaudojate programinės įrangos, kuriai reikia laiko, galite šiek tiek pagerinti našumą faile įjungę parinktį noatime /etc/fstab. Po to branduolys nebus nuolat atnaujinamas. Diegdami failų sistemą naudokite parinktį 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

Pakeitimai įsigalios, kai kitą kartą paleisite iš naujo.

Dėl reklamos teisių

Ar jums reikalingas serveris jūsų svetainei priglobti? Mūsų įmonė siūlo patikimi serveriai su kasdieniu arba vienkartiniu mokėjimu kiekvienas serveris yra prijungtas prie 500 megabitų interneto kanalo ir yra nemokamai apsaugotas nuo DDoS atakų!

Kaip ir kodėl noatime parinktis pagerina Linux sistemų našumą

Šaltinis: www.habr.com

Добавить комментарий