Siostaman faidhle mas-fhìor ann an Linux: carson a tha feum orra agus ciamar a tha iad ag obair? Pàirt 1

Hi uile! Tha sinn a’ leantainn air adhart a’ cur sruthan ùra air bhog airson nan cùrsaichean air a bheil thu air tuiteam ann an gaol leotha mar-thà agus a-nis tha sinn ann an cabhaig innse gu bheil sinn a’ tòiseachadh sreath ùr de chùrsaichean "Rianadair Linux"a thèid a chuir air bhog aig deireadh a’ Ghiblein. Bidh ceann-latha air foillseachadh ùr airson an tachartais seo. Leis an stuth tùsail, faodaidh tu leugh an seo.

Tha siostaman faidhle mas-fhìor mar sheòrsa de tharraing draoidheil a leigeas le feallsanachd Linux a ràdh “is e faidhle a th’ anns a h-uile dad. ”

Siostaman faidhle mas-fhìor ann an Linux: carson a tha feum orra agus ciamar a tha iad ag obair? Pàirt 1

Dè a th’ ann an siostam faidhle? Stèidhichte air faclan aon de na ciad chom-pàirtichean agus ùghdaran aig Linux Roberta Labha, "'S e stòradh rangachaidh de dhàta a th' ann an siostam fhaidhlichean a th' air a chruinneachadh a-rèir structar sònraichte." Biodh sin mar a dh’ fhaodadh e, tha am mìneachadh seo a cheart cho freagarrach airson VFAT (Clàr Riarachaidh Virtual File), Git agus Cassandra (Stòr-dàta NoSQL). Mar sin dè dìreach a tha a’ mìneachadh a leithid de rud ri “siostam faidhle”?

Bun-bheachdan siostam faidhle

Tha riatanasan sònraichte aig an kernel Linux airson eintiteas a dh’ fhaodar a mheas mar shiostam faidhle. Feumaidh e na dòighean a chur an gnìomh open(), read() и write() airson nithean seasmhach aig a bheil ainmean. Bho shealladh a tha ag amas air cuspair prògramadh, tha an kernel a’ mìneachadh siostam faidhle coitcheann mar eadar-aghaidh eas-chruthach, agus tha na trì gnìomhan mòra sin air am meas mar “brìgheil” agus chan eil mìneachadh cruaidh aca. Mar sin, canar siostam faidhle brìgheil (VFS) ri buileachadh siostam faidhle bunaiteach.

Siostaman faidhle mas-fhìor ann an Linux: carson a tha feum orra agus ciamar a tha iad ag obair? Pàirt 1

Mas urrainn dhuinn fosgladh, leughadh, agus sgrìobhadh gu eintiteas, tha an eintiteas sin air a mheas mar fhaidhle, mar a chì sinn bhon eisimpleir sa chonsail gu h-àrd.
Chan eil an iongantas VFS ach a’ daingneachadh an amharc coltach ri Unix gu bheil “a h-uile dad na fhaidhle”. Smaoinich air cho neònach sa tha an eisimpleir bheag / dev / console gu h-àrd a’ sealltainn mar a tha an consol ag obair. Tha an dealbh a’ sealltainn seisean Bash eadar-ghnìomhach. Le bhith a’ cur sreang chun chonsail (inneal tòcan mas-fhìor) ga thaisbeanadh air scrion mas-fhìor. Tha feartan eile, eadhon coigreach aig VFS. Mar eisimpleir, leigidh e leat rannsachadh le e.

Tha trì gnìomhan cudromach aig siostaman eòlach leithid ext4, NFS, agus / proc ann an structar dàta C ris an canar faidhle_oibríochtaí. A bharrachd air an sin, bidh cuid de shiostaman faidhle a’ leudachadh agus ag ath-mhìneachadh gnìomhachd VFS ann an dòigh air a bheil sinn eòlach air cuspair. Mar a tha Robert Love ag ràdh, tha an tarraing VFS a’ leigeil le luchd-cleachdaidh Linux faidhlichean a chopaigeadh gu neo-chaochlaideach gu no bho shiostaman obrachaidh treas-phàrtaidh no buidhnean eas-chruthach leithid pìoban gun a bhith draghail mun chruth dàta a-staigh aca. Air taobh an neach-cleachdaidh (userspace), a’ cleachdadh gairm siostaim, faodaidh pròiseas lethbhreac a dhèanamh bho fhaidhle gu structaran dàta kernel a’ cleachdadh an dòigh read() aon siostam faidhle agus an uairsin cleachd am modh write () siostam faidhle eile airson toradh dàta.

Tha na mìneachaidhean gnìomh a bhuineas do na seòrsaichean bunaiteach VFS anns na faidhlichean fs/*.c còd stòr kernel, fhad ‘s a tha fo-eòlairean fs/ cuir a-steach cuid de shiostaman faidhle. Anns a 'chridhe cuideachd tha aonadan leithid cgroups, /dev и tmpfs, a tha riatanach tron ​​​​phròiseas tòiseachaidh agus mar sin tha iad air am mìneachadh anns an fho-eòlaire kernel init/. Mothaich sin cgroups, /dev и tmpfs na gairm na gnìomhan “trì mòra”. file_operations, ach leugh gu dìreach agus sgrìobh gu cuimhne.
Tha an diagram gu h-ìosal a’ sealltainn mar a bhios luchd-cleachdaidh a’ faighinn cothrom air na diofar sheòrsaichean de shiostaman faidhle a tha mar as trice air an cur suas air siostaman Linux. Structaran nach eil air an sealltainn pipes, dmesg и POSIX clocks, a tha cuideachd a 'cur an gnìomh an structair file_operations, a gheibhear thuige tro shreath VFS.

Siostaman faidhle mas-fhìor ann an Linux: carson a tha feum orra agus ciamar a tha iad ag obair? Pàirt 1

Tha VFS na “sreath còmhdaich” eadar fiosan siostam agus buileachadh sònraichte file_operationsleithid ext4 и procfs. Gnìomhan file_operations faodaidh iad eadar-obrachadh le draibhearan inneal no innealan ruigsinneachd cuimhne. tmpfs, devtmpfs и cgroups na cleachd file_operations, ach faigh cothrom dìreach air a’ chuimhne.
Tha VFS a’ toirt cothrom còd ath-chleachdadh, leis nach fheum na dòighean bunaiteach co-cheangailte ri siostaman faidhle a bhith air an ath-chur an gnìomh le gach seòrsa siostam faidhle. Tha ath-chleachdadh còd na chleachdadh cumanta am measg innleadairean bathar-bog! Ach, ma tha an còd ath-chleachdadh ann mearachdan mòra, bidh a h-uile gnìomh a shealbhaicheas dòighean cumanta a’ fulang bhuapa.

/tmp: Moladh sìmplidh

Is e dòigh furasta air faighinn a-mach gu bheil VFS an làthair air siostam a bhith a’ taipeadh mount | grep -v sd | grep -v :/, a sheallas na h-uile air an cur suas (mounted) siostaman fhaidhlichean nach eil a’ fuireach ann an diosc agus neo-NFS, a tha fìor air a’ mhòr-chuid de choimpiutairean. Aon de na h-ionadan clàraichte (mounts) Bidh VFS gun teagamh /tmp, deas?

Siostaman faidhle mas-fhìor ann an Linux: carson a tha feum orra agus ciamar a tha iad ag obair? Pàirt 1

Tha fios aig a h-uile duine mun stòradh sin / tmp air meadhan fiosaigeach - cuthach! Stòr.

Carson a tha e neo-mhiannach a stòradh /tmp air na meadhanan corporra? Air sgàth na faidhlichean ann an /tmp tha innealan sealach agus stòraidh nas slaodaiche na an cuimhne far a bheil tmpfs air a chruthachadh. A bharrachd air an sin, tha na meadhanan corporra nas buailtiche a bhith gan caitheamh nuair a thèid an sgrìobhadh thairis na cuimhne. Mu dheireadh, faodaidh fiosrachadh mothachail a bhith ann am faidhlichean ann an / tmp, agus mar sin tha e riatanach a bhith gan toirt à sealladh air gach ath-thòiseachadh.

Gu mì-fhortanach, bidh cuid de sgriobtaichean stàlaidh cuairteachaidh Linux a’ cruthachadh / tmp air an inneal stòraidh gu bunaiteach. Na gabh eu-dòchas nan tachradh seo don t-siostam agad cuideachd. Lean beagan stiùiridhean sìmplidh le Arch Wikigus seo a chàradh, agus a bhith mothachail gu bheil an cuimhne a chaidh a shònrachadh airson tmpfs nach eil e ri fhaighinn airson adhbharan eile. Ann am faclan eile, faodaidh siostam le tmpfs mòr agus faidhlichean mòra air ruith a-mach à cuimhne agus tubaist. Sanas eile: fhad ‘s a tha thu a’ deasachadh faidhle /etc/fstab, cuimhnich gum feum e crìochnachadh le loidhne ùr, air neo cha tòisich an siostam agad.

/proc agus /sys

A bharrachd air sin /tmp, Is e VFS (siostaman faidhle brìgheil) a tha nas eòlaiche do luchd-cleachdaidh Linux /proc и /sys. (/dev a’ fuireach ann an cuimhne roinnte agus chan eil file_operations). Carson a tha an dà phàirt seo? Feuch gun coimhead sinn ris a 'chùis seo.

procfs a’ cruthachadh dealbh den kernel agus na pròiseasan air am bi e a’ cumail sùil userspace. Tha a ' /proc bidh an kernel a’ clò-bhualadh fiosrachadh mu na tha ri fhaighinn, leithid brisidhean, cuimhne bhrìgheil, agus an clàr-ama. A bharrachd air sin, /proc/sys is e seo an t-àite far a bheil na paramadairean air an rèiteachadh leis an àithne sysctl, ri fhaighinn airson userspace. Tha inbhe agus staitistig phròiseasan fa leth air an taisbeanadh ann an clàran /proc/.

Siostaman faidhle mas-fhìor ann an Linux: carson a tha feum orra agus ciamar a tha iad ag obair? Pàirt 1

tha e /proc/meminfo na fhaidhle falamh anns a bheil fiosrachadh luachmhor ge-tà.

Giùlan /proc tha faidhlichean a’ sealltainn mar as urrainn do shiostaman faidhle diosc VFS a bhith. Air aon taobh, /proc/meminfo tha fiosrachadh ann a dh'fhaodar fhaicinn leis an àithne free. Air an làimh eile, tha e falamh! Ciamar a tha e ag obair? Tha an suidheachadh mar chuimhneachan air an artaigil ainmeil leis an tiotal A bheil a’ ghealach ann nuair nach eil duine a’ coimhead oirre? Reality agus Quantum Theory"sgrìobhte le àrd-ollamh fiosaig Oilthigh Cornell David Mermin ann an 1985. Is e an fhìrinn gu bheil an kernel a’ cruinneachadh staitistig cuimhne nuair a thèid iarrtas a dhèanamh /proc, agus gu dearbh ann am faidhlichean /proc chan eil dad ann nuair nach eil duine a’ coimhead. Mar a thuirt Meirgein, "Tha teagasg bunaiteach quantum ag ràdh nach eil tomhas san fharsaingeachd a 'nochdadh luach a th' ann mar-thà den togalach a thathar a 'tomhas." (Agus beachdaich air a’ cheist mun ghealach mar obair-dachaigh!)
A 'coimhead falamh procfs a’ dèanamh ciall leis gu bheil am fiosrachadh an sin fiùghantach. Suidheachadh beagan eadar-dhealaichte le sysfs. Dèanamaid coimeas eadar cia mheud faidhle anns a bheil co-dhiù aon byte ann am meud /proc agus a-staigh /sys.

Siostaman faidhle mas-fhìor ann an Linux: carson a tha feum orra agus ciamar a tha iad ag obair? Pàirt 1

Procfs aig a bheil aon fhaidhle, is e sin an rèiteachadh kernel às-mhalairt, rud a tha na eisgeachd leis nach fheum e a bhith air a chruthachadh ach aon turas gach bròg. Air an làimh eile, a-steach /sys tha tòrr fhaidhlichean nas motha ann, agus bidh mòran dhiubh a' gabhail suas duilleag slàn de chuimhne. Mar as trice faidhlichean sysfs bi dìreach aon àireamh no loidhne ann, eu-coltach ri clàran fiosrachaidh a gheibhear bho bhith a’ leughadh fhaidhlichean leithid /proc/meminfo.

Amas sysfs - thoir seachad feartan leughaidh / sgrìobhaidh de na tha an kernel ag iarraidh «kobjects» ann an àite luchd-cleachdaidh. An aon amas kobjects is link counting: nuair a thèid an ceangal mu dheireadh gu kobject a thoirt air falbh, bheir an siostam air ais na goireasan co-cheangailte ris. A dh'aindeoin sin, /sys a 'dèanamh suas a' mhòr-chuid de na daoine ainmeil "ABI seasmhach airson àite luchd-cleachdaidh" cridhe, nach urrainn duine sam bith a chaoidh, fo chor sam bith "briseadh". Chan eil seo a’ ciallachadh gu bheil faidhlichean ann an sysfs statach, rud a bhiodh neo-chunbhalach le cunntas iomraidh de nithean neo-sheasmhach.
Tha ABI seasmhach an kernel a’ cuingealachadh na dh’ fhaodadh nochdadh ann /sys, chan e na tha an làthair aig an àm shònraichte sin. Le bhith a’ liostadh ceadan faidhle ann an sysfs tha sealladh air mar a ghabhas rèiteachaidhean a rèiteachadh airson innealan, modalan, siostaman faidhle, msaa. faodar a rèiteachadh no a leughadh. Is e an co-dhùnadh loidsigeach gu bheil procfs cuideachd mar phàirt de ABI seasmhach an kernel, ged nach eil seo air a ràdh gu soilleir ann an sgrìobhainnean.

Siostaman faidhle mas-fhìor ann an Linux: carson a tha feum orra agus ciamar a tha iad ag obair? Pàirt 1

Faidhlichean a-steach sysfs thoir cunntas air aon sheilbh sònraichte airson gach eintiteas agus faodar a leughadh, a sgrìobhadh, no an dà chuid. Tha “0” san fhaidhle a’ ciallachadh nach gabh an SSD a thoirt air falbh.

Nach tòisich sinn air an dàrna pàirt den eadar-theangachadh le mar a chumas tu sùil air VFS a’ cleachdadh na h-innealan eBPF agus bcc, agus a-nis tha sinn a’ feitheamh ri do bheachdan agus gu traidiseanta a’ toirt cuireadh dhut webinar fosgailte, a thèid a chumail leis an tidsear againn air 9 Giblean - Vladimir Drozdetsky.

Source: www.habr.com

Cuir beachd ann