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.
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."
Sistimi ea faele ke eng? E ipapisitse le mantsoe a e mong oa bafani ba pele le bangoli ba Linux
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
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
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 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/
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.
VFS ke "wrapper layer" lipakeng tsa mehala ea sistimi le ts'ebetsong ea tse ling file_operations
joalo 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
/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?
E mong le e mong o tseba polokelo eo / tmp
ka mokhoa oa 'mele - bohlanya!
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 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/
.
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 /proc
, 'me ha e le hantle lifaeleng /proc
ha ho letho ha ho se motho ea shebileng. Joalokaha ho boletsoe
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
.
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 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
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
Source: www.habr.com