Salaam wote! Tunaendelea kuzindua mipasho mipya ya kozi ambazo tayari umezipenda na sasa tunaharaka kutangaza kwamba tunaanza seti mpya ya kozi.
Mifumo halisi ya faili hutumika kama aina ya uondoaji wa kichawi ambayo inaruhusu falsafa ya Linux kusema kwamba "kila kitu ni faili."
Mfumo wa faili ni nini? Kulingana na maneno ya mmoja wa wachangiaji wa kwanza na waandishi wa Linux
Misingi ya Mfumo wa faili
Kiini cha Linux kina mahitaji fulani kwa huluki ambayo inaweza kuchukuliwa kuwa mfumo wa faili. Ni lazima kutekeleza mbinu open()
, read()
ΠΈ write()
kwa vitu vinavyoendelea ambavyo vina majina. Kutoka kwa mtazamo wa kitu
Ikiwa tunaweza kufungua, kusoma, na kuandika kwa huluki, basi huluki hiyo inachukuliwa kuwa faili, kama tunavyoweza kuona kutoka kwa mfano kwenye koni hapo juu.
Hali ya VFS inasisitiza tu uchunguzi wa Unix kwamba "kila kitu ni faili". Fikiria jinsi ya kushangaza kwamba mfano huo mdogo /dev/console hapo juu unaonyesha jinsi koni inavyofanya kazi. Picha inaonyesha kikao cha mwingiliano cha Bash. Kutuma kamba kwa kiweko (kifaa cha kiweko halisi) huionyesha kwenye skrini pepe. VFS ina mali nyingine, hata ngeni. Kwa mfano, hukuruhusu kutafuta
Mifumo inayojulikana kama ext4, NFS, na /proc ina kazi tatu muhimu katika muundo wa data wa C unaoitwa read()
mfumo wa faili moja na kisha utumie njia write ()
mfumo mwingine wa faili kwa pato la data.
Ufafanuzi wa chaguo za kukokotoa ambazo ni za aina za VFS msingi ziko kwenye faili fs/
ina mifumo fulani ya faili. Msingi pia una vyombo kama vile cgroups
, /dev
ΠΈ tmpfs
, ambazo zinahitajika wakati wa mchakato wa kuwasha na kwa hivyo zinafafanuliwa katika saraka ndogo ya kernel init/
. Angalia hilo cgroups
, /dev
ΠΈ tmpfs
usiite kazi za "tatu kubwa". file_operations
, lakini soma na uandike moja kwa moja kwa kumbukumbu.
Mchoro ulio hapa chini unaonyesha jinsi nafasi ya mtumiaji inavyofikia aina tofauti za mifumo ya faili ambayo kawaida huwekwa kwenye mifumo ya Linux. Miundo haijaonyeshwa pipes
, dmesg
ΠΈ POSIX clocks
, ambayo pia kutekeleza muundo file_operations
, kupatikana kupitia safu ya VFS.
VFS ni "safu ya kufunika" kati ya simu za mfumo na utekelezaji wa fulani file_operations
Kama vile ext4
ΠΈ procfs
. Kazi file_operations
inaweza kuingiliana na viendeshi vya kifaa au vifaa vya ufikiaji wa kumbukumbu. tmpfs
, devtmpfs
ΠΈ cgroups
usitumie file_operations
, lakini fikia kumbukumbu moja kwa moja.
Kuwepo kwa VFS kunatoa fursa ya kutumia tena msimbo, kwani mbinu za kimsingi zinazohusiana na mifumo ya faili si lazima zitekelezwe tena na kila aina ya mfumo wa faili. Kutumia tena msimbo ni jambo la kawaida miongoni mwa wahandisi wa programu! Walakini, ikiwa nambari inayoweza kutumika tena inayo
/tmp: Kidokezo rahisi
Njia rahisi ya kugundua kuwa VFS wapo kwenye mfumo ni kuandika mount | grep -v sd | grep -v :/
, ambayo itaonyesha yote yaliyowekwa (mounted
) mifumo ya faili ambayo haiishi kwenye diski na isiyo ya NFS, ambayo ni kweli kwenye kompyuta nyingi. Moja ya milipuko iliyoorodheshwa (mounts
) VFS bila shaka /tmp
, haki?
Kila mtu anajua hifadhi hiyo / tmp
juu ya kimwili kati - wazimu!
Kwa nini haifai kuhifadhi /tmp
kwenye vyombo vya habari vya kimwili? Kwa sababu faili ndani /tmp
ni za muda na vifaa vya kuhifadhi ni polepole kuliko kumbukumbu ambapo tmpfs imeundwa. Zaidi ya hayo, vyombo vya habari vya kimwili huathirika zaidi kuvaa wakati wa kuandika zaidi kuliko kumbukumbu. Mwishowe, faili katika /tmp zinaweza kuwa na habari nyeti, kwa hivyo kuzifanya kutoweka kwenye kila kuwasha upya ni kipengele muhimu.
Kwa bahati mbaya, hati zingine za usakinishaji wa usambazaji wa Linux huunda /tmp kwenye kifaa cha kuhifadhi kwa chaguo-msingi. Usikate tamaa ikiwa hii ilitokea kwa mfumo wako pia. Fuata maagizo machache rahisi na tmpfs
inakuwa haipatikani kwa madhumuni mengine. Kwa maneno mengine, mfumo ulio na tmpfs kubwa na faili kubwa juu yake unaweza kukosa kumbukumbu na kuanguka. Kidokezo kingine: wakati wa kuhariri faili /etc/fstab
, kumbuka kwamba lazima imalizike na laini mpya, vinginevyo mfumo wako hautaanza.
/proc na /sys
Mbali na hilo /tmp
, VFS (mifumo ya faili halisi) ambayo inajulikana zaidi kwa watumiaji wa Linux ni /proc
ΠΈ /sys
. (/dev
inakaa katika kumbukumbu iliyoshirikiwa na haina file_operations
) Kwa nini vipengele hivi viwili? Hebu tuangalie suala hili.
procfs
huunda taswira ya kernel na michakato inayofuatilia userspace
. Katika /proc
kernel huchapisha maelezo kuhusu kile kilicho nacho, kama vile kukatizwa, kumbukumbu pepe, na kipanga ratiba. Mbali na hilo, /proc/sys
ni mahali ambapo vigezo vimeundwa kwa amri sysctl
, inapatikana kwa userspace
. Hali na takwimu za michakato ya mtu binafsi huonyeshwa kwenye saraka /proc/
.
Hapa /proc/meminfo
ni faili tupu ambayo hata hivyo ina taarifa muhimu.
Tabia /proc
faili zinaonyesha jinsi mifumo tofauti ya faili za diski za VFS inaweza kuwa. Kwa upande mmoja, /proc/meminfo
vyenye habari ambayo inaweza kutazamwa na amri free
. Kwa upande mwingine, ni tupu! Inafanyaje kazi? Hali hiyo inakumbusha makala maarufu yenye kichwa /proc
, na kwa kweli katika faili /proc
hakuna kitu wakati hakuna mtu anayeangalia. Kama ilivyosemwa
Inaonekana utupu procfs
ina maana kwa sababu habari huko ni ya nguvu. Hali tofauti kidogo na sysfs
. Wacha tulinganishe ni faili ngapi ambazo zina ukubwa wa angalau baiti moja /proc
na /sys
.
Procfs
ina faili moja, ambayo ni usanidi wa kernel iliyosafirishwa, ambayo ni ubaguzi kwa sababu inahitaji tu kuzalishwa mara moja kwa buti. Kwa upande mwingine, katika /sys
kuna faili nyingi kubwa, nyingi ambazo huchukua ukurasa mzima wa kumbukumbu. Kawaida faili sysfs
vyenye nambari moja au laini, tofauti na jedwali la habari iliyopatikana kutoka kwa faili za kusoma kama vile /proc/meminfo
.
Lengo sysfs
- toa sifa za kusoma/kuandika za kile kernel huita Β«kobjectsΒ»
katika nafasi ya mtumiaji. Lengo pekee kobjects
ni kuhesabu viungo: wakati kiungo cha mwisho cha kobject kinapoondolewa, mfumo utarejesha rasilimali zinazohusiana nayo. Hata hivyo, /sys
hufanya wengi wa maarufu
ABI thabiti ya kernel huwekea mipaka kile kinachoweza kuonekana ndani /sys
, sio kile kilichopo kwa wakati huo. Kuorodhesha ruhusa za faili katika sysfs hutoa maarifa juu ya jinsi mipangilio inayoweza kusanidiwa ya vifaa, moduli, mifumo ya faili, n.k. inaweza kusanidiwa au kusoma. Hitimisho la kimantiki ni kwamba procfs pia ni sehemu ya ABI thabiti ya kernel, ingawa hii haijasemwa wazi katika
Faili ndani sysfs
eleza sifa moja mahususi kwa kila chombo na inaweza kusomeka, kuandikwa, au zote mbili. "0" kwenye faili inamaanisha kuwa SSD haiwezi kuondolewa.
Hebu tuanze sehemu ya pili ya tafsiri na jinsi ya kufuatilia VFS kwa kutumia eBPF na zana za bcc, na sasa tunasubiri maoni yako na kwa kawaida tunakualika
Chanzo: mapenzi.com