Litsamaiso tsa faele tsa Virtual ho Linux: hobaneng li hlokahala, 'me li sebetsa joang? Karolo ea 1

Lumelang bohle! Re ntse re tsoela pele ho qala melapo e mecha bakeng sa lithuto tseo u seng u li ratile 'me joale re potlakile ho phatlalatsa hore re qala sehlopha se secha sa lithuto. "Linux Administrator"e tla thakgolwa mafelong a Mmesa. Ho tla ngoloa sengoliloeng se secha bakeng sa ketsahalo ena. Ka thepa ea pele, u ka khona bala mona.

Litsamaiso tsa faele tsa sebele li sebetsa e le mofuta oa boselamose bo lumellang filosofi ea Linux ho re "ntho e 'ngoe le e' ngoe ke faele."

Litsamaiso tsa faele tsa Virtual ho Linux: hobaneng li hlokahala, 'me li sebetsa joang? Karolo ea 1

Sistimi ea faele ke eng? E ipapisitse le mantsoe a e mong oa bafani ba pele le bangoli ba Linux Roberta Lava, "Sistimi ea faele ke polokelo ea maemo a holimo ea data e kopantsoeng ho latela sebopeho se itseng." Leha ho ka ba joalo, tlhaloso ena e loketse ka ho lekana VFAT (Virtual File Allocation Table), Git le Cassandra (NoSQL database). Joale ke eng e hlileng e hlalosang ntho e kang "file system"?

Filesystem Basics

Linux kernel e na le litlhoko tse itseng bakeng sa setheo se ka nkuoang e le sistimi ea faele. E tlameha ho sebelisa mekhoa open(), read() и write() bakeng sa dintho tse phehellang tse nang le mabitso. Ho ya ka pono e shebaneng le ntho e itseng mananeo, kernel e hlalosa sistimi e akaretsang e le sebopeho se sa bonahaleng, mme mesebetsi ena e meraro e meholo e nkuoa e le "virtual" mme ha e na tlhaloso e hlakileng. Ka hona, ts'ebetsong ea tsamaiso ea faele ea kamehla e bitsoa "virtual file system" (VFS).

Litsamaiso tsa faele tsa Virtual ho Linux: hobaneng li hlokahala, 'me li sebetsa joang? Karolo ea 1

Haeba re khona ho bula, ho bala le ho ngolla mokhatlo, joale mokhatlo oo o nkoa e le faele, joalokaha re ka bona mohlaleng oa console o ka holimo.
Ketsahalo ea VFS e totobatsa feela tlhokomeliso e kang ea Unix ea hore "ntho e 'ngoe le e' ngoe ke faele". Nahana hore na hoa makatsa hore ebe mohlala o monyane /dev/console o kaholimo o bonts'a hore na console e hlile e sebetsa joang. Setšoantšo se bontša kopano ea Bash e kopanetsoeng. Ho romela khoele ho console (sesebediswa sa "virtual console) ho e hlahisa skrineng sa sebele. VFS e na le lintho tse ling, esita le tse sa tloaelehang. Ka mohlala, e u lumella ho batla ka eena.

Sistimi tse tsebahalang joalo ka ext4, NFS, le /proc li na le mesebetsi e meraro ea bohlokoa ho sebopeho sa data sa C se bitsoang lifaele_ts'ebetso. Ho feta moo, litsamaiso tse ling tsa lifaele li atolosa le ho hlalosa bocha tšebetso ea VFS ka tsela e tloaelehileng e shebaneng le ntho. Joalo ka ha Robert Love a bontša, ho tlosoa ha VFS ho lumella basebelisi ba Linux ho kopitsa lifaele ka mokhoa o sa tsotelleng ho ea kapa ho tsoa lits'ebetsong tsa mokha oa boraro kapa mekhatlo e sa bonahaleng joalo ka liphaephe ntle le ho tšoenyeha ka sebopeho sa bona sa kahare sa data. Lehlakoreng la mosebelisi (sebaka sa mosebelisi), ho sebelisa mohala oa sistimi, ts'ebetso e ka kopitsa ho tloha faeleng ho ea ho meaho ea data ea kernel ho sebelisa mokhoa. read() tsamaiso ea faele e le 'ngoe ebe u sebelisa mokhoa write () tsamaiso e 'ngoe ea faele bakeng sa tlhahiso ea data.

Litlhaloso tsa ts'ebetso tseo e leng tsa mefuta ea motheo ea VFS li ka har'a lifaele fs/*.c kernel source code, ha subdirectories fs/ e na le litsamaiso tse itseng tsa faele. Koko e boetse e na le mekhatlo e kang cgroups, /dev и tmpfs, tse hlokehang nakong ea ts'ebetso ea boot, ka hona li hlalosoa ho subdirectory ea kernel init/. Hlokomela seo cgroups, /dev и tmpfs u se ke ua bitsa "tse tharo tse kholo" mesebetsi file_operations, empa bala ka ho toba le ho ngola ka hlooho.
Setšoantšo se ka tlase se bonts'a hore na sebaka sa basebelisi se fihlella joang mefuta e fapaneng ea litsamaiso tsa lifaele tse atisang ho beoa lits'ebetsong tsa Linux. Mehaho e sa bonts'itsoeng pipes, dmesg и POSIX clocks, eo hape e phethahatsang sebopeho file_operations, e fihlelletsoeng ka lera la VFS.

Litsamaiso tsa faele tsa Virtual ho Linux: hobaneng li hlokahala, 'me li sebetsa joang? Karolo ea 1

VFS ke "wrapper layer" lipakeng tsa mehala ea sistimi le ts'ebetsong ea tse ling file_operationsjoalo ka ext4 и procfs. Mesebetsi file_operations e ka sebelisana le bakhanni ba lisebelisoa kapa lisebelisoa tsa phihlello ea memori. tmpfs, devtmpfs и cgroups se sebedise file_operations, empa fihlella memori ka kotloloho.
Ho ba teng ha VFS ho fana ka monyetla oa ho sebelisa khoutu hape, kaha mekhoa ea mantlha e amanang le litsamaiso tsa lifaele ha ea tlameha ho sebelisoa hape ke mofuta o mong le o mong oa sistimi ea faele. Ho sebelisa khoutu hape ke mokhoa o tloaelehileng har'a baenjiniere ba software! Leha ho le joalo, haeba khoutu e ka sebelisoang hape e na le liphoso tse tebileng, lits'ebetsong tsohle tse ruang mekhoa e tloaelehileng li hlokofatsoa ke tsona.

/tmp: Tlhahiso e bonolo

Tsela e bonolo ea ho lemoha hore VFS e teng tsamaisong ke ho thaepa mount | grep -v sd | grep -v :/, e tla bonts'a tsohle tse kentsoeng (mounted) litsamaiso tsa lifaele tseo e seng li-disk-resident le tseo e seng tsa NFS, e leng 'nete lik'homphieutheng tse ngata. E 'ngoe ea li-mounts tse thathamisitsoeng (mounts) VFS ha ho pelaelo hore e tla /tmp, ho lokile?

Litsamaiso tsa faele tsa Virtual ho Linux: hobaneng li hlokahala, 'me li sebetsa joang? Karolo ea 1

E mong le e mong o tseba polokelo eo / tmp ka mokhoa oa 'mele - bohlanya! Mohloli.

Ke hobane'ng ha ho sa ratehe ho boloka /tmp mecheng ea litaba tsa 'mele? Hobane lifaele tse ka hare /tmp ke tsa nakoana mme lisebelisoa tsa polokelo li lieha ho feta mohopolo moo tmpfs e entsoeng teng. Ho feta moo, mecha ea phatlalatso ea 'mele e kotsing ea ho roala ha e ngoloa ho feta mohopolo. Qetellong, lifaele tse ho /tmp li ka ba le tlhaiso-leseling e tebileng, kahoo ho li etsa hore li nyamele ha li qala bocha ke karolo ea bohlokoa.

Ka bomalimabe, mangolo a mang a ho kenya kabo ea Linux a theha /tmp sesebelisoa sa polokelo ka boiketsetso. U se ke ua nyahama haeba sena se etsahetse le tsamaisong ea hau. Latela litaelo tse 'maloa tse bonolo ka Arch Wikiho lokisa sena, 'me u hlokomele hore memori e abetsoeng tmpfs ha e fumanehe ka mabaka a mang. Ka mantsoe a mang, sistimi e nang le tmpfs e kholo le lifaele tse kholo ho eona e ka felloa ke mohopolo le ho oa. Tlhahiso e 'ngoe: ha u ntse u hlophisa faele /etc/fstab, hopola hore e tlameha ho fela ka mola o mocha, ho seng joalo sistimi ea hau e ke ke ea qala.

/proc le /sys

Ntle ho moo /tmp, VFS (virtual file system) tse tsebahalang haholo ho basebelisi ba Linux ke /proc и /sys. (/dev e lula mohopolong o arolelanoeng mme ha e na file_operations). Ke hobane'ng ha likarolo tsee tse peli? Ha re shebeng taba ena.

procfs e theha senepe sa kernel le lits'ebetso tseo e li behang leihlo userspace. The /proc kernel e hatisa tlhahisoleseling mabapi le seo e nang le sona, joalo ka litšitiso, memori e hlakileng, le sehlophisi. Ho feta moo, /proc/sys ke sebaka seo li-parameter li hlophisitsoeng ka taelo sysctl, fumaneha bakeng sa userspace. Boemo le lipalo-palo tsa lits'ebetso tsa motho ka mong li bonts'oa ho li-directory /proc/.

Litsamaiso tsa faele tsa Virtual ho Linux: hobaneng li hlokahala, 'me li sebetsa joang? Karolo ea 1

ke /proc/meminfo ke faele e se nang letho e nang le lintlha tsa bohlokoa.

Boits'oaro /proc lifaele li bonts'a hore na litsamaiso tsa lifaele tsa disk tsa VFS li ka fapana joang. Ka lehlakoreng le leng, /proc/meminfo e na le boitsebiso bo ka bonoang ka taelo free. Ka lehlakoreng le leng, ha e na letho! E sebetsa joang? Boemo bona bo re hopotsa sehlooho se tummeng se bitsoang Na khoeli e teng ha ho se motho ea e shebang? Reality and Quantum Theory"e ngotsoe ke moprofesa oa fisiks oa Univesithi ea Cornell David Mermin ka 1985. 'Nete ke hore kernel e bokella lipalo-palo tsa memori ha kopo e etsoa ho /proc, 'me ha e le hantle lifaeleng /proc ha ho letho ha ho se motho ea shebileng. Joalokaha ho boletsoe Mermin, "Thuto ea motheo ea quantum e re ho lekanya ka kakaretso ha ho senole boleng bo neng bo le teng pele ba thepa e lekantsoeng." ('Me u nahane ka potso ea khoeli e le mosebetsi oa sekolo!)
Ho bonahala eka ke lefeela procfs e utloahala hobane litaba tse teng li matla. Boemo bo fapaneng hanyane le sysfs. Ha re bapise hore na ke lifaele tse kae tseo bonyane li leng ka boholo ba li-byte /proc le ho /sys.

Litsamaiso tsa faele tsa Virtual ho Linux: hobaneng li hlokahala, 'me li sebetsa joang? Karolo ea 1

Procfs e na le faele e le 'ngoe, e leng tlhophiso ea kernel e romelloang kantle ho naha, e leng mokhelo hobane e hloka feela ho hlahisoa hang ka boot. Ka lehlakoreng le leng, ho /sys ho na le lifaele tse ngata tse kholoanyane, tseo bongata ba tsona li nkang leqephe lohle la mohopolo. Hangata lifaele sysfs e na le nomoro kapa mola o le mong, ho fapana le litafole tsa tlhahisoleseling tse fumanoeng ho tsoa ho bala lifaele joalo ka /proc/meminfo.

Sepheo sysfs - fana ka thepa ea ho bala / ho ngola ea seo kernel e se bitsang «kobjects» sebakeng sa basebelisi. Sepheo feela kobjects ke ho baloa ha litšupiso: ha ho tlositsoe tšupiso ea ho qetela ea kobject, sistimi e tla khutlisetsa lisebelisoa tse amanang le eona. Leha ho le joalo, /sys e etsa boholo ba tse tummeng "ABI e tsitsitseng bakeng sa sebaka sa mosebedisi" core, eo ho seng motho ea ka khonang, tlas'a maemo afe kapa afe "khefu". Sena ha se bolele hore lifaele tse ho sysfs li tsitsitse, tse ka hananang le palo ea litšupiso ea lintho tse sa tsitsang.
ABI e tsitsitseng ea kernel e fokotsa se ka hlahang ho /sys, eseng se hlileng se leng teng ka nako eo. Ho thathamisa tumello ea faele ho sysfs ho fana ka leseli mabapi le hore na li-setting tsa lisebelisoa, li-module, litsamaiso tsa lifaele, jj. e ka hlophisoa kapa ea baloa. Qeto e utloahalang ke hore li-procfs le tsona ke karolo ea ABI e tsitsitseng ea kernel, leha sena se sa boleloa ka ho hlaka ho litokomane.

Litsamaiso tsa faele tsa Virtual ho Linux: hobaneng li hlokahala, 'me li sebetsa joang? Karolo ea 1

Lifaele li kene sysfs hlalosa thepa e le 'ngoe bakeng sa mokhatlo ka mong 'me e ka baloa, ea ngoloa, kapa ka bobeli. "0" faeleng e bolela hore SSD e ke ke ea tlosoa.

Ha re qale karolo ea bobeli ea phetolelo ka mokhoa oa ho beha VFS leihlo ka lisebelisoa tsa eBPF le bcc, 'me joale re emetse maikutlo a hau mme ka tloaelo re u mema bula webinar, e tla tšoaroa ke tichere ea rona ka la 9 Mmesa - Vladimir Drozdetsky.

Source: www.habr.com

Eketsa ka tlhaloso