Molweni nonke! Siyaqhubeka nokusungula imijelo emitsha yezifundo osele uzithanda kwaye ngoku singxamele ukwazisa ukuba siqala iseti entsha yezifundo. eya kusungulwa ekupheleni kuka-Epreli. Upapasho olutsha luza kubhalwa umhla ngalo msitho. Ngezinto zokuqala, unako .
Iinkqubo zefayile ezibonakalayo zisebenza njengohlobo lokutsalwa komlingo oluvumela ifilosofi Linux ukuthi "yonke into yifayile."

Yintoni inkqubo yefayile? Ngokutsho komnye wababhali bokuqala kunye nababhali Linux , "Inkqubo yefayile yindawo yokugcina idatha ehlanganiswe ngokwesakhiwo esithile." Nokuba kusenokuba njalo, le nkcazo ifanelekile ngokulinganayo kwiVFAT (iTheyibhile yoLwabiwo lweFayile eyiVirtual), iGit kunye (). Ke yintoni kanye kanye eyichaza into enje "njengenkqubo yefayile"?
Inkqubo yeFayile Esisiseko
Eyona nto iphambili Linux ineemfuno ezithile zokuba iqumrhu lithathwe njengenkqubo yefayile. Kufuneka isebenzise iindlela open(), read() и write() kwizinto ezizingisayo ezinamagama. Ukusuka kwimbono ejolise kwinto , 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).

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 .
Iinkqubo eziqhelekileyo ezifana ne-ext4, i-NFS, kunye / ne-proc zinemisebenzi emithathu ebalulekileyo kwisakhiwo sedatha ye-C ebizwa Ukongeza, ezinye iinkqubo zefayile ziyandisa kwaye ziphinde zisebenzise ukusebenza kwe-VFS ngendlela eqhelekileyo ejolise kwizinto ezithile. Njengoko uRobert Love ephawula, i-VFS abstraction ivumela abasebenzisi Linux Khuphela iifayile ngokungakhathali ukuya nokubuya kwiinkqubo zokusebenza zomntu wesithathu okanye izinto ezingabonakaliyo ezifana neepayipi, ngaphandle kokukhathazeka ngefomathi yazo yedatha yangaphakathi. Kwicala lomsebenzisi (indawo yomsebenzisi), inkqubo inokukopa kwifayile ukuya kwizakhiwo zedatha yekernel usebenzisa umnxeba wenkqubo. read() enye indlela yefayile kwaye usebenzise indlela write () enye inkqubo yefayile yemveliso yedatha.
Iinkcazo zomsebenzi ezizezohlobo lwesiseko lweVFS zikwifayile 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.
Umzobo ongezantsi ubonisa indlela indawo yomsebenzisi efikelela ngayo kwiintlobo ezahlukeneyo zeenkqubo zefayile ezifakelwa kwiinkqubo. LinuxUlwakhiwo olunjalo aluboniswanga pipes, dmesg и POSIX clocks, ephinda iphumeze isakhiwo file_operations, ifunyenwe ngoluhlu lweVFS.

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 , 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?

Wonke umntu uyazi ukuba indawo yokugcina / tmp kwi medium medium - impambano! .
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 zokufakela Linux Usasazo lwenza i-/tmp kwisixhobo sokugcina idatha ngokuzenzekelayo. Musa ukuphelelwa lithemba ukuba oku kwenzeka kwinkqubo yakho. Landela imiyalelo embalwa elula nge ukulungisa 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, ii-VFS (iinkqubo zeefayile ezingabonakaliyo), eziqheleke kakhulu kubasebenzisi Linux - oku /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/.

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 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 , "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.

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 core, ekungekho mntu unokuze, phantsi kwazo naziphi na iimeko . 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 .

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 , eya kubanjwa ngutitshala wethu ngoAprili 9 - .
umthombo: www.habr.com
