Nga punaha konae mariko i Linux: he aha te take me pehea te mahi? Wāhanga 1

Kia ora katoa! Kei te whakarewa tonu matou i nga rerenga hou mo nga akoranga kua arohaina e koe, inaianei kei te tere matou ki te panui kei te timata matou i tetahi huinga akoranga hou. "Kaiwhakahaere Linux"ka whakarewahia hei te mutunga o Paenga-whawha. Ka tuhia he panui hou mo tenei huihuinga. Ma te rauemi taketake, ka taea e koe panuihia i konei.

Ko nga punaha konae mariko he momo tangohanga makutu e taea ai e te whakaaro o Linux te kii "he konae nga mea katoa."

Nga punaha konae mariko i Linux: he aha te take me pehea te mahi? Wāhanga 1

He aha te punaha konae? I runga i nga kupu a tetahi o nga kaikoha tuatahi me nga kaituhi o Linux Roberta Rawa, "Ko te punaha konae he rokiroki aroākapa o nga raraunga kua whakaemihia e ai ki tetahi hanganga motuhake." Heoi ano, he rite tonu tenei whakamaramatanga ki te VFAT (Virtual File Allocation Ripanga), Git me Cassandra (NoSQL pātengi raraunga). Na he aha te mea e whakaatu ana i taua mea hei "pūnaha kōnae"?

Nga Taketake o te punaha konae

Kei te kernel Linux etahi whakaritenga mo tetahi hinonga ka kiia he punaha konae. Me whakatinana i nga tikanga open(), read() и write() mo nga mea tohe e whai ingoa ana. Mai i te tirohanga ahanoa whakamahere, ka tautuhia e te kernel he punaha konae whanui hei atanga waitara, a ko enei mahi nui e toru ka kiia he "mariko" kaore he whakamaarama raima. Na reira, ko te whakatinanatanga o te punaha konae taunoa ka kiia he punaha konae mariko (VFS).

Nga punaha konae mariko i Linux: he aha te take me pehea te mahi? Wāhanga 1

Mena ka taea e tatou te whakatuwhera, te panui me te tuhi ki tetahi hinonga, ka kiia taua hinonga he konae, ka kitea mai i te tauira o te papatohu i runga ake nei.
Ko te ahuatanga o te VFS e whakaatu noa ana i te tirohanga rite Unix "he konae nga mea katoa". Whakaarohia he aha te ahua o te tauira iti /dev/console i runga ake nei e whakaatu ana me pehea te mahi a te papatohu. Ko te pikitia e whakaatu ana i tetahi huihuinga Bash tauwhitiwhiti. Ko te tuku aho ki te papatohu (te taputapu papatohu mariko) ka whakaatu i runga i te mata mariko. Kei a VFS etahi atu, tae noa ki nga taonga ke. Hei tauira, ka taea e koe te rapu ma te ia.

Ko nga punaha mohio penei i te ext4, NFS, me /proc e toru nga mahi nui i roto i te hanganga raraunga C e kiia nei. kōnae_mahi. I tua atu, ko etahi o nga punaha konae ka whakawhānui me te tautuhi ano i nga mahi a VFS i runga i te ahua o te ahanoa. E ai ki a Robert Love, ko te tangohanga VFS ka taea e nga kaiwhakamahi Linux te kape i nga konae mai i nga punaha whakahaere tuatoru me nga hinonga waitara penei i nga paipa me te kore e awangawanga mo o raatau whakatakotoranga raraunga o roto. I te taha kaiwhakamahi (kaiwhakamahi), ma te whakamahi i te waea punaha, ka taea e tetahi tukanga te kape mai i te konae ki nga hanganga raraunga kernel ma te whakamahi i te tikanga read() kotahi te punaha konae katahi ka whakamahi i te tikanga write () tetahi atu punaha konae mo te whakaputanga raraunga.

Ko nga whakamaramatanga mahi no nga momo turanga VFS kei roto i nga konae fs/*.c waehere puna kernel, i te mea ko nga raarangiroto fs/ kei roto etahi punaha konae. Kei roto ano i te matua nga hinonga penei cgroups, /dev и tmpfs, e hiahiatia ana i te wa o te mahi whawhai, na reira kua tautuhia i roto i te raarangi-roto o te kernel init/. A tapao na cgroups, /dev и tmpfs kaua e kiia nga mahi "toru nui". file_operations, engari tika te panui me te tuhi ki te mahara.
Ko te hoahoa i raro nei e whakaatu ana me pehea te uru o te mokowākaiwhakamahi ki nga momo punaha konae e mau ana i runga i nga punaha Linux. Ko nga hanganga kaore i whakaatuhia pipes, dmesg и POSIX clocks, e whakatinana ana hoki i te hanganga file_operations, ka uru atu ma te paparanga VFS.

Nga punaha konae mariko i Linux: he aha te take me pehea te mahi? Wāhanga 1

Ko te VFS he "paparanga takai" i waenga i nga waea punaha me nga whakatinanatanga o etahi file_operations, penei ext4 и procfs. Nga Mahi file_operations Ka taea te taunekeneke ki nga taraiwa taputapu, ki nga taputapu uru mahara ranei. tmpfs, devtmpfs и cgroups kaua e whakamahia file_operations, engari uru tika ki te mahara.
Ko te noho o te VFS he whai waahi ki te whakamahi ano i te waehere, na te mea ko nga tikanga taketake e pa ana ki nga punaha konae kaore e tika kia whakatinanahia e ia momo punaha konae. Ko te whakamahi ano i te waehere he mahi noa i waenga i nga miihini rorohiko! Heoi, mena kei roto i te waehere ka taea te whakamahi nga hapa nui, ko nga whakatinanatanga katoa e tuku ana i nga tikanga noa ka mamae mai i a raatau.

/tmp: He tohu ngawari

Ko te huarahi ngawari ki te mohio kei te noho a VFS i runga i tetahi punaha ko te pato mount | grep -v sd | grep -v :/, ka whakaatu i nga mea katoa e mau ana (mounted) nga punaha konae ehara i te noho-kopae me te kore-NFS, he pono ki te nuinga o nga rorohiko. Ko tetahi o nga rarangi kua tohua (mounts) Ka kore e ruarua te VFS /tmp, tika?

Nga punaha konae mariko i Linux: he aha te take me pehea te mahi? Wāhanga 1

E mohio ana te katoa ki taua rokiroki / tmp i runga i te reo tinana - te haurangi! Puna.

He aha i kore ai e pai ki te penapena /tmp i runga i te pāpāho tinana? No te mea ko nga konae kei roto /tmp he rangitahi me nga taputapu rokiroki he puhoi ake i te mahara i hangaia ai nga tmpfs. I tua atu, he pai ake te kakahu o te hunga pāpāho tinana i te tuhirua i te mahara. Ka mutu, kei roto i nga konae /tmp nga korero tairongo, no reira he mea tino nui kia ngaro atu i ia whakaara ano.

Heoi ano, ko etahi o nga tuhinga whakaurunga tohatoha Linux ka waihanga /tmp i runga i te taputapu rokiroki ma te taunoa. Kaua e pouri mena kua pa tenei ki to punaha. Whaia etahi tohutohu ngawari me te Ariki Wikiki te whakatika i tenei, kia mohio koe kua tohatohahia te mahara mo tmpfs ka kore e waatea mo etahi atu kaupapa. I etahi atu kupu, ko te punaha me nga tmpfs nui me nga konae nui kei runga ka ngaro te mahara me te pakaru. Ko tetahi atu tohu: i te wa e whakatika ana i tetahi konae /etc/fstab, maharahia me mutu ki te raina hou, mena ka kore to punaha e pupuhi.

/proc me /sys

haunga /tmp, VFS (pūnaha kōnae mariko) e tino waia ana ki nga kaiwhakamahi Linux /proc и /sys. (/dev noho i roto i te mahara tahi me te kore e whai file_operations). He aha enei waahanga e rua? Kia titiro tatou ki tenei take.

procfs ka hanga he whakaahua o te kakano me nga tukanga e tirotirohia ana e ia userspace. Ko te /proc ka taia e te kernel nga korero mo nga mea e waatea ana, penei i te haukoti, te mahara mariko, me te kaihōtaka. I tua atu, /proc/sys Ko te waahi i whirihorahia ai nga tawhā me te whakahau sysctl, wātea mo userspace. Ko te mana me nga tatauranga o nga tukanga takitahi ka whakaatuhia ki nga raarangi /proc/.

Nga punaha konae mariko i Linux: he aha te take me pehea te mahi? Wāhanga 1

ko te reira /proc/meminfo he konae putua kei roto tonu nga korero nui.

Te whanonga /proc Ko nga konae e whakaatu ana he pehea te rereke o nga punaha konae kōpae VFS. I tetahi taha, /proc/meminfo kei roto nga korero ka taea te tiro me te whakahau free. I tetahi atu taha, he kau! Me pehea te mahi? Kei te maumahara te ahuatanga ki te tuhinga rongonui i tapaina Kei te noho tonu te marama karekau he tangata e titiro ana? Te Tikanga me te Tikanga Quantum"i tuhia e te ahorangi ahupūngao o te Whare Wananga o Cornell a David Mermin i te tau 1985. Ko te meka ka kohia e te kernel nga tatauranga mahara ka tukuna he tono ki /proc, me te tino kei roto i nga konae /proc kare he mea karekau he titiro. Ka rite ki te korero Mermin, "E kii ana te maataki quantum taketake ko te inenga i te nuinga o te waa kaore e kitea he uara o mua o te taonga e ine ana." (A whakaarohia te patai mo te marama hei mahi kainga!)
Te ahua korekore procfs ka whai tikanga na te mea he hihiri nga korero kei reira. He ahuatanga paku rereke me sysfs. Kia whakatauritea te maha o nga konae kei roto i te kotahi paita te rahi /proc Tuhinga o mua /sys.

Nga punaha konae mariko i Linux: he aha te take me pehea te mahi? Wāhanga 1

Procfs he kotahi te konae, ara ko te whirihoranga kernel i kaweake, he mea kee na te mea me hanga kotahi noa mo ia peera. I tetahi atu ringa, i roto i /sys he maha nga konae nui ake, he maha nga waahanga ka mau i te wharangi mahara. Ko te tikanga ko nga konae sysfs kotahi tonu te nama, rarangi ranei, kaore i rite ki nga ripanga korero i whiwhi mai i nga konae panui penei i te /proc/meminfo.

Whāinga sysfs - whakarato i nga ahuatanga panui/tuhi o ta te kernel e karanga ana «kobjects» i roto i te mokowāmahi. Ko te whainga anake kobjects kei te tatau hono: ina tangohia te hono whakamutunga ki tetahi kobject, ka whakahokia e te punaha nga rauemi e hono ana ki a ia. Heoi ano, /sys hanga ake te nuinga o te rongonui "ABI pumau mo te mokowāmahi" matua, e kore e taea e tetahi, ahakoa nga ahuatanga "pakaru". Ehara i te mea ko nga konae kei roto i nga sysfs he pateko, kare e rite ki te tatau tohutoro o nga mea kore.
Ko te ABI pumau o te kernel ka whakawhāiti i ngā mea ka puta ki roto /sys, ehara i te mea e mau ana i tera wa. Ko te raarangi whakaaetanga konae i roto i te sysfs he maarama me pehea te whirihora i nga tautuhinga mo nga taputapu, nga waahanga, nga punaha konae, aha atu. ka taea te whirihora, te panui ranei. Ko te whakatau arorau ko nga procfs tetahi waahanga o te ABI pumau o te kernel, ahakoa kaore i te tino korerohia i roto tuhinga.

Nga punaha konae mariko i Linux: he aha te take me pehea te mahi? Wāhanga 1

Kōnae kei roto sysfs whakaahuahia tetahi taonga motuhake mo ia hinonga ka taea te panui, te tuhi, te rua ranei. "0" i roto i te konae te tikanga kaore e taea te tango i te SSD.

Me timata te waahanga tuarua o te whakamaori me pehea te aro turuki i te VFS ma te whakamahi i nga taputapu eBPF me te bcc, a inaianei kei te tatari matou mo o korero me te tono mai i a koe kia webinar tuwhera, ka whakahaerehia e to matou kaiako hei te 9 o Aperira - Vladimir Drozdetsky.

Source: will.com

Tāpiri i te kōrero