Hogyan és miért javítja a noatime opció a Linux rendszerek teljesítményét

Az időközi frissítés befolyásolja a rendszer teljesítményét. Mi történik ott, és mit kell tenni ellene - olvassa el a cikket.

Hogyan és miért javítja a noatime opció a Linux rendszerek teljesítményét
Amikor frissítem a Linuxot az otthoni számítógépemen, meg kell oldanom bizonyos problémákat. Az évek során ez szokássá vált: biztonsági másolatot készítek a fájljairól, törlöm a rendszert, mindent a semmiből telepítek, visszaállítom a fájlokat, majd újratelepítem kedvenc alkalmazásaimat. A rendszerbeállításokat is módosítom magamnak megfelelően. Néha túl sok időt vesz igénybe. Nemrég pedig azon töprengtem, hogy szükségem van-e erre a fejfájásra.

Egy idő egyike a három időbélyegnek a Linuxban lévő fájlokhoz (erről később). Különösen azon tűnődtem, vajon jó ötlet lenne-e időnként letiltani az újabb Linux rendszereken. Mivel az atime minden alkalommal frissül a fájl elérésekor, rájöttem, hogy ez jelentős hatással van a rendszer teljesítményére.
Nemrég frissítettem Fedora 32-re, és megszokásból az időnkénti letiltással kezdtem. Arra gondoltam: tényleg szükségem van rá? Úgy döntöttem, hogy tanulmányozom ezt a kérdést, és ezt ástam ki.

Egy kicsit a fájlok időbélyegeiről

Ennek kiderítéséhez egy lépést kell hátralépnie, és emlékeznie kell néhány dologra a Linux fájlrendszerekről, valamint arról, hogy a kernel hogyan bélyegzi a fájlokat és könyvtárakat. A parancs futtatásával megtekintheti a fájlok és könyvtárak legutóbbi módosításának dátumát ls -l (hosszú) vagy egyszerűen csak a fájlkezelőben nézegeti az ezzel kapcsolatos információkat. De a színfalak mögött a Linux kernel több időbélyeget is nyomon követ a fájlok és könyvtárak számára:

  1. Mikor módosították utoljára a fájlt (mtime)
  2. Mikor változtak utoljára a fájl tulajdonságai és a metaadatok (ctime)
  3. Mikor volt utoljára elérve a fájlhoz (időpont)
  4. Használhatja a parancsot államiegy fájl vagy könyvtár információinak megtekintéséhez. Itt van a fájl / Etc / fstab az egyik tesztszerveremről:

$ 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

Itt láthatja, hogy ez a fájl 25. április 2019-én jött létre, amikor telepítettem a rendszert. Az én fájlom / Etc / fstab legutóbb 16. május 2019-án módosult, és az összes többi attribútum is nagyjából ugyanebben az időben módosult.

Ha másolok / Etc / fstab egy új fájlra, a dátumok megváltoznak, jelezve, hogy új fájlról van szó:

$ 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

De ha csak átnevezem a fájlt anélkül, hogy megváltoztatnám a tartalmát, a Linux csak akkor frissíti, amikor a fájl módosult:

$ 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

Ezek az időbélyegek nagyon hasznosak bizonyos Unix programok esetében. Például a biff egy olyan program, amely értesíti, ha új üzenet érkezik az e-mailbe. Manapság kevesen használják pofon, de azokban az időkben, amikor a postafiókok helyiek voltak a rendszerben, a biff meglehetősen gyakori volt.

Honnan tudja a program, hogy van-e új levél a beérkező levelek között? A biff összehasonlítja az utolsó módosítás idejét (amikor a beérkező levelek fájlja új e-mail üzenettel frissült) és az utolsó hozzáférési időt (amikor utoljára olvasta az e-mailt). Ha a változás később történt, mint a hozzáférés, akkor a biff megérti, hogy új levél érkezett, és értesíti Önt erről. A Mutt e-mail kliens nagyjából ugyanígy működik.

Az utolsó hozzáférési időbélyeg akkor is hasznos, ha fájlrendszerhasználati statisztikákat kell gyűjtenie és a teljesítményt hangolnia kell. A rendszergazdáknak tudniuk kell, hogy milyen objektumokhoz férnek hozzá, hogy ennek megfelelően konfigurálhassák a fájlrendszert.

De a legtöbb modern programnak már nincs szüksége erre a címkére, ezért volt egy javaslat, hogy ne használják. 2007-ben Linus Torvalds és számos más kernelfejlesztő időnként egy teljesítményprobléma kapcsán tárgyalt. A Linux kernel fejlesztője, Ingo Molnar a következőket tette az atime-ról és az ext3 fájlrendszerről:

"Elég furcsa, hogy minden Linux asztali számítógép és szerver észrevehető I/O teljesítményromlást szenved az állandó időnkénti frissítések miatt, pedig csak két valódi felhasználó van: a tmpwatch [amely beállítható a ctime használatára, szóval nem nagy probléma] és néhány biztonsági mentési eszköz."

De az emberek továbbra is használnak bizonyos programokat, amelyeknek szükségük van erre a címkére. Így az időnkénti eltávolítás megszakítja a funkcionalitásukat. A Linux kernel fejlesztői nem sérthetik meg a felhasználói szabadságot.

Salamon megoldása

A Linux disztribúciók számos alkalmazást tartalmaznak, és ezen felül a felhasználók igényeik szerint más programokat is letölthetnek és telepíthetnek. Ez a nyílt forráskódú operációs rendszer fő előnye. Ez azonban megnehezíti a fájlrendszer teljesítményének optimalizálását. Az erőforrás-igényes összetevők eltávolítása megzavarhatja a rendszert.

Kompromisszumként a Linux kernel fejlesztői bevezettek egy új relaytime opciót, amelynek célja a teljesítmény és a kompatibilitás közötti egyensúly megteremtése:

Az atime csak akkor frissül, ha az előző hozzáférési idő rövidebb, mint az aktuális módosítási vagy állapotváltozási idő... A Linux 2.6.30 óta a kernel alapértelmezés szerint ezt az opciót használja (hacsak nincs megadva a noatime)... Valamint a Linux 2.6.30 óta. 1, a fájl utolsó hozzáférési ideje mindig frissül, ha az XNUMX napnál régebbi.

A modern Linux rendszerek (a 2.6.30-ben megjelent Linux 2009 óta) már relaytime-t használnak, ami igazán nagy teljesítménynövekedést jelenthet. Ez azt jelenti, hogy nem kell konfigurálnia a fájlt / Etc / fstab, és a relaytime segítségével az alapértelmezettre hagyatkozhat.

A rendszer teljesítményének javítása noatime segítségével

De ha a rendszert a maximális teljesítményre szeretné hangolni, akkor is lehetséges az időnkénti letiltása.

Lehet, hogy a teljesítményváltozás nem nagyon észrevehető a nagyon gyors modern meghajtókon (például NVME vagy Fast SSD), de ott van egy kis növekedés.

Ha tudja, hogy nem olyan szoftvert használ, amely időigényes, akkor némileg javíthatja a teljesítményt, ha engedélyezi a noatime opciót a fájlban /etc/fstab. Ezt követően a kernel nem fog folyamatosan időnként frissülni. Használja a noatime opciót a fájlrendszer csatlakoztatásakor:

/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

A változtatások a következő újraindításkor lépnek érvénybe.

A Reklám Jogairól

Szüksége van egy szerverre a weboldala tárolásához? Cégünk kínál megbízható szerverek napi vagy egyszeri fizetéssel minden szerver egy 500 megabites Internet csatornára csatlakozik és ingyenesen védett a DDoS támadások ellen!

Hogyan és miért javítja a noatime opció a Linux rendszerek teljesítményét

Forrás: will.com

Hozzászólás