Paano at bakit pinapabuti ng pagpipiliang noatime ang pagganap ng mga sistema ng Linux

Ang pag-update ng oras ay nakakaapekto sa pagganap ng system. Ano ang nangyayari doon at kung ano ang gagawin tungkol dito - basahin ang artikulo.

Paano at bakit pinapabuti ng pagpipiliang noatime ang pagganap ng mga sistema ng Linux
Sa tuwing ina-update ko ang Linux sa aking computer sa bahay, kailangan kong lutasin ang ilang mga problema. Sa paglipas ng mga taon, ito ay naging isang ugali: I-back up ang aking mga file, pinupunasan ang system, i-install ang lahat mula sa simula, ibinalik ang aking mga file, pagkatapos ay muling i-install ang aking mga paboritong application. Binabago ko rin ang mga setting ng system upang umangkop sa aking sarili. Minsan ito ay tumatagal ng masyadong maraming oras. At kamakailan lang naisip ko kung kailangan ko ba itong sakit ng ulo.

atime ay isa sa tatlong timestamp para sa mga file sa Linux (higit pa dito sa ibang pagkakataon). Sa partikular, iniisip ko kung magandang ideya pa rin na huwag paganahin ang oras sa mas kamakailang mga sistema ng Linux. Dahil ina-update ang atime sa tuwing maa-access ang file, napagtanto ko na may malaking epekto ito sa performance ng system.
Nag-upgrade ako kamakailan sa Fedora 32 at, dahil sa ugali, nagsimula sa pamamagitan ng hindi pagpapagana ng oras. Naisip ko: kailangan ko ba talaga ito? Nagpasya akong pag-aralan ang isyung ito at ito ang aking nahukay.

Kaunti tungkol sa mga timestamp ng file

Upang malaman ito, kailangan mong umatras at tandaan ang ilang bagay tungkol sa mga file system ng Linux at kung paano itinatatak ng kernel ang mga file at direktoryo. Maaari mong makita ang huling binagong petsa ng mga file at direktoryo sa pamamagitan ng pagpapatakbo ng command ls -l (mahaba) o sa pamamagitan lamang ng pagtingin sa impormasyon tungkol dito sa file manager. Ngunit sa likod ng mga eksena, sinusubaybayan ng kernel ng Linux ang ilang mga timestamp para sa mga file at direktoryo:

  1. Kailan huling binago ang file (mtime)
  2. Kailan ang huling beses na binago ang mga katangian ng file at metadata (ctime)
  3. Kailan huling na-access ang file (sa oras)
  4. Maaari mong gamitin ang utos statupang tingnan ang impormasyon tungkol sa isang file o direktoryo. Narito ang file / etc / fstab mula sa isa sa aking mga server ng pagsubok:

$ 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

Dito makikita mo na ang file na ito ay nilikha noong Abril 25, 2019 noong na-install ko ang system. Ang aking file / etc / fstab ay huling binago noong Mayo 16, 2019, at lahat ng iba pang attribute ay binago sa parehong oras.

Kung kopyahin ko / etc / fstab sa isang bagong file, nagbabago ang mga petsa upang ipahiwatig na ito ay isang bagong file:

$ 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

Ngunit kung palitan ko lang ang pangalan ng file nang hindi binabago ang mga nilalaman nito, ia-update lamang ng Linux ang oras na binago ang file:

$ 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

Ang mga timestamp na ito ay lubhang kapaki-pakinabang para sa ilang partikular na programa ng Unix. Halimbawa, ang biff ay isang program na nag-aabiso sa iyo kapag may bagong mensahe sa iyong email. Sa panahon ngayon kakaunti na ang gumagamit biff, ngunit noong mga araw na ang mga mailbox ay lokal sa system, medyo karaniwan ang biff.

Paano malalaman ng program kung mayroon kang bagong mail sa iyong inbox? Inihahambing ng biff ang huling binagong oras (kapag na-update ang inbox file gamit ang isang bagong mensaheng email) at ang huling oras ng pag-access (ang huling beses na binasa mo ang iyong email). Kung naganap ang pagbabago sa ibang pagkakataon kaysa sa pag-access, mauunawaan ng biff na may dumating na bagong sulat at aabisuhan ka tungkol dito. Gumagana ang Mutt email client sa halos parehong paraan.

Ang huling timestamp ng pag-access ay kapaki-pakinabang din kung kailangan mong mangolekta ng mga istatistika ng paggamit ng file system at tune performance. Kailangang malaman ng mga tagapangasiwa ng system kung anong mga bagay ang ina-access upang ma-configure nila ang file system nang naaayon.

Ngunit karamihan sa mga modernong programa ay hindi na kailangan ang label na ito, kaya may isang panukala na huwag gamitin ito. Noong 2007, tinalakay ni Linus Torvalds at ilang iba pang mga kernel developer ang isang pagkakataon sa konteksto ng isang problema sa pagganap. Ang Linux kernel developer na si Ingo Molnar ay gumawa ng sumusunod na punto tungkol sa atime at ang ext3 file system:

"Medyo kakaiba na ang bawat Linux desktop at server ay dumaranas ng kapansin-pansing pagkasira ng performance ng I/O dahil sa patuloy na pag-update sa oras, kahit na dalawa lang ang tunay na gumagamit: tmpwatch [na maaaring i-configure para gumamit ng ctime, kaya hindi ito isang malaking problema] at ilang backup tool."

Ngunit gumagamit pa rin ang mga tao ng ilang program na nangangailangan ng label na ito. Kaya ang pag-alis ng oras ay masisira ang kanilang pag-andar. Ang mga developer ng Linux kernel ay hindi dapat lumabag sa kalayaan ng user.

Ang solusyon ni Solomon

Mayroong maraming mga application na kasama sa mga pamamahagi ng Linux at bilang karagdagan, ang mga gumagamit ay maaaring mag-download at mag-install ng iba pang mga programa ayon sa kanilang mga pangangailangan. Ito ay isang pangunahing bentahe ng isang open source OS. Ngunit ginagawa nitong mahirap na i-optimize ang pagganap ng iyong file system. Ang pag-alis ng mga bahaging masinsinang mapagkukunan ay maaaring makagambala sa system.

Bilang isang kompromiso, ipinakilala ng mga developer ng Linux kernel ang isang bagong opsyon sa relaytime na nilalayon na magkaroon ng balanse sa pagitan ng performance at compatibility:

Ang atime ay ina-update lamang kung ang dating oras ng pag-access ay mas mababa kaysa sa kasalukuyang pagbabago o oras ng pagbabago ng katayuan... Dahil Linux 2.6.30, ginagamit ng kernel ang opsyong ito bilang default (maliban kung ang noatime ay tinukoy)... Gayundin, dahil Linux 2.6.30 . 1, ang huling oras ng pag-access ng isang file ay palaging ina-update kung ito ay higit sa XNUMX araw ang edad.

Ang mga modernong sistema ng Linux (mula noong Linux 2.6.30, inilabas noong 2009) ay gumagamit na ng relaytime, na dapat magbigay ng talagang malaking pagpapalakas ng pagganap. Nangangahulugan ito na hindi mo kailangang i-configure ang file / etc / fstab, at sa relaytime maaari kang umasa sa default.

Pagpapabuti ng pagganap ng system sa noatime

Ngunit kung gusto mong ibagay ang iyong system para makakuha ng maximum na performance, posible pa ring i-disable ang oras.

Maaaring hindi masyadong kapansin-pansin ang pagbabago sa performance sa napakabilis na modernong mga drive (gaya ng NVME o Fast SSD), ngunit may maliit na pagtaas doon.

Kung alam mong hindi ka gumagamit ng software na nangangailangan ng oras, maaari mong pagbutihin nang bahagya ang pagganap sa pamamagitan ng pagpapagana ng noatime na opsyon sa file /etc/fstab. Pagkatapos nito, ang kernel ay hindi palaging mag-a-update sa oras. Gamitin ang opsyong noatime kapag ini-mount ang filesystem:

/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

Magkakabisa ang mga pagbabago sa susunod na pag-reboot mo.

Sa Mga Karapatan ng Pag-advertise

Kailangan mo ba ng server para mag-host ng iyong website? Nag-aalok ang aming kumpanya maaasahang mga server na may araw-araw o isang beses na pagbabayad, ang bawat server ay konektado sa isang Internet channel na 500 Megabits at protektado laban sa mga pag-atake ng DDoS nang libre!

Paano at bakit pinapabuti ng pagpipiliang noatime ang pagganap ng mga sistema ng Linux

Pinagmulan: www.habr.com

Magdagdag ng komento