Как и защо опцията noatime увеличава производителността на Linux системите

Обновяването на atime влияе на производителността на системата. Какво точно се случва и какво да правите с това - прочетете в статията.

Как и защо опцията noatime увеличава производителността на Linux системите
Всеки път, когато актуализирам Linux на домашния си компютър, се сблъсквам с определени задачи. С годините това стана навик: правя резервни копия на файловете си, изтривам системата, инсталирам всичко отначало, възстановявам файловете си и след това отново инсталирам любимите си приложения. Също така променям настройките на системата за моите нужди. Понякога това отнема прекалено много време. И наскоро се замислих, нужна ли ми е тази главоболия.

atime — една от трите времеви печати за файлове в Linux (повече за това по-късно). По-специално, се запитах дали все още трябва да деактивирам atime в по-новите версии на Linux. Тъй като atime се актуализира всеки път, когато файлът се достъпи, осъзнах, че оказва значително влияние върху производителността на системата.
Наскоро ъпгрейднах до Fedora 32 и по навик започнах с деактивирането на atime. Запитах се: необходима ли ми е изобщо? Реших да проуча този въпрос и ето какво открих.

Няколко думи за времевите печати на файловете

За да разберете, трябва да направите крачка назад и да си спомните няколко неща за файловите системи на Linux и как ядрото присвоява времеви печати на файловете и директориите. Можете да видите датата на последната промяна на файловете и директориите, като изпълните командата ls -l (дълго) или просто като погледнете информацията за това в файловия мениджър. Но зад кулисите ядрото на Linux проследява няколко времеви бележки за файлове и директории:

  1. Кога за последен път е модифициран файлът (mtime)
  2. Кога за последен път са променени свойствата и метаданните на файла (ctime)
  3. Кога за последен път е достъпен файлът (atime)
  4. Можете да използвате командата stat, за да видите данните за файла или директорията. Ето файлът /etc/fstab от един от моите тестови сървъри:

$ 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

Тук виждаме, че този файл е създаден на 25 април 2019 г., когато инсталирах системата. Моят файл /etc/fstab е бил променян за последен път на 16 май 2019 г., а всички останали атрибути са били променени приблизително по същото време.

Ако копирам /etc/fstab в нов файл, датите се променят, указвайки, че това е нов файл:

$ sudo cp fstab fstab.bak
$ stat fstab.bak
  Файл: fstab.bak
  Размер: 261             Блокове: 8          IO Блок: 4096   редовен файл
Устройство: b303h/45827d    Идентификатор: 2105664     Линкове: 1
Достъп: (0644/-rw-r--r--)  UID: (    0/    root)   GID: (    0/    root)
Контекст: unconfined_u:object_r:etc_t:s0
Достъп: 2020-05-12 17:53:58.442659986 -0500
Модификация: 2020-05-12 17:53:58.443659981 -0500
Промяна: 2020-05-12 17:53:58.443659981 -0500
 Раждане: 2020-05-12 17:53:58.442659986 -0500

Но ако просто преименувам файла, без да променям съдържанието му, Linux ще актуализира само времето на промяна на файла:

$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
  Файл: fstab.tmp
  Размер: 261             Блокове: 8          IO Блок: 4096   редовен файл
Устройство: b303h/45827d    Идентификатор: 2105664     Линкове: 1
Достъп: (0644/-rw-r--r--)  UID: (    0/    root)   GID: (    0/    root)
Контекст: unconfined_u:object_r:etc_t:s0
Достъп: 2020-05-12 17:53:58.442659986 -0500
Модификация: 2020-05-12 17:53:58.443659981 -0500
Промяна: 2020-05-12 17:54:24.576508232 -0500
 Раждане: 2020-05-12 17:53:58.442659986 -0500

Тези времеви марки са много полезни за определени Unix програми. Например, biff — това е програма, която ви уведомява за появата на ново съобщение по електронната поща. В момента малко хора я използват biff, но в онези дни, когато пощенските кутии бяха локални за системата, biff беше доста широко разпространен.

Как програмата разбира, че имате нова поща в входящите? biff сравнява времето на последна промяна (когато файлът на входящата поща е бил обновен с ново електронно съобщение) и времето на последен достъп (последния път, когато сте прочели електронната си поща). Ако промяната е станала по-късно от достъпа, то biff ще разбере, че е пристигнало ново писмо и ще ви уведоми за това. Пощенският клиент Mutt работи по подобен начин.

Времевият знак за последен достъп също е полезен, ако трябва да събирате статистика за използването на файловата система и да оптимизирате производителността. Системните администратори трябва да знаят, до кои обекти се осъществява достъп, за да настроят файловата система по подходящ начин.

Но на повечето съвременни програми тази марка вече не е необходима, затова беше предложено да не я използват. През 2007 година Линус Торвалдс и няколко други разработчици на ядрото обсъждаха atime в контекста на проблема с производителността. Разработчикът на ядрото на Linux Инго Молнар направи следното забележка относно atime и файловата система ext3:

Доста странно е, че всеки работен плот и сървър на Linux страдат от значително намаление на производителността при вход-изход поради постоянните актуализации на atime, въпреки че реалните потребители са само двама: tmpwatch [който може да бъде конфигуриран да използва ctime, така че това не е голям проблем] и някои инструменти за архивиране.

Но хората все още използват някои приложения, за които е необходима тази отметка. Така че премахването на atime ще наруши тяхната работа. Разработчиците на ядрото на Linux не трябва да ограничават свободата на потребителя.

Соломоново решение

В дистрибуциите на Linux са включени много приложения, а освен това потребителите могат да изтеглят и инсталират други програми в съответствие с техните нужди. Това е основното предимство на ОС с отворен код. Но това усложнява оптимизацията на производителността на файловата система. Премахването на ресурсно интензивни компоненти може да наруши работата на системата.

Като компромис разработчиците на ядрото на Linux внедриха нова опция relaytime, която цели да осигури баланс между производителност и съвместимост:

atime се актуализира само ако предишното време на достъп е по-малко от текущото време на модификация или изменение на статуса… Започвайки с Linux 2.6.30, ядрото по подразбиране използва тази опция (освен ако не е посочено noatime)… Освен това, от Linux 2.6.30, времето на последния достъп до файла винаги се актуализира, ако е повече от 1 ден.

Съвременните системи Linux (от Linux 2.6.30, пусната през 2009 г.) вече използват relaytime, което трябва да доведе до значителен ръст в производителността. Това означава, че не е нужно да конфигурирате файла /etc/fstab, а с relaytime можете да разчитате на стойността по подразбиране.

Повишаване на производителността на системата с помощта на noatime

Но ако искате да конфигурирате системата си за максимална производителност, изключването на atime все още е възможно.

Промяната в производителността може да не е много забележима на много бързи съвременни дискове (като NVME или Fast SSD), но там има малко увеличение.

Ако знаете, че не използвате софтуер, за който е необходим atime, можете леко да увеличите производителността, като активирате опцията noatime в файла /etc /fstab. След това ядрото няма да актуализира постоянно atime. Използвайте опцията 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

Промените ще влязат в сила при следващото рестартиране.

Реклама

Нужен ли ви е сървър за хостване на сайта? Нашата компания предлага надеждни сървъри с дневно или еднократно плащане, всеки сървър е свързан с интернет канал от 500 Мегабита и е защитен безплатно от DDoS атаки!

Как и защо опцията noatime увеличава производителността на Linux системите

Източник: habr.com

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster