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

Всеки път, когато обновя Linux на домашния компютър, трябва да се справя с определени задачи. С годините това стана навик за мен: правя резервни копия на файловете си, форматирам системата, инсталирам всичко от нула, възстановявам файловете си, после отново инсталирам любимите си приложения. Също така, настройвам системата според себе си. Понякога това отнема твърде много време. Напоследък започнах да се чудя дали ми е необходимо всичко това.
atime — един от трите времеви печата за файлове в Linux (повече за това по-късно). Конкретно, зададох си въпроса дали все още трябва да изключвам atime в по-късните версии на Linux. Тъй като atime се обновява всеки път, когато се достъпи до файл, осъзнах, че оказва значително влияние върху производителността на системата.
Наскоро обнових до Fedora 32 и по навик започнах с изключването на atime. Запитах се: необходима ли ми е изобщо? Реших да проуча въпроса и ето какво открих.
Няколко думи за времевите печати на файловете
За да разберете, трябва да се върнете назад и да си припомните няколко неща за файловите системи на Linux и за това как ядрото присвоява времеви печати на файлове и директории. Можете да видите датата на последната промяна на файловете и директориите, като стартирате команда ls -l (дълго) или просто поглеждайки информацията за това в файловия мениджър. Но зад кулисите ядрото на Linux следи няколко времеви печата за файлове и директории:
- Кога последно е бил модифициран файлът (mtime)
- Кога последно са променени свойствата и метаданните на файла (ctime)
- Кога последно е било достъпвано до файла (atime)
- Можете да използвате командата 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 ще разбере, че е пристигнало ново писмо и ще ви уведоми за това. Пощенският клиент 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 атаки!
Източник: habr.com
