Amasistimu wefayela abonakalayo ku-Linux: kungani edingeka futhi asebenza kanjani? Ingxenye 1

Sanibonani nonke! Siyaqhubeka nokwethula ukusakazwa okusha kwezifundo osuvele uzithanda futhi manje sijahile ukumemezela ukuthi siqala isethi entsha yezifundo "I-Linux Administrator"ezokwethulwa ekupheleni kuka-April. Ukushicilelwa okusha kuzofakwa idethi yalo mcimbi. Ngento yokuqala, ungakwazi funda lapha.

Amasistimu wamafayela abonakalayo asebenza njengohlobo lokungatholakali komlingo oluvumela ifilosofi ye-Linux ukuthi "yonke into iyifayela."

Amasistimu wefayela abonakalayo ku-Linux: kungani edingeka futhi asebenza kanjani? Ingxenye 1

Iyini isistimu yefayela? Ngokusekelwe emazwini omunye wabanikeli bokuqala nababhali be-Linux Roberta Lava, "Isistimu yefayela isitoreji sokulandelana kwedatha eqoqwe ngokuya ngesakhiwo esithile." Noma kungaba njalo, le ncazelo ifaneleka ngokulinganayo ku-VFAT (Virtual File Allocation Table), i-Git kanye Cassandra (NoSQL database). Ngakho-ke yini ngempela echaza into efana "nesistimu yefayela"?

I-Filesystem Basics

I-Linux kernel inezidingo ezithile zebhizinisi elingathathwa njengesistimu yefayela. Kufanele isebenzise izindlela open(), read() ΠΈ write() ezintweni eziphikelelayo ezinamagama. Ngokombono ogxile entweni izinhlelo, i-kernel ichaza isistimu yefayela evamile njengesixhumi esibonakalayo esingabonakali, futhi le misebenzi emithathu emikhulu ibhekwa "njenge-virtual" futhi ayinayo incazelo ebambekayo. Ngakho, ukuqaliswa kwesistimu yefayela okuzenzakalelayo kubizwa ngokuthi i-virtual file system (VFS).

Amasistimu wefayela abonakalayo ku-Linux: kungani edingeka futhi asebenza kanjani? Ingxenye 1

Uma singakwazi ukuvula, ukufunda, nokubhalela ibhizinisi, khona-ke lelo bhizinisi libhekwa njengefayela, njengoba singabona esibonelweni esiku-console engenhla.
Isenzo se-VFS sigcizelela kuphela umbono ofana ne-Unix wokuthi "yonke into iyifayela". Cabanga ukuthi kuyinqaba kangakanani ukuthi leso sibonelo esincane /dev/console esingenhla sibonisa ukuthi ikhonsoli isebenza kanjani ngempela. Isithombe sibonisa iseshini ye-Bash esebenzisanayo. Ukuthumela iyunithi yezinhlamvu kukhonsoli (idivayisi yekhonsoli ebonakalayo) kuyibonisa esikrinini esibonakalayo. I-VFS inezinye, izakhiwo ezingaziwa. Isibonelo, ikuvumela ukuthi useshe nge yena.

Amasistimu ajwayelekile afana ne-ext4, NFS, kanye/proc anemisebenzi emithathu ebalulekile kusakhiwo sedatha esingu-C esibizwa file_operations. Ukwengeza, izinhlelo ezithile zamafayela zinweba futhi zichaze kabusha imisebenzi ye-VFS ngendlela evamile eqondiswe entweni. Njengoba uRobert Love ebonisa, ukuchithwa kwe-VFS kuvumela abasebenzisi be-Linux ukuthi bakopishe amafayela ngokunganaki baye noma bawasuse ezinhlelweni zokusebenza zezinkampani zangaphandle noma izinhlangano ezingabonakali njengamapayipi ngaphandle kokukhathazeka ngefomethi yedatha yangaphakathi. Ohlangothini lomsebenzisi (indawo yomsebenzisi), kusetshenziswa ikholi yesistimu, inqubo ingakopisha isuka efayeleni iye kuzakhiwo zedatha ye-kernel isebenzisa indlela read() isistimu yefayela eyodwa bese usebenzisa indlela write () olunye uhlelo lwefayela lokukhipha idatha.

Izincazelo zomsebenzi eziyingxenye yezinhlobo ze-VFS eziyisisekelo zikumafayela fs/*.c ikhodi yomthombo we-kernel, kuyilapho i-subdirectories fs/ ziqukethe izinhlelo ezithile zefayela. Umnyombo nawo uqukethe izinhlangano ezifana cgroups, /dev ΠΈ tmpfs, ezidingekayo phakathi nenqubo yokuqalisa futhi ngenxa yalokho zichazwa ku-kernel subdirectory init/. Qaphela lokho cgroups, /dev ΠΈ tmpfs ungabizi imisebenzi "emithathu emikhulu". file_operations, kodwa funda futhi ubhale ngokuqondile ngekhanda.
Umdwebo ongezansi ubonisa ukuthi indawo yomsebenzisi ifinyelela kanjani ezinhlotsheni ezihlukene zezinhlelo zamafayela ezivame ukufakwa ezinhlelweni ze-Linux. Izakhiwo aziboniswa pipes, dmesg ΠΈ POSIX clocks, ephinde isebenzise isakhiwo file_operations, kufinyelelwe ngosendlalelo se-VFS.

Amasistimu wefayela abonakalayo ku-Linux: kungani edingeka futhi asebenza kanjani? Ingxenye 1

I-VFS "i-wrapper layer" phakathi kwezingcingo zesistimu kanye nokusetshenziswa kokuthile file_operations, njenge ext4 ΠΈ procfs. Imisebenzi file_operations ingasebenzisana nezishayeli zedivayisi noma izisetshenziswa zokufinyelela inkumbulo. tmpfs, devtmpfs ΠΈ cgroups ungasebenzisi file_operations, kodwa finyelela inkumbulo ngokuqondile.
Ukuba khona kwe-VFS kunikeza ithuba lokuphinda kusetshenziswe ikhodi, njengoba izindlela eziyisisekelo ezihlobene nezinhlelo zamafayela akudingeki ziphinde zisetshenziswe uhlobo ngalunye lwesistimu yefayela. Ukusebenzisa kabusha ikhodi kuwumkhuba ojwayelekile phakathi konjiniyela bezinhlelo zokusebenza! Nokho, uma ikhodi engasetshenziswa kabusha iqukethe amaphutha amakhulu, konke ukuqaliswa okuzuza njengefa izindlela ezivamile kuhlushwa kuzo.

/tmp: Ukusikisela okulula

Indlela elula yokuthola ukuthi i-VFS ikhona ohlelweni ukuthayipha mount | grep -v sd | grep -v :/, ezobonisa konke okufakiwe (mounted) amasistimu angewona ahlala kumadiski futhi angewona ama-NFS, okuyiqiniso kumakhompyutha amaningi. Enye yezintaba ezisohlwini (mounts) I-VFS izokwenza ngokungangabazeki /tmp, akunjalo?

Amasistimu wefayela abonakalayo ku-Linux: kungani edingeka futhi asebenza kanjani? Ingxenye 1

Wonke umuntu uyasazi leso sitoreji / tmp on a medium ngokomzimba - madness! Umthombo.

Kungani kungathandeki ukugcina /tmp ezinkundleni zokuxhumana? Ngoba amafayela ku /tmp ezesikhashana futhi amadivaysi okugcina ahamba kancane kunememori lapho ama-tmpfs enziwa khona. Ngaphezu kwalokho, imidiya ebonakalayo isengozini yokugqokwa uma ibhalwe phezu kwememori. Okokugcina, amafayela ku/tmp angaqukatha ulwazi olubucayi, ngakho ukuwenza anyamalale kukho konke ukuqalisa kabusha kuyisici esibalulekile.

Ngeshwa, ezinye izikripthi zokufakwa kokusabalalisa kwe-Linux zidala i-/tmp kudivayisi yokugcina ngokuzenzakalelayo. Ungalahli ithemba uma lokhu kwenzeka nakusistimu yakho. Landela imiyalelo embalwa elula nge I-Arch Wikiukulungisa lokhu, futhi uqaphele ukuthi inkumbulo eyabelwe yona tmpfs ingatholakali ngezinye izinjongo. Ngamanye amazwi, isistimu ene-tmpfs enkulu namafayela amakhulu kuyo ingaphelelwa inkumbulo futhi iphahlazeke. Okunye ukusikisela: ngenkathi uhlela ifayela /etc/fstab, khumbula ukuthi kufanele iphele ngomugqa omusha, ngaphandle kwalokho isistimu yakho ngeke iqale.

/proc kanye /sys

futhi /tmp, VFS (virtual file systems) ezijwayeleke kakhulu kubasebenzisi beLinux /proc ΠΈ /sys. (/dev ihlala enkumbulweni eyabiwe futhi ayinayo file_operations). Kungani lezi zingxenye ezimbili? Ake sibheke lolu daba.

procfs idala isifinyezo se-kernel kanye nezinqubo eziqaphayo userspace. I /proc i-kernel iphrinta ulwazi mayelana nokuthi inani etholakalayo, njengokuphazamiseka, inkumbulo ebonakalayo, kanye nesihleli. Ngaphandle kwalokho, /proc/sys indawo lapho amapharamitha amiswa khona ngomyalo sysctl, etholakalayo userspace. Isimo nezibalo zezinqubo zomuntu ngamunye ziboniswa kunkhombandlela /proc/.

Amasistimu wefayela abonakalayo ku-Linux: kungani edingeka futhi asebenza kanjani? Ingxenye 1

kuyinto /proc/meminfo yifayela elingenalutho kodwa eliqukethe ulwazi olubalulekile.

Ukuziphatha /proc amafayela abonisa ukuthi izinhlelo zefayela le-VFS disk zingahluka kanjani. Ngakolunye uhlangothi, /proc/meminfo ziqukethe ulwazi olungabonwa ngomyalo free. Ngakolunye uhlangothi, ayinalutho! Isebenza kanjani? Lesi simo sisikhumbuza isihloko esidumile esinesihloko esithi Ingabe inyanga ikhona uma kungekho oyibhekile? Iqiniso kanye ne-Quantum Theory"ibhalwe ngusolwazi wefiziksi waseCornell University uDavid Mermin ngo-1985. Iqiniso liwukuthi i-kernel iqoqa izibalo zememori lapho isicelo senziwe /proc, futhi empeleni kumafayela /proc akukho lutho lapho kungekho muntu obhekayo. Njengoba kushiwo Mermin, "Imfundiso ye-quantum eyisisekelo ithi ukulinganisa ngokuvamile akuvezi inani elikhona ngaphambili lendawo elinganiswayo." (Futhi cabangela umbuzo mayelana nenyanga njengomsebenzi wesikole!)
Ebonakala engenalutho procfs kunengqondo ngoba ulwazi olukhona lunamandla. Isimo esihluke kancane nge sysfs. Ake siqhathanise ukuthi mangaki amafayela anosayizi okungenani webhayithi eyodwa akuwo /proc futhi ku /sys.

Amasistimu wefayela abonakalayo ku-Linux: kungani edingeka futhi asebenza kanjani? Ingxenye 1

Procfs inefayela elilodwa, okungukuthi ukucushwa kwe-kernel ethunyelwe, okuhlukile ngoba idinga ukukhiqizwa kanye kuphela nge-boot ngayinye. Ngakolunye uhlangothi, ku /sys kunamafayela amaningi amakhulu, amaningi awo athatha lonke ikhasi lenkumbulo. Ngokuvamile amafayela sysfs ziqukethe inombolo eyodwa ncamashi noma umugqa, ngokungafani namathebula olwazi atholakala ngokufundwa kwamafayela afana nala /proc/meminfo.

Injongo sysfs - nikeza izici zokufunda/zokubhala zalokho i-kernel ekubiza ngayo Β«kobjectsΒ» endaweni yomsebenzisi. Umgomo kuphela kobjects ukubala kwesixhumanisi: uma isixhumanisi sokugcina se-kobject sisuswa, isistimu izobuyisela izinsiza ezihlotshaniswa nayo. Noma kunjalo, /sys yenza iningi labadumile "I-ABI ezinzile yendawo yomsebenzisi" core, okungekho muntu ongake, ngaphansi kwanoma yiziphi izimo "break". Lokhu akusho ukuthi amafayela kuma-sysfs amile, okungahle kungqubuzane nokubalwa kwereferensi yezinto ezingaqinile.
I-ABI ye-kernel ezinzile ikhawulela lokho okungavela kuyo /sys, hhayi lokho okukhona ngempela ngaleso sikhathi. Ukufaka kuhlu izimvume zefayela kuma-sysfs kunikeza ukuqonda kokuthi izilungiselelo ezilungisekayo zamadivayisi, amamojula, amasistimu wefayela, njll. ingacushwa noma ifundwe. Isiphetho esiphusile ukuthi ama-procfs nawo ayingxenye ye-ABI ezinzile ye-kernel, nakuba lokhu kungashiwo ngokucacile kokuthi imibhalo.

Amasistimu wefayela abonakalayo ku-Linux: kungani edingeka futhi asebenza kanjani? Ingxenye 1

Amafayela angaphakathi sysfs chaza isakhiwo esithile sebhizinisi ngalinye futhi singafundeka, sibhaleke, noma zombili. "0" kufayela kusho ukuthi i-SSD ayikwazi ukususwa.

Ake siqale ingxenye yesibili yokuhumusha ngendlela yokuqapha i-VFS usebenzisa amathuluzi e-eBPF kanye ne-bcc, futhi manje silindele ukuphawula kwakho futhi sikumema ngokwesiko ukuthi vula i-webinar, ezobanjwa uthisha wethu ngo-April 9 - UVladimir Drozdetsky.

Source: www.habr.com

Engeza amazwana