Iinkqubo zefayile zenyani kwiLinux: kutheni zifuneka kwaye zisebenza njani? Icandelo loku-1

Molweni nonke! Siyaqhubeka nokusungula imijelo emitsha yezifundo osele uzithanda kwaye ngoku singxamele ukwazisa ukuba siqala iseti entsha yezifundo. "Umlawuli weLinux"eya kusungulwa ekupheleni kuka-Epreli. Upapasho olutsha luza kubhalwa umhla ngalo msitho. Ngezinto zokuqala, unako funda apha.

Iinkqubo zeefayile ezibonakalayo zisebenza njengoluhlobo lokutsalwa komlingo oluvumela ifilosofi yeLinux ukuba "yonke into yifayile."

Iinkqubo zefayile zenyani kwiLinux: kutheni zifuneka kwaye zisebenza njani? Icandelo loku-1

Yintoni inkqubo yefayile? Ngokusekwe kumagama omnye wabaxhasi bokuqala kunye nababhali beLinux URoberta Lava, "Inkqubo yefayile yindawo yokugcina idatha ehlanganiswe ngokwesakhiwo esithile." Nokuba kusenokuba njalo, le nkcazo ifanelekile ngokulinganayo kwiVFAT (iTheyibhile yoLwabiwo lweFayile eyiVirtual), iGit kunye Cassandra (NoSQL database). Ke yintoni kanye kanye eyichaza into enje "njengenkqubo yefayile"?

Inkqubo yeFayile Esisiseko

I-Linux kernel ineemfuno ezithile zequmrhu elinokuthi lithathwe njengesixokelelwano sefayile. Kufuneka iphumeze iindlela open(), read() ΠΈ write() kwizinto ezizingisayo ezinamagama. Ukusuka kwimbono ejolise kwinto inkqubo, ikernel ichaza indlela yefayile eqhelekileyo njengojongano olungabonakaliyo, kwaye le misebenzi mithathu ithathwa njenge "virtual" kwaye ayinangcaciso ebambekayo. Ngokufanelekileyo, ukuphunyezwa kwenkqubo yefayile engagqibekanga ibizwa ngokuba yinkqubo yefayile yenyani (VFS).

Iinkqubo zefayile zenyani kwiLinux: kutheni zifuneka kwaye zisebenza njani? Icandelo loku-1

Ukuba sinokuvula, ukufunda, nokubhalela iqumrhu, ngoko ke loo nkampani ithathwa njengefayile, njengoko sinokubona kumzekelo kwi-console engentla.
Isenzeko se-VFS sigxininisa kuphela uqwalaselo olufana ne-Unix lokuba "yonke into yifayile". Cinga indlela engaqhelekanga ngayo ukuba lo mzekelo mncinci / dev/console ungasentla ubonisa indlela iconsole esebenza ngayo ngokwenene. Umfanekiso ubonisa iseshoni ye-Bash esebenzayo. Ukuthumela umtya kwi-console (isixhobo se-console virtual) siyibonisa kwiscreen esibonakalayo. I-VFS inezinye, iipropati ezingaqhelekanga. Umzekelo, ikuvumela ukuba ukhangele nge yena.

Iinkqubo eziqhelekileyo ezifana ne-ext4, i-NFS, kunye / ne-proc zinemisebenzi emithathu ebalulekileyo kwisakhiwo sedatha ye-C ebizwa iifayile_iinkqubo. Ukongeza, iinkqubo ezithile zefayile zandisa kwaye zichaza kwakhona ukusebenza kweVFS ngendlela eqhelekileyo ejolise kwinto. Njengoko uRobert Love ebonisa, ukutsalwa kweVFS kuvumela abasebenzisi beLinux ukuba bakhuphele ngokungakhathali iifayile ukuya okanye kwiinkqubo zokusebenza zeqela lesithathu okanye amaziko angabonakaliyo njengemibhobho ngaphandle kokukhathazeka malunga nefomathi yedatha yangaphakathi. Kwicala lomsebenzisi (isithuba somsebenzisi), usebenzisa inkqubo yokufowuna, inkqubo inokukhuphela ukusuka kwifayile ukuya kulwakhiwo lwedatha yekernel usebenzisa indlela. read() enye indlela yefayile kwaye usebenzise indlela write () enye inkqubo yefayile yemveliso yedatha.

Iinkcazo zomsebenzi ezizezohlobo lwesiseko lweVFS zikwifayile fs/*.c ikhowudi yemvelaphi yekernel, ngelixa oovimba bolawulo abancinci fs/ ziqulathe iinkqubo ezithile zefayile. Undoqo ikwaqulathe amaqumrhu afana cgroups, /dev ΠΈ tmpfs, ezifunekayo ngexesha lenkqubo yokuqalisa kwaye ngoko zichazwe kwi-kernel subdirectory init/. Qaphela ukuba cgroups, /dev ΠΈ tmpfs musa ukubiza imisebenzi "enkulu zintathu". file_operations, kodwa funda ngokuthe ngqo kwaye ubhale kwimemori.
Lo mzobo ungezantsi ubonisa ukuba isithuba somsebenzisi sifikelela njani kwiintlobo ezahlukeneyo zenkqubo yefayile eqhele ukunyuswa kwiinkqubo ze Linux. Ulwakhiwo aluboniswanga pipes, dmesg ΠΈ POSIX clocks, ephinda iphumeze isakhiwo file_operations, ifunyenwe ngoluhlu lweVFS.

Iinkqubo zefayile zenyani kwiLinux: kutheni zifuneka kwaye zisebenza njani? Icandelo loku-1

I-VFS yi "wrapper layer" phakathi kweefowuni zenkqubo kunye nokuphunyezwa kwezinto ezithile file_operationsnjenge ext4 ΠΈ procfs. Imisebenzi file_operations inokunxibelelana nokuba nabaqhubi besixhobo okanye izixhobo zofikelelo kwimemori. tmpfs, devtmpfs ΠΈ cgroups musa ukusebenzisa file_operations, kodwa ufike ngqo kwimemori.
Ubukho beVFS bubonelela ngethuba lokuphinda kusetyenziswe ikhowudi, ekubeni iindlela ezisisiseko ezinxulumene neenkqubo zefayile akufuneki ziphinde ziphunyezwe ngohlobo ngalunye lwenkqubo yefayile. Ukusetyenziswa kwakhona kwekhowudi yinto eqhelekileyo phakathi kweenjineli zesoftware! Nangona kunjalo, ukuba ikhowudi enokusetyenziswa kwakhona iqulethe iimpazamo ezinzulu, zonke iinkqubo ezifumana ilifa iindlela eziqhelekileyo zihlupheka kubo.

/tmp: Ingcebiso elula

Indlela elula yokufumanisa ukuba iVFS ikhona kwisistim kukuchwetheza mount | grep -v sd | grep -v :/, eza kubonisa zonke zinyusiwe (mounted) iindlela zefayile ezingezizo ezihlala kwidisk nezingezizo i-NFS, eyinyani kwiikhompyuter ezininzi. Enye yezinyusi ezidwelisiweyo (mounts) iVFS ngokuqinisekileyo iya /tmp, kunene?

Iinkqubo zefayile zenyani kwiLinux: kutheni zifuneka kwaye zisebenza njani? Icandelo loku-1

Wonke umntu uyazi ukuba indawo yokugcina / tmp kwi medium medium - impambano! Umthombo.

Kutheni kunganqweneleki ukugcina /tmp kwimidiya ebonakalayo? Ngenxa yokuba iifayile kwi /tmp zezexeshana kwaye izixhobo zokugcina zicotha kunenkumbulo apho iitmpfs zenziwe khona. Ngaphaya koko, imidiya yomzimba ichaphazeleka ngakumbi xa ibhalwe ngaphezulu kunenkumbulo. Okokugqibela, iifayile kwi/tmp zinokuqulatha ulwazi olubuthathaka, ngoko ke ukuzenza zinyamalale kuyo yonke inkqubo yokuqalisa kwakhona yinto ebalulekileyo.

Ngelishwa, ezinye izikripthi zofakelo lonikezelo lweLinux zenza /tmp kwisixhobo sokugcina ngokungagqibekanga. Musa ukuphelelwa lithemba ukuba oku kwenzekile nakwinkqubo yakho. Landela imiyalelo embalwa elula nge IArch Wikiukulungisa oku, kwaye uqaphele ukuba imemori eyabelwe tmpfs ayifumaneki ngenxa yezinye iinjongo. Ngamanye amazwi, inkqubo ene-tmpfs enkulu kunye neefayile ezinkulu kuyo inokuphelelwa kwimemori kwaye iphazamiseke. Enye ingcebiso: ngelixa uhlela ifayile /etc/fstab, khumbula ukuba kufuneka iphele ngomgca omtsha, kungenjalo inkqubo yakho ayizukuqalisa.

/proc kunye /sys

ngaphandle /tmp, VFS (iinkqubo zefayile ezibonakalayo) eziqheleke kakhulu kubasebenzisi be Linux /proc ΠΈ /sys. (/dev ihlala kwinkumbulo ekwabelwana ngayo kwaye ayinayo file_operations). Kutheni la macandelo mabini? Makhe sijonge kulo mba.

procfs yenza umfanekiso okhawulezayo wekernel kunye neenkqubo ebeka iliso kuzo userspace. Ku /proc ikernel ishicilela ulwazi malunga nento ekhoyo, njengokuphazamiseka, inkumbulo yenyani, kunye nomcwangcisi. Ngaphandle koko, /proc/sys yindawo apho iiparamitha ziqwalaselwe ngomyalelo sysctl, ekhoyo userspace. Ubume kunye neenkcukacha-manani zeenkqubo zomntu ngamnye ziboniswa kuluhlu lweencwadi /proc/.

Iinkqubo zefayile zenyani kwiLinux: kutheni zifuneka kwaye zisebenza njani? Icandelo loku-1

kuyinto /proc/meminfo yifayile engenanto nangona iqulathe ulwazi oluxabisekileyo.

Indlela yokuziphatha /proc iifayile zibonisa ukuba iindlela zefayile zediski zeVFS zinokuhluka njani. Kwelinye icala, /proc/meminfo ziqulathe ulwazi olunokubonwa ngomyalelo free. Kwelinye icala, ayinamntu! Ingaba isebenza kanjani? Le meko ikhumbuza inqaku elidumileyo elinesihloko Ngaba inyanga ikhona xa kungekho mntu uyijongileyo? Inyani kunye neTheory yeQuantum"ibhalwe ngunjingalwazi wefiziksi weYunivesithi yaseCornell uDavid Mermin ngo-1985. Inyani kukuba i-kernel iqokelela izibalo zememori xa isicelo senziwe /proc, kwaye ngokwenene kwiifayile /proc akukho nto xa kungekho mntu ujongileyo. Njengoko bekutshiwo Mermin, "Imfundiso ye-quantum esisiseko ithi umlinganiselo ngokubanzi awubonakalisi ixabiso esele likhona kwipropati elinganiswayo." (Kwaye qwalasela umbuzo malunga nenyanga njengomsebenzi wasekhaya!)
Ukubonakala kungenanto procfs iyavakala kuba ulwazi olukhoyo luyaguquguquka. Imeko eyahlukileyo kancinci nge sysfs. Makhe sithelekise ukuba zingaphi iifayile ezinobungakanani bebhayithi enye ezingaphakathi /proc kunye /sys.

Iinkqubo zefayile zenyani kwiLinux: kutheni zifuneka kwaye zisebenza njani? Icandelo loku-1

Procfs inefayile enye, eluqwalaselo lwe kernel ethunyelwe ngaphandle, engaphandle kuba ifuna ukwenziwa kube kanye kuphela ngesiqalo ngasinye. Kwelinye icala, kwi /sys kukho iifayile ezinkulu ezininzi, ezininzi ezithatha lonke iphepha lenkumbulo. Ngokuqhelekileyo iifayile sysfs ziqulathe ngqo inani okanye umgca, ngokungafaniyo neetheyibhile zolwazi ezifunyenwe kwiifayile zokufunda ezifana /proc/meminfo.

Injongo sysfs -bonelela ngeempawu zokufunda/ukubhala ezibizwa ngokuba yikernel Β«kobjectsΒ» kwindawo yomsebenzisi. Injongo yodwa kobjects lubalo lwekhonkco: xa ikhonkco lokugqibela kwi kobject lisusiwe, inkqubo izakubuyisela izibonelelo ezinxulumene nayo. Nangona kunjalo, /sys yenza uninzi lwabadumileyo "I-ABI ezinzileyo yendawo yomsebenzisi" core, ekungekho mntu unokuze, phantsi kwazo naziphi na iimeko "ikhefu". Oku akuthethi ukuba iifayile ezikwi-sysfs zimile, ezinokungangqinelani nokubalwa kwereferensi yezinto ezingazinzanga.
I-kernel's stable ABI iyanqanda into enokubonakala kuyo /sys, hayi eyona nto ikhoyo ngelo xesha. Uluhlu lweemvume zefayile kwi-sysfs lubonelela ngokuqonda malunga nokuba useto olunoqwalaselo lwezixhobo, iimodyuli, iinkqubo zefayile, njl. ingaqwalaselwa okanye ifundwe. Isigqibo esinengqiqo kukuba iprocfs ikwayinxalenye ye-kernel's stable ABI, nangona oku kungachazwanga ngokucacileyo amaxwebhu.

Iinkqubo zefayile zenyani kwiLinux: kutheni zifuneka kwaye zisebenza njani? Icandelo loku-1

Iifayile ngaphakathi sysfs chaza ipropathi enye yequmrhu ngalinye kwaye inokufundeka, ibhaleke, okanye zombini. "0" kwifayile ithetha ukuba i-SSD ayinakususwa.

Masiqale icandelo lesibini lokuguqulela ngendlela yokubeka iliso kwi-VFS usebenzisa i-eBPF kunye nezixhobo ze-bcc, kwaye ngoku silindele izimvo zakho kwaye simema ngokwesiko ukuba vula i-webinar, eya kubanjwa ngutitshala wethu ngoAprili 9 - UVladimir Drozdetsky.

umthombo: www.habr.com

Yongeza izimvo