Salaam wote! Tunaendelea kuzindua mipasho mipya ya kozi ambazo tayari umezipenda na sasa tunaharaka kutangaza kwamba tunaanza seti mpya ya kozi. ambayo itazinduliwa mwishoni mwa Aprili. Uchapishaji mpya utawekwa tarehe kwa tukio hili. Kwa nyenzo za asili, unaweza .
Mifumo ya faili pepe hufanya kazi kama aina ya ufupisho wa kichawi unaoruhusu falsafa Linux kusema kwamba "kila kitu ni faili."

Mfumo wa faili ni nini? Kulingana na mmoja wa wachangiaji na waandishi wa kwanza Linux , "Mfumo wa faili ni hifadhi ya kihierarkia ya data iliyokusanywa kulingana na muundo maalum." Iwe hivyo, ufafanuzi huu unafaa kwa VFAT (Jedwali la Ugawaji wa Faili ya Virtual), Git na () Kwa hivyo ni nini hasa hufafanua kitu kama "mfumo wa faili"?
Misingi ya Mfumo wa faili
Cha msingi Linux ina mahitaji fulani kwa chombo kuzingatiwa kama mfumo wa faili. Lazima itekeleze mbinu open(), read() и write() kwa vitu vinavyoendelea ambavyo vina majina. Kutoka kwa mtazamo wa kitu , kernel inafafanua mfumo wa faili wa generic kama kiolesura cha dhahania, na kazi hizi tatu kubwa huchukuliwa kuwa "virtual" na hazina ufafanuzi kamili. Ipasavyo, utekelezaji wa mfumo chaguo-msingi wa faili unaitwa mfumo wa faili wa kawaida (VFS).

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 Zaidi ya hayo, mifumo fulani ya faili hupanua na kutekeleza upya utendaji kazi wa VFS kwa njia inayojulikana inayolenga vitu. Kama Robert Love anavyobainisha, ufupisho wa VFS huruhusu watumiaji Linux Nakili faili kwa uangalifu kwenda na kutoka kwa mifumo endeshi ya wahusika wengine au vyombo vya dhahania kama vile mabomba, bila kuwa na wasiwasi kuhusu umbizo lao la ndani la data. Kutoka upande wa mtumiaji (nafasi ya mtumiaji), mchakato unaweza kunakili kutoka kwa faili hadi miundo ya data ya kernel kwa kutumia simu ya mfumo. 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 msimbo wa chanzo wa kernel, wakati subdirectories 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 kwa kawaida huwekwa kwenye mifumo. LinuxMiundo kama hiyo 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_operationsKama 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 , utekelezaji wote ambao hurithi njia za kawaida zinakabiliwa nao.
/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, baadhi ya hati za usakinishaji Linux Usambazaji huunda /tmp kwenye kifaa cha kuhifadhi kwa chaguo-msingi. Usikate tamaa ikiwa hii itatokea kwa mfumo wako. Fuata maagizo machache rahisi na kurekebisha hii, na ujue kuwa kumbukumbu iliyotengwa kwa ajili ya 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 pepe ya faili), ambayo inajulikana zaidi kwa watumiaji Linux - Je, /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 iliyoandikwa na profesa wa fizikia wa Chuo Kikuu cha Cornell David Mermin mnamo 1985. Ukweli ni kwamba kernel inakusanya takwimu za kumbukumbu wakati ombi linafanywa /proc, na kwa kweli katika faili /proc hakuna kitu wakati hakuna mtu anayeangalia. Kama ilivyosemwa , "Mafundisho ya kimsingi ya quantum yanasema kwamba kipimo kwa ujumla hakionyeshi thamani iliyokuwepo awali ya mali inayopimwa." (Na fikiria swali kuhusu mwezi kama kazi ya nyumbani!)
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 msingi, ambayo hakuna mtu anaweza milele, chini ya hali yoyote . Hii haimaanishi kuwa faili kwenye sysfs ni tuli, ambayo haiendani na hesabu ya kumbukumbu ya vitu visivyo thabiti.
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 , ambayo itashikiliwa na mwalimu wetu mnamo Aprili 9 - .
Chanzo: mapenzi.com
