Как и защо опцията 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
  Файл: fstab
  Размер: 261             Блокове: 8          IO Блок: 4096   обикновен файл
Устройство: b303h/45827d    Инод: 2097285     Линкове: 1
Достъп: (0664/-rw-rw-r--)  Уд: (    0/    root)   Гид: (    0/    root)
Контекст: system_u:object_r:etc_t:s0
Достъп: 2019-04-25 21:10:18.083325111 -0500
Модификация: 2019-05-16 10:46:47.427686706 -0500
Промяна: 2019-05-16 10:46:47.434686674 -0500
 Раждане: 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--)  Потребител: (    0/    root)   Група: (    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--)  Потребител: (    0/    root)   Група: (    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 страдат от значително намаление на I/O производителността заради постоянните обновления на atime, въпреки че реалните потребители са само двама: tmpwatch [който може да бъде настроен да използва ctime, така че това не е голям проблем] и някои инструменти за архивиране.

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

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

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

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

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

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

Увеличаване на производителността на системата с noatime

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

Промяната на производителността може да не е особено забележима на много бързи модерни дискове (като NVME или бързи 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