Kako in zakaj možnost noatime izboljša delovanje sistemov Linux

Atime posodobitev vpliva na delovanje sistema. Kaj se tam dogaja in kaj storiti glede tega - preberite članek.

Kako in zakaj možnost noatime izboljša delovanje sistemov Linux
Kadarkoli posodobim Linux na domačem računalniku, moram rešiti določene težave. Z leti je to postalo navada: varnostno kopiram svoje datoteke, obrišem sistem, vse namestim od začetka, obnovim svoje datoteke in nato znova namestim svoje najljubše aplikacije. Tudi sistemske nastavitve spreminjam po svoje. Včasih vzame preveč časa. In pred kratkim sem se spraševal, ali potrebujem ta glavobol.

Čas je eden od treh časovnih žigov za datoteke v Linuxu (več o tem pozneje). Zlasti sem se spraševal, ali bi bilo še vedno dobro onemogočiti atime v novejših sistemih Linux. Ker se atime posodobi ob vsakem dostopu do datoteke, sem ugotovil, da pomembno vpliva na delovanje sistema.
Pred kratkim sem nadgradil na Fedoro 32 in iz navade začel z onemogočanjem atime. Pomislil sem: ali ga res potrebujem? Odločil sem se preučiti to vprašanje in to je tisto, kar sem izkopal.

Nekaj ​​o časovnih žigih datotek

Če želite to ugotoviti, morate stopiti korak nazaj in se spomniti nekaj stvari o datotečnih sistemih Linux in o tem, kako jedro označuje datoteke in imenike s časovnimi žigi. Datum zadnje spremembe datotek in imenikov si lahko ogledate tako, da zaženete ukaz ls -l (dolg) ali preprosto tako, da pogledate informacije o tem v upravitelju datotek. Toda v zakulisju jedro Linuxa spremlja več časovnih žigov za datoteke in imenike:

  1. Kdaj je bila datoteka nazadnje spremenjena (mtime)
  2. Kdaj so bile nazadnje spremenjene lastnosti datoteke in metapodatki (ctime)
  3. Kdaj je bil nazadnje dostopan do datoteke (atime)
  4. Uporabite lahko ukaz statza ogled informacij o datoteki ali imeniku. Tukaj je datoteka / etc / fstab iz enega od mojih testnih strežnikov:

$ 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

Tukaj lahko vidite, da je bila ta datoteka ustvarjena 25. aprila 2019, ko sem namestil sistem. Moja datoteka / etc / fstab je bil nazadnje spremenjen 16. maja 2019 in vsi drugi atributi so bili spremenjeni približno ob istem času.

Če kopiram / etc / fstab v novo datoteko se datumi spremenijo, kar pomeni, da gre za novo datoteko:

$ 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

Toda če samo preimenujem datoteko, ne da bi spremenil njeno vsebino, bo Linux posodobil samo čas, ko je bila datoteka spremenjena:

$ 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

Ti časovni žigi so zelo uporabni za določene programe Unix. Na primer, biff je program, ki vas obvesti, ko je v vaši e-pošti novo sporočilo. Dandanes malo ljudi uporablja biff, toda v dneh, ko so bili nabiralniki lokalni za sistem, je bil biff precej pogost.

Kako program ve, ali imate v mapi »Prejeto« novo pošto? biff primerja čas zadnje spremembe (ko je bila datoteka prejeto posodobljena z novim e-poštnim sporočilom) in čas zadnjega dostopa (ko ste zadnjič prebrali svojo e-pošto). Če je do spremembe prišlo pozneje kot pri dostopu, bo biff razumel, da je prispelo novo pismo in vas o tem obvestil. E-poštni odjemalec Mutt deluje približno na enak način.

Časovni žig zadnjega dostopa je uporaben tudi, če morate zbrati statistiko uporabe datotečnega sistema in prilagoditi zmogljivost. Sistemski skrbniki morajo vedeti, do katerih objektov se dostopa, da lahko ustrezno konfigurirajo datotečni sistem.

Toda večina sodobnih programov te oznake ne potrebuje več, zato je bil predlog, da se je ne uporablja. Leta 2007 so Linus Torvalds in številni drugi razvijalci jedra razpravljali o atime v kontekstu težave z zmogljivostjo. Razvijalec jedra Linuxa Ingo Molnar je povedal naslednje o atime in datotečnem sistemu ext3:

»Precej nenavadno je, da vsako namizje in strežnik Linux trpi opazno poslabšanje zmogljivosti V/I zaradi nenehnih posodobitev atime, čeprav sta samo dva resnična uporabnika: tmpwatch [ki ga je mogoče konfigurirati za uporabo ctime, tako da ni velik problem] in nekaj orodij za varnostno kopiranje."

Toda ljudje še vedno uporabljajo nekatere programe, ki potrebujejo to oznako. Če torej odstranite atime, bo njihova funkcionalnost prekinjena. Razvijalci jedra Linuxa ne smejo posegati v svobodo uporabnika.

Salomonova rešitev

V distribucijah Linuxa je vključenih veliko aplikacij, poleg tega pa lahko uporabniki prenesejo in namestijo druge programe glede na svoje potrebe. To je ključna prednost odprtokodnega operacijskega sistema. Vendar je zaradi tega težko optimizirati delovanje datotečnega sistema. Odstranjevanje komponent, ki zahtevajo veliko virov, lahko povzroči motnje v delovanju sistema.

Kot kompromis so razvijalci jedra Linuxa uvedli novo možnost zaporednega prenosa, ki naj bi dosegla ravnotežje med zmogljivostjo in združljivostjo:

atime se posodobi le, če je prejšnji čas dostopa krajši od trenutnega časa za spremembo ali spremembo statusa ... Od Linuxa 2.6.30 naprej jedro uporablja to možnost privzeto (razen če ni določen noatime) ... Tudi od Linuxa 2.6.30 naprej. 1, se čas zadnjega dostopa do datoteke vedno posodobi, če je starejša od XNUMX dne.

Sodobni sistemi Linux (od Linuxa 2.6.30, izdanega leta 2009) že uporabljajo časovno prekinitev, kar bi moralo resnično močno povečati zmogljivost. To pomeni, da vam datoteke ni treba konfigurirati / etc / fstab, pri relejnem času pa se lahko zanesete na privzeto.

Izboljšanje delovanja sistema z noatime

Če pa želite svoj sistem prilagoditi tako, da bo dosegel največjo možno zmogljivost, je še vedno mogoče onemogočiti atime.

Sprememba zmogljivosti morda ni zelo opazna na zelo hitrih sodobnih pogonih (kot sta NVME ali hitri SSD), vendar je tam rahlo povečanje.

Če veste, da ne uporabljate programske opreme, ki zahteva atime, lahko nekoliko izboljšate zmogljivost tako, da omogočite možnost noatime v datoteki /etc/fstab. Po tem se jedro ne bo nenehno posodabljalo. Pri nameščanju datotečnega sistema uporabite možnost 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

Spremembe bodo začele veljati ob naslednjem ponovnem zagonu.

O pravicah oglaševanja

Ali potrebujete strežnik za gostovanje vaše spletne strani? Naše podjetje ponuja zanesljivi strežniki z dnevnim ali enkratnim plačilom je vsak strežnik povezan z internetnim kanalom 500 megabitov in je brezplačno zaščiten pred DDoS napadi!

Kako in zakaj možnost noatime izboljša delovanje sistemov Linux

Vir: www.habr.com

Dodaj komentar