Córais comhaid fhíorúla i Linux: cén fáth a bhfuil gá leo agus conas a oibríonn siad? Cuid 1

Dia duit gach duine! Leanaimid de bheith ag seoladh sruthanna nua do na cúrsaí a bhfuil grá agat dóibh cheana féin agus anois tá deifir orainn a fhógairt go bhfuil muid ag cur tús le sraith nua cúrsaí "Riarthóir Linux"a seolfar ag deireadh mhí Aibreáin. Cuirfear dáta ar fhoilseachán nua don imeacht seo. Leis an ábhar bunaidh, is féidir leat léigh anseo.

Feidhmíonn córais comhaid fhíorúla mar chineál astarraingthe draíochta a ligeann d'fhealsúnacht Linux a rá gur "comhad é gach rud."

Córais comhaid fhíorúla i Linux: cén fáth a bhfuil gá leo agus conas a oibríonn siad? Cuid 1

Cad is córas comhaid ann? Bunaithe ar fhocail duine de na chéad ranníocóirí agus údair Linux Roberta Lava, "Is éard is córas comhaid ann ná stóráil ordlathach sonraí a chuirtear le chéile de réir struchtúir ar leith." Bíodh sin mar atá, tá an sainmhíniú seo chomh maith céanna do VFAT (Tábla Leithdháilte Comhad Fíorúil), Git agus Cassandra (Bunachar sonraí NoSQL). Mar sin, cad a shainmhíníonn a leithéid de rud mar "córas comhaid"?

Bunúsacha an Chórais Chomhaid

Tá ceanglais áirithe ag an eithne Linux maidir le haonán ar féidir a mheas mar chóras comhaid. Caithfidh sé na modhanna a chur i bhfeidhm open(), read() и write() le haghaidh rudaí marthanacha a bhfuil ainmneacha orthu. Ó thaobh réad-dhírithe de cláir, sainmhíníonn an eithne córas comhaid cineálach mar chomhéadan teibí, agus meastar go bhfuil na trí fheidhmeanna móra seo "fíorúil" agus níl aon sainmhíniú coincréite acu. Dá réir sin, tugtar córas comhaid fhíorúil (VFS) ar chur i bhfeidhm réamhshocraithe an chórais comhad.

Córais comhaid fhíorúla i Linux: cén fáth a bhfuil gá leo agus conas a oibríonn siad? Cuid 1

Más féidir linn eintiteas a oscailt, a léamh agus a scríobh, ansin meastar gur comhad é an t-aonán sin, mar a fheicimid ón sampla sa chonsól thuas.
Ní chuireann feiniméan VFS béim ach ar an tuairim atá cosúil le Unix gur “comhad é gach rud”. Smaoinigh cé chomh aisteach is a thaispeánann an sampla beag /dev/consól thuas conas a oibríonn an consól i ndáiríre. Taispeánann an pictiúr seisiún idirghníomhach Bash. Nuair a sheoltar teaghrán chuig an consól (gléas consól fíorúil) taispeántar ar scáileán fíorúil é. Tá airíonna eile, fiú strainséirí ag VFS. Mar shampla, ceadaíonn sé duit cuardach a dhéanamh de réir .

Tá trí fheidhm thábhachtacha ag córais aithnidiúla ar nós ext4, NFS, agus /proc i struchtúr sonraí C ar a dtugtar comhad_oibríochtaí. Ina theannta sin, leathnaíonn agus athshainíonn córais comhad áirithe feidhmiúlacht VFS ar bhealach eolach atá dírithe ar oibiachtaí. Mar a thugann Robert Love le fios, ligeann astarraingt VFS d’úsáideoirí Linux comhaid a chóipeáil go neamhchalantach chuig nó ó chórais oibriúcháin tríú páirtí nó ó aonáin teibí cosúil le píopaí gan a bheith buartha faoina bhformáid sonraí inmheánacha. Ar thaobh an úsáideora (spás úsáideora), ag baint úsáide as glao córais, is féidir próiseas a chóipeáil ó chomhad go struchtúir sonraí eithne ag baint úsáide as an modh read() córas comhaid amháin agus ansin bain úsáid as an modh write () córas comhaid eile le haghaidh aschur sonraí.

Tá na sainmhínithe feidhm a bhaineann leis na cineálacha bunúsacha VFS sna comhaid fs/*.c cód foinse eithne, agus fochomhadlanna fs/ córais comhaid áirithe a bheith ann. Tá eintitis mar cgroups, /dev и tmpfs, a theastaíonn le linn an phróisis tosaithe agus dá bhrí sin sainmhínítear iad i bhfochomhadlann na eithne init/. Fógra go cgroups, /dev и tmpfs ná glaoch ar an "trí mhór" feidhmeanna file_operations, ach léamh agus scríobh go díreach chun cuimhne.
Taispeánann an léaráid thíos conas a fhaigheann spás úsáideora rochtain ar na cineálacha éagsúla córas comhaid a shuitear go coitianta ar chórais Linux. Struchtúir nach dtaispeántar pipes, dmesg и POSIX clocks, a chuireann an struchtúr i bhfeidhm freisin file_operations, a rochtain tríd an gciseal VFS.

Córais comhaid fhíorúla i Linux: cén fáth a bhfuil gá leo agus conas a oibríonn siad? Cuid 1

Is "ciseal fillte" é VFS idir glaonna córais agus feidhmiúcháin áirithe file_operationsDen sórt sin mar ext4 и procfs. Feidhmeanna file_operations is féidir leis idirghníomhú le tiománaithe gléas nó le gléasanna rochtana cuimhne. tmpfs, devtmpfs и cgroups ná húsáid file_operations, ach rochtain dhíreach ar an gcuimhne.
Soláthraíonn VFS a bheith ann an cumas cód a athúsáid, ós rud é nach gá na modhanna bunúsacha a bhaineann le córais comhad a ath-chur i bhfeidhm ag gach cineál córais comhaid. Is cleachtas coitianta é athúsáid cód i measc innealtóirí bogearraí! Mar sin féin, má tá an cód ath-inúsáidte botúin thromchúiseacha, tá gach feidhmiú a fhaigheann modhanna coitianta le hoidhreacht ag fulaingt uathu.

/tmp: Leid shimplí

Bealach éasca a bhrath go bhfuil VFS i láthair ar chóras ná clóscríobh mount | grep -v sd | grep -v :/, a thaispeánfaidh gach gléasta (mounted) córais comhaid nach bhfuil diosca cónaitheach agus neamh-NFS, rud atá fíor ar fhormhór na ríomhairí. Ceann de na gléasanna liostaithe (mounts) Déanfaidh VFS gan dabht /tmp, ceart?

Córais comhaid fhíorúla i Linux: cén fáth a bhfuil gá leo agus conas a oibríonn siad? Cuid 1

Tá a fhios ag gach duine an stóráil sin / tmp ar mheán fisiciúil - madness! Foinse.

Cén fáth go bhfuil sé neamh-inmhianaithe a stóráil /tmp ar na meáin fhisiciúil? Toisc go bhfuil na comhaid i /tmp tá feistí sealadacha agus stórála níos moille ná an chuimhne ina gcruthaítear tmpfs. Ina theannta sin, is mó an seans go gcaithfí na meáin fhisiceacha nuair a bhíonn siad forscríofa ná mar a bhíonn cuimhne orthu. Ar deireadh, is féidir faisnéis íogair a bheith i gcomhaid in /tmp, agus mar sin is gné riachtanach é iad a imíonn siad ar gach atosaigh.

Ar an drochuair, cruthaíonn roinnt scripteanna suiteála dáileadh Linux / tmp ar an bhfeiste stórála de réir réamhshocraithe. Ná bíodh éadóchas ort má tharla sé seo do do chóras freisin. Lean roinnt treoracha simplí le Arch Wikichun é seo a shocrú, agus a bheith ar an eolas go bhfuil an chuimhne leithdháilte le haghaidh tmpfs a bheith ar fáil chun críocha eile. I bhfocail eile, is féidir le córas ina bhfuil tmpfs ollmhór agus comhaid mhóra air rith as cuimhne agus tuairteála. Leid eile: agus comhad á chur in eagar /etc/fstab, cuimhnigh go gcaithfidh sé deireadh le líne nua, nó ní bheidh do chóras tosaithe.

/proc agus /sys

Chomh maith le /tmp, Is iad VFS (córais comhaid fhíorúla) is mó a bhfuil aithne ag úsáideoirí Linux orthu /proc и /sys. (/dev ina chónaí i gcuimhne roinnte agus nach bhfuil file_operations). Cén fáth an dá chomhpháirt? Breathnaímid ar an gceist seo.

procfs cruthaíonn sé léargas ar an eithne agus ar na próisis a ndéanann sé monatóireacht orthu userspace. I /proc prionnaíonn an t-eithne faisnéis faoina bhfuil ar fáil aige, amhail cur isteach, cuimhne fhíorúil, agus an sceidealóir. Thairis sin, /proc/sys is é an áit a bhfuil na paraiméadair cumraithe leis an ordú sysctl, ar fáil le haghaidh userspace. Taispeántar stádas agus staitisticí na bpróiseas aonair in eolairí /proc/.

Córais comhaid fhíorúla i Linux: cén fáth a bhfuil gá leo agus conas a oibríonn siad? Cuid 1

Anseo /proc/meminfo is comhad folamh é ina bhfuil faisnéis luachmhar mar sin féin.

Iompar /proc léiríonn comhaid cé chomh difriúil is féidir le córais comhaid diosca VFS a bheith. Ar thaobh amháin, /proc/meminfo go bhfuil faisnéis is féidir a fheiceáil leis an ordú free. Ar an láimh eile, tá sé folamh! Conas a oibríonn sé? Tá an scéal i gcuimhne ar an alt cáiliúil dar teideal An bhfuil an ghealach ann nuair nach bhfuil aon duine ag féachaint uirthi? Réaltacht agus Teoiric Quantum"scríofa ag ollamh fisice Ollscoil Cornell David Mermin i 1985. Is é fírinne an scéil go mbailíonn an eithne staitisticí cuimhne nuair a dhéantar iarratas /proc, agus i ndáiríre i gcomhaid /proc níl aon rud ann nuair nach bhfuil aon duine ag féachaint. Mar a dúirt Meimin, "Deir foirceadal bunúsach chandamach nach nochtann tomhas go ginearálta luach na maoine atá á thomhas cheana féin." (Agus smaoinigh ar cheist na gealaí mar obair bhaile!)
An chuma ar an bhfolús procfs ciall mar go bhfuil an t-eolas atá ann dinimiciúil. Staid beagán difriúil le sysfs. Déanaimis comparáid idir cé mhéad comhad a bhfuil beart amháin ar a laghad iontu /proc agus /sys.

Córais comhaid fhíorúla i Linux: cén fáth a bhfuil gá leo agus conas a oibríonn siad? Cuid 1

Procfs Tá comhad amháin aige, is é sin an chumraíocht eithne easpórtáilte, ar eisceacht é toisc nach gá é a ghiniúint ach uair amháin in aghaidh an tosaithe. Ar an láimh eile, i /sys tá go leor comhad níos mó, go leor acu a thógann suas leathanach iomlán de chuimhne. Comhaid de ghnáth sysfs uimhir nó líne amháin go díreach a bheith iontu, murab ionann agus táblaí faisnéise a fhaightear ó chomhaid a léamh mar /proc/meminfo.

Sprioc sysfs - airíonna léite/scríofa den rud a ghlaonn an t-eithne a sholáthar «kobjects» i spás úsáideora. An sprioc amháin kobjects is link counting: nuair a bhaintear an nasc deiridh chuig kobject, déanfaidh an córas na hacmhainní a bhaineann leis a athbhunú. Mar sin féin, /sys dhéanann suas an chuid is mó de na cáiliúil "ABI cobhsaí le haghaidh spás úsáideora" croí, rud nach féidir le duine ar bith riamh, in imthosca ar bith "briseadh". Ní chiallaíonn sé seo go bhfuil comhaid i sysfs statach, a bheadh ​​ar neamhréir le comhaireamh tagartha réad éagobhsaí.
Cuireann ABI cobhsaí an eithne teorainn leis an méid is féidir a bheith le feiceáil ann /sys, ní cad atá i láthair i ndáiríre ag an nóiméad áirithe sin. Soláthraíonn liostú ceadanna comhad i sysfs léargas ar conas is féidir socruithe a chumrú le haghaidh gléasanna, modúil, córais comhad, etc. is féidir é a chumrú nó a léamh. Is é an chonclúid loighciúil go bhfuil procfs mar chuid de ABI cobhsaí an eithne freisin, cé nach bhfuil sé seo luaite go sainráite i doiciméadú.

Córais comhaid fhíorúla i Linux: cén fáth a bhfuil gá leo agus conas a oibríonn siad? Cuid 1

Comhaid i sysfs déan cur síos ar airí ar leith amháin do gach aonán agus is féidir í a léamh, a scríobh, nó an dá rud. Ciallaíonn "0" sa chomhad nach féidir an SSD a bhaint.

Cuirimis tús leis an dara cuid den aistriúchán le conas monatóireacht a dhéanamh ar VFS ag baint úsáide as na huirlisí eBPF agus bcc, agus anois táimid ag fanacht le do thuairimí agus go traidisiúnta cuireadh a thabhairt duit webinar oscailte, a bheidh ar siúl ag ár múinteoir ar 9 Aibreán - Vladimir Drozdetsky.

Foinse: will.com

Add a comment