Як і чаму опцыя noatime павялічвае прадукцыйнасць Linux-сістэм

Абнаўленне atime уплывае на прадукцыйнасць сістэмы. Што ж там адбываецца і што з гэтым рабіць - чытайце ў артыкуле.

Як і чаму опцыя noatime павялічвае прадукцыйнасць Linux-сістэм
Кожны раз, калі я абнаўляю Linux на сваім хатнім кампутары, мне даводзіцца вырашаць вызначаныя задачы. З гадамі гэта ўвайшло ў звычку: я раблю рэзервовыя копіі сваіх файлаў, сціраю сістэму, усталёўваю ўсё з нуля, аднаўляю свае файлы, затым зноўку ўсталёўваю свае каханыя прыкладанні. Я таксама мяняю пад сябе налады сістэмы. Часам на гэта сыходзіць занадта шмат часу. І нядаўна я задумаўся, ці патрэбны мне гэты галаўны боль.

Час - адна з трох часавых пазнак для файлаў у Linux (падрабязней пра гэта пазней). У прыватнасці, я задавалася пытаннем, ці варта па-ранейшаму адключаць atime у пазнейшых сістэмах Linux. Паколькі atime абнаўляецца кожны раз, калі да файла звяртаюцца, я зразумеў, што ен аказвае значны ўплыў на прадукцыйнасць сістэмы.
Нядаўна я абнавіўся да Fedora 32 і па звычцы пачаў з адключэння atime. Я задумаўся: а ці патрэбна мне яна ў прынцыпе? Вырашыў вывучыць гэтае пытанне і вось што накапаў.

Трохі пра часовыя пазнакі файлаў

Каб разабрацца, вам трэба зрабіць крок назад і ўспомніць некалькі рэчаў аб файлавых сістэмах Linux і аб тым, як ядро ​​прысвойвае часавыя пазнакі файлам і каталогам. Вы можаце ўбачыць дату апошняй змены файлаў і каталогаў, запусціўшы каманду ls -l (long) ці проста паглядзеўшы на інфармацыю аб пра гэта ў файлавым мэнэджэры. Але за кулісамі ядро ​​Linux адсочвае некалькі часавых адзнак для файлаў і каталогаў:

  1. Калі ў апошні раз быў мадыфікаваны файл (mtime)
  2. Калі ў апошні раз былі змененыя ўласцівасці і метададзеныя файла (ctime)
  3. Калі ў апошні раз звярталіся да файла (atime)
  4. Вы можаце выкарыстоўваць каманду стат, каб паглядзець дадзеныя аб файле або каталогу. Вось файл / І г.д. / 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 года, калі я ўсталяваў сістэму. Мой файл / І г.д. / Fstab быў апошні раз зменены 16 мая 2019 года і ўсе астатнія атрыбуты былі зменены прыкладна ў той жа час.

Калі я капіюю / І г.д. / Fstab у новы файл, даты мяняюцца, паказваючы на ​​тое, што гэта новы файл:

$ 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

Але калі я проста перайменую файл, не змяняючы яго змесціва, Linux абновіць толькі час змены файла:

$ 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

Гэтыя часовыя пазнакі вельмі карысныя для вызначаных Unix-праграм. Напрыклад, 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, час апошняга доступу да файла заўсёды абнаўляецца, калі яму больш за XNUMX дзень.

Сучасныя сістэмы Linux (пачынальна з Linux 2.6.30, выпушчанай у 2009 году) ужо выкарыстоўваюць relaytime, што павінна даць сапраўды вялікі прырост прадукцыйнасці. Гэта азначае, што вам не трэба настройваць файл / І г.д. / 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

Дадаць каментар