Hoe en waarom de noatime-optie de prestaties van Linux-systemen verbetert

De update van atime beïnvloedt de systeemperformantie. Wat gebeurt hier eigenlijk en wat kun je ermee doen — lees het in het artikel.

Hoe en waarom de noatime-optie de prestaties van Linux-systemen verbetert
Elke keer dat ik Linux op mijn thuiscomputer bijwerk, moet ik bepaalde taken uitvoeren. Na verloop van tijd is dit een gewoonte geworden: ik maak back-ups van mijn bestanden, wis het systeem, installeer alles opnieuw, herstel mijn bestanden en installeer vervolgens mijn favoriete applicaties opnieuw. Ik pas ook de systeeminstellingen aan naar mijn voorkeur. Soms kost dit te veel tijd. Onlangs vroeg ik me af of ik deze hoofdpijn echt nodig heb.

atime is een van de drie tijdstempels voor bestanden in Linux (meer hierover later). Ik vroeg me vooral af of ik atime nog steeds zou moeten uitschakelen in latere Linux-systemen. Aangezien atime elke keer wordt bijgewerkt wanneer er toegang wordt verkregen tot een bestand, realiseerde ik me dat het een aanzienlijke invloed heeft op de systeemperformantie.
Onlangs heb ik mijn systeem geüpgraded naar Fedora 32 en begon automatisch met het uitschakelen van atime. Ik stelde me de vraag: heb ik het überhaupt nodig? Ik besloot deze kwestie nader te onderzoeken en dit zijn mijn bevindingen.

Een beetje over bestands tijdstempels

Om het te begrijpen, moet je een stap terugnemen en een paar dingen over Linux-bestandssystemen en hoe de kernel tijdstempels aan bestanden en mappen toekent, herinneren. Je kunt de datum van de laatste wijziging van bestanden en mappen zien door het commando ls -l (long) uit te voeren of gewoon de informatie hierover in de bestandsbeheerder te bekijken. Maar achter de schermen houdt de Linux-kernel verschillende tijdstempels bij voor bestanden en mappen:

  1. Wanneer het bestand voor het laatst is gewijzigd (mtime)
  2. Wanneer de eigenschappen en metadata van het bestand voor het laatst zijn gewijzigd (ctime)
  3. Wanneer het bestand voor het laatst is geopend (atime)
  4. Je kunt het commando statgebruiken om de gegevens over een bestand of map te bekijken. Hier is een bestand /etc/fstab van een van mijn testservers:

$ 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

Hieruit blijkt dat dit bestand is aangemaakt op 25 april 2019, toen ik het systeem installeerde. Mijn bestand /etc/fstab werd voor het laatst gewijzigd op 16 mei 2019, en alle andere attributen zijn ongeveer tegelijkertijd gewijzigd.

Als ik kopieer /etc/fstab naar een nieuw bestand, veranderen de datums, wat aangeeft dat het een nieuw bestand is:

$ sudo cp fstab fstab.bak
$ stat fstab.bak
  Bestand: fstab.bak
  Grootte: 261             Blokken: 8          IO Blok: 4096   regulier bestand
Apparaat: b303h/45827d    Inode: 2105664     Links: 1
Toegang: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_t:s0
Toegang: 2020-05-12 17:53:58.442659986 -0500
Wijzig: 2020-05-12 17:53:58.443659981 -0500
Verander: 2020-05-12 17:53:58.443659981 -0500
 Geboorte: 2020-05-12 17:53:58.442659986 -0500

Maar als ik gewoon het bestand hernoem zonder de inhoud te wijzigen, zal Linux alleen de tijd van bestandstoegang bijwerken:

$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
  Bestand: fstab.tmp
  Grootte: 261             Blokken: 8          IO Blok: 4096   regulier bestand
Apparaat: b303h/45827d    Inode: 2105664     Links: 1
Toegang: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_t:s0
Toegang: 2020-05-12 17:53:58.442659986 -0500
Wijzig: 2020-05-12 17:53:58.443659981 -0500
Verander: 2020-05-12 17:54:24.576508232 -0500
 Geboorte: 2020-05-12 17:53:58.442659986 -0500

Deze tijdstempels zijn zeer nuttig voor bepaalde Unix-programma's. Bijvoorbeeld, biff is een programma dat je informeert over nieuwe berichten in je e-mail. Tegenwoordig gebruikt bijna niemand biff, maar in de dagen dat postvakken lokaal op het systeem waren, was biff vrij wijdverspreid.

Hoe weet het programma of je nieuwe e-mail in je inbox hebt? biff vergelijkt de tijd van de laatste wijziging (wanneer het inkomende e-mailbestand is bijgewerkt met een nieuw e-mailbericht) en de tijd van de laatste toegang (de laatste keer dat je je e-mail hebt gelezen). Als de wijziging later heeft plaatsgevonden dan de toegang, begrijpt biff dat er een nieuwe e-mail is binnengekomen en zal het je dat melden. De e-mailclient Mutt werkt ongeveer hetzelfde.

De tijdstempel voor de laatste toegang is ook nuttig als je statistieken over het gebruik van het bestandssysteem moet verzamelen en de prestaties moet optimaliseren. Systeembeheerders moeten weten welke objecten worden benaderd om het bestandssysteem dienovereenkomstig te optimaliseren.

Maar voor de meeste moderne programma's is deze tijdstempel niet langer nodig, daarom is er een voorstel om deze niet meer te gebruiken. In 2007 bespraken Linus Torvalds en verschillende andere kernelontwikkelaars atime in de context van prestatieproblemen. Kernelontwikkelaar Ingo Molnar maakte de volgende opmerking over atime en het ext3-bestandssysteem:

Het is behoorlijk vreemd dat elke desktop en server met Linux last heeft van een merkbare afname van de I/O-prestaties door constante updates van atime, terwijl er in feite maar twee echte gebruikers zijn: tmpwatch [dat kan worden ingesteld om ctime te gebruiken, zodat dit geen groot probleem is] en enkele back-uptools.

Maar mensen blijven sommige programma's gebruiken die deze tag nodig hebben. Dus het verwijderen van atime zal hun werking verstoren. De Linux-kernelontwikkelaars mogen de vrijheid van de gebruiker niet beperken.

Salomonische oplossing

Er zijn talloze toepassingen inbegrepen in Linux-distributies, en gebruikers kunnen bovendien andere programma's downloaden en installeren naar behoefte. Dit is een belangrijk voordeel van open source-besturingssystemen. Maar dit bemoeilijkt de optimalisatie van de prestaties van je bestandssysteem. Het verwijderen van resource-intensieve componenten kan de werking van het systeem verstoren.

Als compromis hebben de kernelontwikkelaars van Linux een nieuwe optie relaytime geïntroduceerd, die bedoeld is om een balans te bieden tussen prestaties en compatibiliteit:

atime wordt alleen bijgewerkt als de vorige toegangs tijd lager is dan de huidige modificatie of statuswijziging … Vanaf Linux 2.6.30 gebruikt de kernel deze optie standaard (tenzij noatime is opgegeven) … Bovendien, vanaf Linux 2.6.30 wordt de laatste toegangs tijd van een bestand altijd bijgewerkt als deze meer dan 1 dag oud is.

Moderne Linux-systemen (vanaf Linux 2.6.30, uitgebracht in 2009) gebruiken al relaytime, wat een aanzienlijke prestatieverbetering zou moeten opleveren. Dit betekent dat je het bestand niet hoeft te configureren, en met relaytime kun je vertrouwen op de standaardwaarde. /etc/fstab, en met relaytime kun je rekenen op de standaardwaarde.

Verbetering van de systeemprestaties met noatime

Maar als je je systeem wilt afstemmen voor maximale prestaties, is het nog steeds mogelijk om atime uit te schakelen.

De prestatieverbetering is misschien niet erg merkbaar op zeer snelle moderne schijven (zoals NVME of snelle SSD's), maar er is een kleine verbetering.

Als je weet dat je geen software gebruikt die atime vereist, kun je de prestaties een beetje verhogen door de optie noatime in het bestand in te schakelen. /etc /fstab. Na deze stap zal de kernel atime niet meer voortdurend bijwerken. Gebruik de optie noatime bij het monteren van het bestandssysteem:

/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

Wijzigingen gelden bij de volgende herstart.

Adverteervermelding

Heeft u een server nodig voor het hosten van uw website? Ons bedrijf biedt betrouwbare servers met dagelijkse of eenmalige betalingen; elke server is verbonden met een internetverbinding van 500 Megabit en gratis beschermd tegen DDoS-aanvallen!

Hoe en waarom de noatime-optie de prestaties van Linux-systemen verbetert

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster