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

Dia duit gach duine, táimid ag roinnt leat an dara cuid den fhoilseachán “Córais comhaid fhíorúla i Linux: cén fáth a bhfuil gá leo agus conas a oibríonn siad?” Is féidir leat an chéad chuid a léamh anseo. Cuirimis i gcuimhne duit go bhfuil an tsraith foilseachán seo socraithe ag an am céanna le seoladh srutha nua ar an gcúrsa "Riarthóir Linux", a thosaíonn go han-luath.

Conas monatóireacht a dhéanamh ar VFS ag baint úsáide as uirlisí eBPF agus bcc

Is é an bealach is éasca a thuiscint conas a oibríonn an eithne ar chomhaid sysfs Is é a fheiceáil go praiticiúil, agus is é an bealach is éasca chun féachaint ar ARM64 eBPF a úsáid. eBPF (gearr do Berkeley Packet Filter) comhdhéanta de mheaisín fíorúil a ritheann i croí, is féidir le húsáideoirí faoi phribhléid a iarraidh (query) ón líne ordaithe. Insíonn na foinsí eithne don léitheoir cad is féidir leis an eithne a dhéanamh; léiríonn rith na n-uirlisí eBPF ar chóras luchtaithe cad atá á dhéanamh ag an eithne i ndáiríre.

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

Ar ámharaí an tsaoil, tá sé éasca go leor tosú ag úsáid eBPF le cabhair uirlisí bcc, atá ar fáil mar phacáistí ón dáileadh ginearálta Linux agus doiciméadaithe go mion Bernard Gregg. Uirlisí bcc is scripteanna Python iad le hionsuithe beaga de chód C, rud a chiallaíonn gur féidir le haon duine atá eolach ar an dá theanga iad a mhodhnú go héasca. IN bcc/tools Tá 80 script Python ann, rud a chiallaíonn gur dócha go mbeidh forbróir nó riarthóir córais in ann rud éigin oiriúnach a roghnú chun an fhadhb a réiteach.
Chun smaoineamh superficial ar a laghad a fháil ar an obair a dhéanann VFSanna ar chóras reatha, déan iarracht vfscountvfsstat. Léireoidh sé seo, a ligean le rá, go bhfuil an iliomad glaonna vfs_open() agus tarlaíonn “a chairde” go litriúil gach soicind.

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

vfsstat.py is script Python é le hionchuir cód C a chomhaireamh go simplí glaonna feidhm VFS.

Déanaimis sampla níos fánach a thabhairt agus féach cad a tharlaíonn nuair a chuirimid tiomántán USB flash isteach i ríomhaire agus nuair a bhraitheann an córas é.

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

Ag baint úsáide as eBPF is féidir leat a fheiceáil cad atá ag tarlú i /sysnuair a chuirtear tiomáint USB flash isteach. Taispeántar sampla simplí agus casta anseo.

Sa sampla a thaispeántar thuas, bcc инструмент rian.py priontaí teachtaireacht nuair a bhíonn an t-ordú á rith sysfs_create_files(). Feicimid é sin sysfs_create_files() seoladh ag baint úsáide as kworker sruth mar fhreagra ar an bhfíric gur cuireadh isteach an tiomáint flash, ach cén comhad a cruthaíodh? Léiríonn an dara sampla cumhacht eBPF. Anseo trace.py Priontaí backtrace eithne (rogha -K) agus ainm an chomhaid a cruthaíodh sysfs_create_files(). Is cód C é ionsá ráiteas aonair a chuimsíonn teaghrán formáide atá so-aitheanta a sholáthraíonn an script Python a ritheann LLVM tiomsaitheoir díreach in am. Déanann sé an líne seo a thiomsú agus a fhorghníomhú i meaisín fíorúil taobh istigh den eithne. Síniú feidhm iomlán sysfs_create_files () a atáirgeadh sa dara ordú ionas gur féidir leis an teaghrán formáide tagairt a dhéanamh do cheann de na paraiméadair. Bíonn earráidí inaitheanta ón tiomsaitheoir C mar thoradh ar earráidí sa phíosa seo de chód C. Mar shampla, má fhágtar an paraiméadar -l ar lár, feicfidh tú "Theip ar théacs BPF a thiomsú." Gheobhaidh forbróirí atá eolach ar C agus Python na huirlisí bcc éasca a leathnú agus a athrú.

Nuair a chuirtear an tiomántán USB isteach, taispeánfaidh an backtrace eithne gur snáithe é PID 7711 kworkera chruthaigh an comhad «events» в sysfs. Dá réir sin, an glaoch ó sysfs_remove_files() léireofar gur scriosadh an comhad mar thoradh ar bhaint an tiomántáin events, a fhreagraíonn don choincheap ginearálta maidir le comhaireamh tagartha. Ag an am céanna, féachana sysfs_create_link () le eBPF agus an tiomántán USB á chur isteach, léireoidh sé go bhfuil ar a laghad 48 nasc siombalach cruthaithe.

Mar sin cad é pointe an chomhaid imeachtaí? Úsáid cscope Chun cuardach _gléas_cuir_diosca(), léiríonn cad is cúis leis disk_add_events (), agus ceachtar "media_change""eject_request" is féidir iad a thaifeadadh i gcomhad imeachta. Anseo cuireann an ciseal bloc eithne in iúl don spás úsáideora go bhfuil "diosca" le feiceáil agus tar éis éirí as. Tabhair faoi deara cé chomh faisnéiseach atá an modh taighde seo trí thiomántán USB a chur isteach, i gcomparáid le hiarracht a dhéanamh a dhéanamh amach conas a oibríonn rudaí ón bhfoinse amháin.

Cumasaíonn córais fréimhe comhaid inléite amháin gléasanna leabaithe

Ar ndóigh, ní mhúch éinne an freastalaí ná a ríomhaire tríd an breiseán a tharraingt as an soicéad. Ach cén fáth? Tá sé seo amhlaidh toisc go bhféadfadh córais chomhad suite ar ghléasanna fisiceacha stórála a bheith lagaithe scríbhinní, agus b'fhéidir nach mbeadh na struchtúir sonraí a thaifeadann a staid sioncronaithe le scríbhinní chuig an stóras. Nuair a tharlaíonn sé seo, caithfidh úinéirí córais fanacht go dtí an chéad tosaithe eile chun an fóntais a sheoladh. fsck filesystem-recovery agus, sa chás is measa, sonraí a chailliúint.

Mar sin féin, tá a fhios againn go léir go bhfuil go leor feistí IoT, chomh maith le ródairí, teirmeastait agus gluaisteáin, ag rith Linux anois. Níl mórán comhéadan úsáideora ag go leor de na gléasanna seo, agus níl aon bhealach ann iad a mhúchadh "go glan." Samhlaigh carr a thosú le ceallraí marbh nuair a bhíonn an chumhacht don aonad rialaithe Linux de shíor ag léim suas agus síos. Cén chaoi a bhfuil an córas buataisí gan fada fsckcathain a thosaíonn an t-inneall ag rith ar deireadh? Agus is é an freagra simplí. Braitheann gléasanna leabaithe ar an gcóras fréimhe comhaid le léamh amháin (giorraithe ro-rootfs (córas comhaid fréimhe inléite amháin)).

ro-rootfs a thairiscint go leor buntáistí nach bhfuil chomh soiléir ná barántúlacht. Buntáiste amháin is ea nach féidir le malware scríobh chuige /usr/lib, mura féidir aon phróiseas Linux scríobh ann. Rud eile is ea go bhfuil córas comhaid neamh-inaistrithe den chuid is mó ríthábhachtach do thacaíocht allamuigh d’fheistí cianda, ós rud é go mbraitheann pearsanra tacaíochta ar chórais áitiúla atá comhionann go hainmniúil leis na córais allamuigh. B'fhéidir gurb é an buntáiste is tábhachtaí (ach freisin is insidious) ná go gcuireann ro-rootfs iallach ar fhorbróirí cinneadh a dhéanamh maidir leis na cuspóirí córais a bheidh do- immutable ag céim deartha an chórais. Is féidir oibriú le ro-rootfs a bheith uafásach agus pianmhar, mar is minic a bhíonn athróga const i dteangacha ríomhchlárúcháin, ach is furasta a gcuid buntáistí a chosaint ar an bhforchostas breise.

chruthú rootfs Éilíonn inléite amháin roinnt iarracht bhreise d'fhorbróirí leabaithe, agus seo an áit a dtagann VFS isteach sa phictiúr. Éilíonn Linux go mbeadh comhaid isteach /var inscríofa, agus ina theannta sin, déanfaidh go leor feidhmchlár coitianta a ritheann córais leabaithe iarracht cumraíocht a chruthú dot-files в $HOME. Réiteach amháin le haghaidh comhaid cumraíochta san eolaire baile is gnách é a réamhghiniúint agus iad a thógáil isteach rootfs. Chun /var Cur chuige amháin a d'fhéadfadh a bheith ann ná é a shuiteáil ar dheighilt inscríofa ar leith, fad a bheidh / gléasta inléite amháin. Rogha eile coitianta ná gléasanna ceangail nó forleagan a úsáid.

Feistí innasctha agus in-chruachánach, a n-úsáid ag coimeádáin

Forghníomhú ordú man mount Is é an bealach is fearr chun foghlaim faoi ghléasanna incheangailteacha agus forleaganacha, a thugann an cumas d'fhorbróirí agus do riarthóirí córais córas comhaid a chruthú i gcosán amháin agus ansin é a nochtadh d'fheidhmchláir i gceann eile. I gcás córais leabaithe, ciallaíonn sé seo an cumas chun comhaid a stóráil i /var ar thiomántán splanc inléite amháin, ach forleagan nó cosán suite ó tmpfs в /var agus é á luchtú, ligfidh sé d’fheidhmchláir nótaí a scríobh ann (scrawl). An chéad uair eile a chuirfidh tú na hathruithe ar siúl /var caillfear. Cruthaíonn gléas forleagan aontas idir tmpfs agus an córas comhad bunúsach agus ligeann sé duit athruithe infheicthe a dhéanamh ar chomhaid atá ann cheana féin i ro-tootf ach is féidir le gléas ceangailteach cinn nua a dhéanamh folamh tmpfs fillteáin infheicthe mar atá inscríofa i ro-rootfs bealaí. Cé go overlayfs seo an ceann ceart (proper) cineál córas comhaid, cuirtear gléas ceangailteach i bhfeidhm i Ainmspás VFS.

Bunaithe ar an gcur síos ar an bhforleagan agus ar an bhfeisteas in-nasctha, ní haon ionadh é sin ar éinne Coimeádáin Linux úsáidtear iad go gníomhach. A ligean ar a fheiceáil cad a tharlaíonn nuair a úsáid againn córasd-nspawn chun an coimeádán a rith ag baint úsáide as an uirlis mountsnoop ó bcc.

Glaoigh system-nspawn thosaíonn an coimeádán agus é ag rith mountsnoop.py.

Feicfimid cad a tharla:

Seoladh mountsnoop cé go bhfuil an coimeádán ag "booting" léiríonn sé go bhfuil am rite an choimeádáin ag brath go mór ar an bhfeiste atá á nascadh (Ní thaispeántar ach tús an aschuir fhada).

Anseo systemd-nspawn Soláthraíonn comhaid roghnaithe i procfs и sysfs óstach go coimeádán mar cosáin chuige rootfs. Ach amháin MS_BIND bratach a chuireann an gléas ceangailteach ar bun, sainmhíníonn roinnt bratacha eile ar an ngléas an gaol idir athruithe ar spásanna ainm an óstaigh agus an choimeádáin. Mar shampla, is féidir le gléas nasctha athruithe a scipeáil /proc и /sys isteach sa choimeádán, nó iad a cheilt ag brath ar an nglao.

Conclúid

Is cosúil gur tasc dodhéanta é oibriú inmheánach Linux a thuiscint, ós rud é go bhfuil méid ollmhór cód san eithne féin, rud a fhágann feidhmchláir spáis úsáideora Linux agus comhéadain glaonna córais ar leataobh i leabharlanna C mar glibc. Bealach amháin chun dul chun cinn a dhéanamh is ea cód foinse fochórais eithne amháin a léamh, le béim ar ghlaonna córais agus ceanntásca spáis úsáideora a thuiscint, chomh maith leis na príomh-chomhéadan inmheánach eithne, mar shampla tábla file_operations. Soláthraíonn oibríochtaí comhaid an prionsabal "is comhad é gach rud", rud a fhágann go bhfuil siad thar a bheith taitneamhach a bhainistiú. C comhaid foinse eithne san eolaire barrleibhéil fs/ cur chun feidhme córas comhaid fhíorúil a chur i láthair, ar ciseal fillte iad a sholáthraíonn comhoiriúnacht leathan agus réasúnta simplí idir córais chomhaid agus feistí stórála a bhfuil tóir orthu. Is draíocht VFS é nascadh agus gléasadh forleagan trí ainmspásanna Linux a fhágann gur féidir coimeádáin inléite amháin agus córais fhréamh-chomhaid a chruthú. In éineacht le scrúdú ar an gcód foinseach, ar chroíuirlis eBPF agus ar a comhéadan bcc
ag déanamh taiscéalaíochta croí níos éasca ná riamh.

A chairde, a scríobh, an raibh an t-alt seo úsáideach duit? B'fhéidir go bhfuil aon tuairimí nó ráitis agat? Agus tugtar cuireadh dóibh siúd a bhfuil suim acu sa chúrsa Riarthóir Linux Lá Oscailte, a bheidh ar siúl ar 18 Aibreán.

An chéad chuid.

Foinse: will.com

Add a comment