Sistemụ faịlụ mebere na Linux: kedu ihe kpatara achọrọ ha yana kedu ka ha si arụ ọrụ? Akụkụ 1

Ndewo, unu niile! Anyị na-aga n'ihu na-ewepụta iyi ọhụrụ maka nkuzi ndị ị hụrụla n'anya ma ugbu a anyị na-eme ngwa ngwa ịkpọsa na anyị na-amalite usoro ọmụmụ ọhụrụ. "Onye nchịkwa Linux"nke ga-amalite na njedebe nke Eprel. A ga-ebipụta akwụkwọ ọhụrụ maka mmemme a. Site na ihe izizi, ị nwere ike gụọ ebe a.

Sistemụ faịlụ mebere na-eje ozi dị ka ụdị abstraction anwansi na-enye ohere nkà ihe ọmụma nke Linux ikwu na "ihe niile bụ faịlụ."

Sistemụ faịlụ mebere na Linux: kedu ihe kpatara achọrọ ha yana kedu ka ha si arụ ọrụ? Akụkụ 1

Gịnị bụ usoro faịlụ? Dabere na okwu nke otu n'ime ndị mbụ nyere aka na ndị odee nke Linux Roberta Lava, "Sistemụ faịlụ bụ nchekwa data dị n'usoro nke agbakọtara dịka otu usoro siri dị." N'agbanyeghị na ọ nwere ike, nkọwa a dabara nke ọma na VFAT (Taabụ nkenye faịlụ Virtual), Git na Cassandra (NoSQL nchekwa data). Kedu ihe na-akọwa kpọmkwem ihe dị ka "sistemụ faịlụ"?

Ntọala sistemụ faịlụ

Linux kernel nwere ụfọdụ ihe achọrọ maka ụlọ ọrụ enwere ike iwere ya dị ka sistemụ faịlụ. Ọ ga-emerịrị usoro ndị ahụ open(), read() и write() maka ihe na-adịgide adịgide nwere aha. Site n'echiche gbadoro ụkwụ na ihe mmemme, kernel na-akọwa usoro faịlụ ọnyà dị ka ihe na-adịghị anya, a na-ewerekwa nnukwu ọrụ atọ a dị ka "ihe mebere" na enweghị nkọwa doro anya. N'ihi ya, a na-akpọ mmejuputa usoro faịlụ ndabara a Virtual file system (VFS).

Sistemụ faịlụ mebere na Linux: kedu ihe kpatara achọrọ ha yana kedu ka ha si arụ ọrụ? Akụkụ 1

Ọ bụrụ na anyị nwere ike imeghe, gụọ, na degara otu ihe akwụkwọ, mgbe ahụ a na-ewere ụlọ ọrụ ahụ dị ka faịlụ, dịka anyị nwere ike ịhụ site na ihe atụ dị na njikwa n'elu.
Ihe omume VFS na-emesi nleba anya dị ka Unix na "ihe niile bụ faịlụ". Chee echiche ka ọ dị egwu na obere / dev/console atụ n'elu na-egosi ka njikwa ahụ si arụ ọrụ n'ezie. Foto a na-egosi nnọkọ Bash na-emekọrịta ihe. Izipu eriri na console (ngwaọrụ console mebere) na-egosipụta ya na ihuenyo mebere. VFS nwere ihe ndị ọzọ, ọbụlagodi ihe ndị ọbịa. Dịka ọmụmaatụ, ọ na-enye gị ohere ịchọ site na ya.

Sistemu ndị ama ama dị ka ext4, NFS, na/proc nwere ọrụ atọ dị mkpa na nhazi data C a na-akpọ faịlụ_ọrụ. Na mgbakwunye, ụfọdụ sistemụ faịlụ na-agbatị ma kọwapụta arụmọrụ VFS n'ụzọ dabara n'ihe ama ama. Dị ka Robert Love rụtụrụ aka, VFS abstraction na-enye ndị ọrụ Linux ohere idetuo faịlụ na-enweghị isi na ma ọ bụ site na sistemụ arụmọrụ ndị ọzọ ma ọ bụ ụlọ ọrụ nkịtị dị ka ọkpọkọ na-enweghị nchegbu maka usoro data nke ime ha. N'akụkụ onye ọrụ (userspace), na-eji oku sistemụ, usoro nwere ike detuo site na faịlụ gaa na nhazi data kernel site na iji usoro a. read() Otu usoro faịlụ wee jiri usoro ahụ write () usoro faịlụ ọzọ maka mmepụta data.

Nkọwa ọrụ nke dị na ụdị VFS isi dị na faịlụ fs/*.c Koodu isi mmalite kernel, mgbe subdirectories fs/ nwere ụfọdụ sistemụ faịlụ. Isi ahụ nwekwara ihe ndị dị ka cgroups, /dev и tmpfs, nke a chọrọ n'oge usoro buut na ya mere akọwapụtara na kernel subdirectory init/. Rịba ama nke ahụ cgroups, /dev и tmpfs akpọla ọrụ "nnukwu atọ". file_operations, mana gụọ ma dee na ebe nchekwa ozugbo.
Eserese dị n'okpuru na-egosi ka ohere ọrụ si enweta ụdị faịlụ dị iche iche a na-agbanyekarị na sistemụ Linux. Egosighị ihe owuwu pipes, dmesg и POSIX clocks, nke mejuputa atumatu file_operations, enweta site na oyi akwa VFS.

Sistemụ faịlụ mebere na Linux: kedu ihe kpatara achọrọ ha yana kedu ka ha si arụ ọrụ? Akụkụ 1

VFS bụ "akwa ihe mkpuchi" n'etiti oku sistemụ na mmejuputa ụfọdụ file_operations, dika ext4 и procfs. Ọrụ file_operations nwere ike imekọrịta ihe na ndị ọkwọ ụgbọala ngwaọrụ ma ọ bụ ngwaọrụ ịnweta ebe nchekwa. tmpfs, devtmpfs и cgroups ejila file_operations, mana nweta ebe nchekwa ozugbo.
Ịdị adị nke VFS na-enye ohere iji koodu ọzọ mee ihe, ebe ọ bụ na ụzọ ndị bụ isi jikọtara na usoro faịlụ adịghị mkpa ka a na-emeghachi ya site na ụdị faịlụ ọ bụla. Ejigharị koodu bụ ihe a na-emekarị n'etiti ndị injinia ngwanrọ! Agbanyeghị, ọ bụrụ na koodu reusable nwere nnukwu mmejọ, niile mmejuputa iwu na-eketa nkịtị ụzọ na-ata ahụhụ site na ha.

/tmp: Ntuziaka dị mfe

Ụzọ dị mfe iji chọpụta na VFS dị na sistemụ bụ ịpịnye mount | grep -v sd | grep -v :/, nke ga-egosi ihe niile agbakwunyere (mounted) sistemụ faịlụ ndị na-abụghị diski-bi na ndị na-abụghị NFS, nke bụ eziokwu na ọtụtụ kọmputa. Otu n'ime ihe ndị e depụtara (mounts) VFS ga-enweghị mgbagha /tmp, nri?

Sistemụ faịlụ mebere na Linux: kedu ihe kpatara achọrọ ha yana kedu ka ha si arụ ọrụ? Akụkụ 1

Onye ọ bụla maara ebe nchekwa ahụ / tmp on a anụ ahụ ọkara - ara! Isi Iyi.

Gịnị mere na ọ dịghị mma na-echekwa /tmp na mgbasa ozi anụ ahụ? N'ihi na faịlụ n'ime /tmp bụ nwa oge na ngwaọrụ nchekwa dị nwayọ karịa ebe nchekwa ebe emepụtara tmpfs. Ọzọkwa, mgbasa ozi anụ ahụ na-enwekarị ike iyi mgbe edere ya karịa ebe nchekwa. N'ikpeazụ, faịlụ dị na /tmp nwere ike ịnwe ozi dị nro, yabụ ime ka ha pụọ ​​na nrụgharị ọ bụla bụ ihe dị mkpa.

Ọ dị nwute, ụfọdụ script nwụnye Linux na-emepụta /tmp na ngwaọrụ nchekwa na ndabara. Enwela nkụda mmụọ ma ọ bụrụ na nke a emeekwa na sistemụ gị. Soro ntuziaka dị mfe ole na ole Wiki ogeiji dozie nke a, ma mara na ebe nchekwa ekenyela maka tmpfs agaghị adị maka ebumnuche ndị ọzọ. N'ikwu ya n'ụzọ ọzọ, usoro nwere nnukwu tmpfs na faịlụ buru ibu na ya nwere ike ịpụ na ebe nchekwa na okuku. Ntụle ọzọ: mgbe ị na-edezi faịlụ /etc/fstab, cheta na ọ ga-ejedebe na ọhụrụ ahịrị, ma ọ bụghị ya, usoro gị agaghị buut.

/proc na /sys

e wezụga /tmp, VFS (sistemụ faịlụ mebere) nke ndị ọrụ Linux maara nke ọma /proc и /sys. (/dev bi na òkè ebe nchekwa na-enweghị file_operations). Gịnị kpatara akụkụ abụọ a? Ka anyị leba anya n'okwu a.

procfs na-emepụta foto nke kernel na usoro ọ na-enyocha userspace. The /proc kernel na-ebipụta ozi gbasara ihe ọ dị, dị ka nkwụsịtụ, ebe nchekwa mebere, na onye nhazi oge. E wezụga nke ahụ, /proc/sys bụ ebe a na-ahazi paramita na iwu sysctl, dị maka userspace. A na-egosipụta ọkwa na ọnụ ọgụgụ nke usoro onye ọ bụla na akwụkwọ ndekọ aha /proc/.

Sistemụ faịlụ mebere na Linux: kedu ihe kpatara achọrọ ha yana kedu ka ha si arụ ọrụ? Akụkụ 1

ọ bụ /proc/meminfo bụ faịlụ efu nke nwere ozi bara uru.

Àgwà /proc faịlụ na-egosi ka usoro faịlụ diski VFS dị iche iche nwere ike isi dị. N'otu akụkụ, /proc/meminfo nwere ozi enwere ike ile ya na iwu free. N'aka nke ọzọ, ọ bụ ihe efu! Kedu ka ọ si arụ ọrụ? Ọnọdụ ahụ na-echetara akụkọ a ma ama aha ya Ọnwa ọ dị mgbe ọ nweghị onye na-ele ya anya? Eziokwu na Quantum Theory"Onye prọfesọ physics nke Cornell David Mermin dere na 1985. Nke bụ eziokwu bụ na kernel na-anakọta ọnụ ọgụgụ ebe nchekwa mgbe a rịọrọ arịrịọ /proc, na n'ezie na faịlụ /proc ọ dịghị ihe ọ bụla mgbe ọ dịghị onye na-ele anya. Dị ka e kwuru Mermin, "Ozizi isi nke quantum na-ekwu na nha n'ozuzu anaghị ekpughe uru ọ dị adị nke ihe onwunwe a na-atụ." (Ma tụlee ajụjụ gbasara ọnwa dị ka ihe omume ụlọ!)
Ọ dị ka ihe efu procfs na-eme uche n'ihi na ozi e nwere ike. Ọnọdụ dịtụ iche na sysfs. Ka anyị tulee faịlụ ole ma ọ dịkarịa ala otu byte n'ogo dị na ya /proc na na /sys.

Sistemụ faịlụ mebere na Linux: kedu ihe kpatara achọrọ ha yana kedu ka ha si arụ ọrụ? Akụkụ 1

Procfs nwere otu faịlụ, ya bụ nhazi kernel na-ebupụ, nke bụ ihe dị iche n'ihi na ọ dị mkpa ka ịmepụta otu ugboro n'otu buut. N'aka nke ọzọ, in /sys enwere ọtụtụ faịlụ buru ibu, ọtụtụ n'ime ha na-eburu ibe ebe nchekwa dum. Ọtụtụ mgbe faịlụ sysfs nwere kpọmkwem otu nọmba ma ọ bụ ahịrị, n'adịghị ka tebụl ozi enwetara site na ịgụ faịlụ dịka /proc/meminfo.

Mgbalị sysfs - nye akụrụngwa ọgụgụ / dee ihe kernel na-akpọ «kobjects» na ebe ọrụ. Naanị ihe mgbaru ọsọ kobjects bụ njikọ agụta: mgbe a na-ewepụ njikọ ikpeazụ na kobject, usoro ahụ ga-eweghachi ihe ndị metụtara ya. Ka o sina dị, /sys na-eme ka ọtụtụ n'ime ndị ama ama "ABI kwụsiri ike maka oghere ọrụ" isi, nke na-enweghị onye nwere ike mgbe, n'ọnọdụ ọ bụla "nkwụsị". Nke a apụtaghị na faịlụ ndị dị na sysfs kwụ ọtọ, nke ga-ekwekọghị na ngụkọ ntụaka nke ihe anaghị akwụsi ike.
ABI kwụsiri ike nke kernel na-amachi ihe nwere ike ịpụta na ya /sys, ọ bụghị ihe dị ugbu a n'oge ahụ. Ikike faịlụ edepụta na sysfs na-enye nghọta n'ime ka ntọala ahazi maka ngwaọrụ, modul, sistemụ faịlụ, wdg. enwere ike ịhazi ma ọ bụ gụọ. Nkwubi okwu ezi uche dị na ya bụ na procfs bụkwa akụkụ nke ABI siri ike nke kernel, n'agbanyeghị na ekwughị nke a n'ụzọ doro anya na. akwụkwọ.

Sistemụ faịlụ mebere na Linux: kedu ihe kpatara achọrọ ha yana kedu ka ha si arụ ọrụ? Akụkụ 1

Faịlụ na sysfs kọwapụta otu akụrụngwa maka ụlọ ọrụ ọ bụla ma nwee ike ịgụ ya, dee, ma ọ bụ ha abụọ. "0" na faịlụ ahụ pụtara na enweghị ike iwepụ SSD.

Ka anyị bido akụkụ nke abụọ nke ntụgharị asụsụ otu esi eleba anya na VFS site na iji eBPF na bcc ngwaọrụ, ma ugbu a, anyị na-eche okwu gị ma na-akpọ gị oku ka ị bịa. mepee webinar, nke onye nkuzi anyị ga-eme na Eprel 9 - Vladimir Drozdetsky.

isi: www.habr.com

Tinye a comment