Virtual faira masisitimu muLinux: nei ichidikanwa uye inoshanda sei? Chikamu 1

Mhoroi mose! Tirikuenderera mberi nekuparura mitsva yezvidzidzo zvawakatofarira uye ikozvino tiri mushishi kuzivisa kuti tiri kutanga seti itsva yezvidzidzo. "Linux Administrator"iyo ichatanga kupera kwaApril. Chinyorwa chitsva chichanyorwa chechiitiko ichi. Nezvinyorwa zvepakutanga, unogona verenga pano.

Virtual faira masisitimu anoshanda semhando yemashiripiti abstraction inobvumira huzivi hweLinux kutaura kuti "zvese ifaira."

Virtual faira masisitimu muLinux: nei ichidikanwa uye inoshanda sei? Chikamu 1

Chii chinonzi faira system? Kubva pamashoko emumwe wekutanga kupa uye vanyori veLinux Roberta Lava, "A file system ndiyo hierarchical storage data yakaunganidzwa maererano nechimiro chakati." Ngazvive izvo, tsananguro iyi yakanyatsokodzera VFAT (Virtual File Allocation Table), Git uye. Cassandra (NoSQL database) Saka chii chinonyatso tsanangura chinhu chakadai se "faira system"?

Filesystem Basics

Iyo Linux kernel ine zvimwe zvinodiwa kune chimwe chinhu chinogona kutorwa sefaira system. Inofanira kushandisa nzira open(), read() ΠΈ write() kuzvinhu zvinoramba zviripo zvine mazita. Kubva pakuona kwechinhu programming, iyo kernel inotsanangura generic faira system seabstract interface, uye aya matatu makuru mabasa anoonekwa se "virtual" uye haana kongiri tsanangudzo. Saizvozvo, iyo yakasarudzika faira system yekumisikidza inonzi virtual file system (VFS).

Virtual faira masisitimu muLinux: nei ichidikanwa uye inoshanda sei? Chikamu 1

Kana isu tikakwanisa kuvhura, kuverenga, uye kunyora kune chimwe chinhu, saka icho chinotaridzirwa sefaira, sezvatinoona kubva mumuenzaniso mune iyo console iri pamusoro.
Chiitiko cheVFS chinongosimbisa iyo Unix-yakafanana nekutarisa kuti "zvese ifaira". Funga kuti zvinoshamisa sei kuti iyo diki /dev/console muenzaniso iri pamusoro inoratidza kuti iyo koni inoshanda sei. Mufananidzo unoratidza musangano weBash unopindirana. Kutumira tambo kune koni (virtual console mudziyo) inoiratidza pane chaiyo skrini. VFS ine zvimwe, kunyange zvisingazivikanwe zvivakwa. Semuenzaniso, inokubvumira kutsvaga ne iye.

Masisitimu anojairika akadai se ext4, NFS, uye/proc ane mabasa matatu akakosha muC data structure inonzi file_operations. Pamusoro pezvo, mamwe masisitimu efaira anowedzera uye anotsanangudza mashandiro eVFS nenzira yakajairika yakatarisana nechinhu. Sezvinoratidzwa naRobert Love, kubviswa kweVFS kunobvumira vashandisi veLinux kukopa mafaera kune kana kubva kune yechitatu bato masisitimu anoshanda kana abstract masangano semapombi pasina kunetseka nezve yavo yemukati data fomati. Padivi remushandisi (userspace), uchishandisa system yekufona, maitiro anogona kukopa kubva pafaira kuenda kune kernel data zvimiro uchishandisa nzira. read() imwe faira system uye wobva washandisa nzira write () imwe faira system yekuburitsa data.

Tsanangudzo dzebasa dziri dzemhando dzeVFS dziri mumafaira fs/*.c kernel source code, nepo subdirectories fs/ ine mamwe mafaera masisitimu. The core zvakare ine masangano akadai cgroups, /dev ΠΈ tmpfs, iyo inodiwa panguva yebhoti process uye saka inotsanangurwa mu kernel subdirectory init/. Cherechedzai izvozvo cgroups, /dev ΠΈ tmpfs usadaidze "makuru matatu" mabasa file_operations, asi verenga nokunyora zvakananga nomusoro.
Dhiagiramu iri pazasi inoratidza kuti mushandisi nzvimbo inosvika sei mhando dzakasiyana dzemafaira anowanzo kuisirwa paLinux masisitimu. Zvimiro zvisina kuratidzwa pipes, dmesg ΠΈ POSIX clocks, iyo inoshandisawo chimiro file_operations, inowanikwa kuburikidza neVFS layer.

Virtual faira masisitimu muLinux: nei ichidikanwa uye inoshanda sei? Chikamu 1

VFS i "wrapper layer" pakati pekufona kwesystem uye kuita kwezvimwe file_operationsse ext4 ΠΈ procfs. Mabasa file_operations inogona kupindirana nechero madhiraivha emudziyo kana ndangariro yekuwana zvishandiso. tmpfs, devtmpfs ΠΈ cgroups usashandise file_operations, asi pinda mundangariro zvakananga.
Kuvepo kweVFS kunopa kugona kushandisazve kodhi, sezvo nzira dzekutanga dzakabatana nemafaira masisitimu hazvifanirwe kuitwa zvakare nemhando yega yega yefaira system. Kushandisazve kodhi chinhu chakajairika pakati peinjiniya dzesoftware! Nekudaro, kana iyo reusable kodhi ine zvikanganiso zvakakomba, zvese zvinoshandiswa zvinogara nhaka nzira dzakafanana zvinotambura nazvo.

/tmp: Ratidza nyore

Nzira iri nyore yekuona kuti VFS iripo pane system ndeyekunyora mount | grep -v sd | grep -v :/, iyo inoratidza zvese zvakaiswa (mounted) mafaera asina dhisiki-anogara uye asiri-NFS, chiri chokwadi pamakomputa mazhinji. Imwe yezvinyorwa zvakanyorwa (mounts) VFS ichaita pasina mubvunzo /tmp, rudyi?

Virtual faira masisitimu muLinux: nei ichidikanwa uye inoshanda sei? Chikamu 1

Munhu wose anoziva kuchengetedza ikoko / tmp pachimiro chemuviri - kupenga! Chinhu.

Sei zvisina kunaka kuchengeta /tmp pama media media? Nekuti mafaera ari mukati /tmp ndezvenguva pfupi uye midziyo yekuchengetedza inononoka kupfuura ndangariro uko tmpfs inogadzirwa. Uyezve, midhiya yemuviri inonyanya kupfekwa kana yanyorwa kupfuura ndangariro. Chekupedzisira, mafaera ari mu/tmp anogona kuve neruzivo rwakadzama, saka kuita kuti anyangarika pane yega reboot chinhu chakakosha.

Nehurombo, mamwe maLinux kugovera ekuisa zvinyorwa zvinogadzira /tmp pane yekuchengetera mudziyo nekusarudzika. Usaora mwoyo kana izvi zvikaitika kune yako system zvakare. Tevera mirairo mishoma iri nyore ne ArchWikikugadzirisa izvi, uye ziva kuti ndangariro yakagoverwa tmpfs inova isingawanikwe kune zvimwe zvinangwa. Mune mamwe mazwi, hurongwa hune hofori tmpfs uye mafaira makuru pairi anogona kupera mundangariro uye kuparara. Imwe zano: paunenge uchigadzirisa faira /etc/fstab, yeuka kuti inofanira kupera nemutsara mutsva, zvikasadaro system yako haizobhutsu.

/proc uye /sys

Kunze kwezvo /tmp, VFS (virtual file systems) dzinonyanyozivikanwa nevashandisi veLinux ndizvo /proc ΠΈ /sys. (/dev inogara mundangariro yakagovaniswa uye haina file_operations) Sei zvikamu zviviri izvi? Ngatitarisei munyaya iyi.

procfs inogadzira mufananidzo we kernel uye maitiro ainocherekedza userspace. The /proc iyo kernel inodhinda ruzivo pamusoro pezvainazvo, sekuvhiringidza, virtual memory, uye scheduler. Uyezve, /proc/sys ndiyo nzvimbo iyo parameter yakagadziriswa nemirairo sysctl, inowanika userspace. Mamiriro uye nhamba dzemaitiro ega ega anoratidzwa mumadhairekitori /proc/.

Virtual faira masisitimu muLinux: nei ichidikanwa uye inoshanda sei? Chikamu 1

zviri /proc/meminfo ifaira risina chinhu rine ruzivo rwakakosha.

Maitiro /proc mafaira anoratidza kuti VFS disk faira masisitimu angave akasiyana sei. Kune rimwe divi, /proc/meminfo ine ruzivo rwunogona kutariswa nemurairo free. Ukuwo, haina chinhu! Chinoshanda sei? Mamiriro acho ezvinhu anoyeuchidza nezvechinyorwa chakakurumbira chine musoro Mwedzi uripo pasina ari kuutarisa here? Chokwadi uye Quantum Theory"yakanyorwa naCornell University purofesa wefizikisi David Mermin muna 1985. Icho chokwadi ndechekuti kernel inounganidza ndangariro nhamba kana chikumbiro chaitwa /proc, uye chaizvo mumafaira /proc hapana kana chinhu kana pasina ari kutarisa. Sezvakataurwa Mermin, "Fundamental quantum doctrine inotaura kuti kuyerwa kazhinji hakuratidzi kukosha kwagara kuripo kwenzvimbo iri kuyerwa." (Uye funga mubvunzo pamusoro pemwedzi sebasa rechikoro!)
Kuita kunge pasina procfs zvine musoro nekuti mashoko aripo ane simba. Mamiriro akasiyana zvishoma ne sysfs. Ngatienzanise kuti mangani mafaera ane kanenge imwe byte muhukuru ari mukati /proc and in /sys.

Virtual faira masisitimu muLinux: nei ichidikanwa uye inoshanda sei? Chikamu 1

Procfs ine faira imwe chete, iyo inotengeswa kunze kernel configuration, iyo inopesana nokuti inongoda kugadzirwa kamwe chete pabhoti. Ukuwo, in /sys kune mafaera akawanda akakura, mazhinji acho anotora peji rese rendangariro. Kazhinji mafaira sysfs ine nhamba imwe chete kana mutsara, kusiyana nematafura eruzivo rwakawanikwa kubva mukuverenga mafaira akadai /proc/meminfo.

Chinangwa sysfs - ipa kuverenga / kunyora zvimiro zvezvinodaidzwa nekernel Β«kobjectsΒ» munzvimbo yekushandisa. Chinangwa chete kobjects ireferensi kuverenga: kana iyo yekupedzisira kunongedzera kune kobject yabviswa, sisitimu inodzoreredza zviwanikwa zvine chekuita nazvo. Zvakadaro, /sys inoita vazhinji vevakakurumbira "Stable ABI yenzvimbo yekushandisa" musimboti, izvo hapana angambokwanisa, chero mamiriro ezvinhu "break". Izvi hazvireve kuti mafaera ari musysfs ane static, izvo zvingave zvisingaenderane nereferenzi kuverenga kwezvinhu zvisina kugadzikana.
Iyo kernel's yakagadzikana ABI inomisa izvo zvinogona kuoneka mukati /sys, kwete izvo zvinenge zviripo panguva iyoyo chaiyo. Kunyora zvibvumirano zvefaira mu sysfs zvinopa ruzivo rwekuti zvinogadziriswa sei zvigadziriso zvemidziyo, mamodule, mafaera, nezvimwe. inogona kugadzirwa kana kuverengwa. Mhedziso ine musoro ndeyekuti procfs zvakare chikamu cheiyo kernel's yakagadzikana ABI, kunyangwe izvi zvisina kutaurwa zvakajeka mu. zvinyorwa.

Virtual faira masisitimu muLinux: nei ichidikanwa uye inoshanda sei? Chikamu 1

Mafaira ari mukati sysfs tsanangura chivakwa chimwe chechimwe nechimwe uye chinogona kuverengeka, kunyoreka, kana zvese. "0" mufaira zvinoreva kuti SSD haigone kubviswa.

Ngatitange chikamu chechipiri cheshanduro nemaitiro ekutarisa VFS uchishandisa eBPF uye bcc maturusi, uye ikozvino takamirira zvaunotaura uye netsika tinokukoka iwe vhura webinar, iyo ichaitwa nemudzidzisi wedu musi waApril 9 - Vladimir Drozdetsky.

Source: www.habr.com

Voeg