Hi kollha! Inkomplu nniedu streams ġodda għall-korsijiet li diġà tħobbhom u issa aħna mgħaġġlin inħabbru li qed nibdew sett ġdid ta’ korsijiet
Sistemi ta 'fajls virtwali jservu bħala tip ta' astrazzjoni maġika li tippermetti lill-filosofija tal-Linux tgħid li "kollox huwa fajl."
X'inhi sistema ta' fajls? Ibbażat fuq il-kliem ta 'wieħed mill-ewwel kontributuri u awturi ta' Linux
Bażi tas-sistema tal-fajls
Il-kernel tal-Linux għandu ċerti rekwiżiti għal entità li tista 'titqies bħala sistema ta' fajls. Għandu jimplimenta l-metodi open()
, read()
и write()
għal oġġetti persistenti li għandhom ismijiet. Minn perspettiva orjentata lejn l-oġġetti
Jekk nistgħu niftħu, naqraw u niktbu lil entità, allura dik l-entità titqies bħala fajl, kif nistgħu naraw mill-eżempju fil-console hawn fuq.
Il-fenomenu VFS jenfasizza biss l-osservazzjoni bħal Unix li "kollox huwa fajl". Aħseb kemm stramb li dak l-eżempju żgħir /dev/console hawn fuq juri kif il-console fil-fatt taħdem. L-istampa turi sessjoni Bash interattiva. Li tibgħat string lill-console (apparat tal-console virtwali) juriha fuq skrin virtwali. Il-VFS għandu proprjetajiet oħra, saħansitra barranin. Pereżempju, jippermettilek tfittex minn
Sistemi familjari bħal ext4, NFS, u / proc għandhom tliet funzjonijiet importanti fi struttura tad-dejta C imsejħa read()
sistema ta 'fajls waħda u mbagħad uża l-metodu write ()
sistema oħra ta 'fajls għall-output tad-data.
Id-definizzjonijiet tal-funzjoni li jappartjenu għat-tipi bażi VFS huma fil-fajls fs/
fihom ċerti sistemi ta’ fajls. Il-qalba fiha wkoll entitajiet bħal cgroups
, /dev
и tmpfs
, li huma meħtieġa matul il-proċess tal-ibbutjar u għalhekk huma definiti fis-subdirettorju tal-kernel init/
. Avviż li cgroups
, /dev
и tmpfs
issejjaħx il-funzjonijiet "tlieta kbar". file_operations
, iżda direttament aqra u tikteb fil-memorja.
Id-dijagramma t'hawn taħt turi kif l-ispazju tal-utent jaċċessa t-tipi differenti ta 'sistemi ta' fajls komunement mmuntati fuq sistemi Linux. Strutturi mhux murija pipes
, dmesg
и POSIX clocks
, li jimplimentaw ukoll l-istruttura file_operations
, aċċessata permezz tas-saff VFS.
VFS huwa "wrapper saff" bejn is-sejħiet tas-sistema u l-implimentazzjonijiet ta 'ċerti file_operations
bħal ext4
и procfs
. Funzjonijiet file_operations
jistgħu jinteraġixxu jew ma 'sewwieqa ta' apparat jew tagħmir ta 'aċċess għall-memorja. tmpfs
, devtmpfs
и cgroups
tużax file_operations
, iżda aċċess direttament għall-memorja.
L-eżistenza ta' VFS tipprovdi opportunità biex jerġa' jintuża l-kodiċi, peress li l-metodi bażiċi assoċjati mas-sistemi ta' fajls m'għandhomx għalfejn jerġgħu jiġu implimentati minn kull tip ta' sistema ta' fajls. L-użu mill-ġdid tal-kodiċi huwa prattika komuni fost l-inġiniera tas-softwer! Madankollu, jekk il-kodiċi li jista 'jerġa' jintuża fih
/tmp: Ħjiel sempliċi
Mod faċli biex tiskopri li VFS huma preżenti fuq sistema huwa li tittajpja mount | grep -v sd | grep -v :/
, li se turi kollha mmuntati (mounted
) sistemi ta' fajls li mhumiex residenti fid-disk u mhux NFS, li huwa minnu fil-biċċa l-kbira tal-kompjuters. Wieħed mill-muntaturi elenkati (mounts
) VFS bla dubju se /tmp
, hux?
Kulħadd jaf dak il-ħażna / tmp
fuq mezz fiżiku - ġenn!
Għaliex mhux mixtieq li tinħażen /tmp
fuq il-midja fiżika? Minħabba li l-fajls fil /tmp
huma temporanji u l-apparati tal-ħażna huma aktar bil-mod mill-memorja fejn tinħoloq tmpfs. Barra minn hekk, il-midja fiżika hija aktar suxxettibbli li tintlibes meta tinkiteb mill-ġdid mill-memorja. Fl-aħħarnett, fajls f'/tmp jista 'jkun fihom informazzjoni sensittiva, għalhekk li jagħmluhom jisparixxu f'kull reboot hija karatteristika essenzjali.
Sfortunatament, xi skripts ta 'installazzjoni tad-distribuzzjoni Linux joħolqu /tmp fuq l-apparat tal-ħażna b'mod awtomatiku. Taqtax qalbek jekk dan ġara lis-sistema tiegħek ukoll. Segwi ftit istruzzjonijiet sempliċi ma tmpfs
isir mhux disponibbli għal skopijiet oħra. Fi kliem ieħor, sistema b'tmpfs ġgant u fajls kbar fuqha tista' tispiċċa mingħajr memorja u tiġġarraf. Ħjiel ieħor: waqt li teditja fajl /etc/fstab
, ftakar li trid tispiċċa b'linja ġdida, inkella s-sistema tiegħek ma tibbotjax.
/proc u /sys
Minbarra /tmp
, VFS (sistemi ta 'fajls virtwali) li huma l-aktar familjari għall-utenti Linux huma /proc
и /sys
. (/dev
jirrisjedi f'memorja kondiviża u m'għandux file_operations
). Għaliex dawn iż-żewġ komponenti? Ejja nħarsu lejn din il-kwistjoni.
procfs
joħloq stampa tal-qalba u l-proċessi li jimmonitorja għalihom userspace
. Fil /proc
il-kernel jistampa informazzjoni dwar dak li għandu disponibbli, bħal interruzzjonijiet, memorja virtwali, u l-iskedar. Barra minn hekk, /proc/sys
huwa l-post fejn il-parametri kkonfigurati bil-kmand sysctl
, disponibbli għal userspace
. L-istatus u l-istatistika tal-proċessi individwali jintwerew fid-direttorji /proc/
.
Hawnhekk /proc/meminfo
huwa fajl vojt li madankollu fih informazzjoni siewja.
Imġieba /proc
fajls juri kemm is-sistemi tal-fajls tad-disk VFS jistgħu jkunu differenti. Fuq naħa waħda, /proc/meminfo
ikun fihom informazzjoni li tista’ tara mal-kmand free
. Min-naħa l-oħra, huwa vojt! Kif taħdem? Is-sitwazzjoni hija reminixxenti tal-artiklu famuż intitolat /proc
, u fil-fatt fil-fajls /proc
m'hemm xejn meta ħadd ma jkun qed iħares. Kif intqal
Jidher vojt procfs
jagħmel sens għaliex l-informazzjoni hemm hija dinamika. Sitwazzjoni kemmxejn differenti ma sysfs
. Ejja nqabblu kemm hemm fajls li għandhom daqs mill-inqas byte wieħed /proc
u /sys
.
Procfs
għandu fajl wieħed, jiġifieri l-konfigurazzjoni tal-qalba esportata, li hija eċċezzjoni għaliex jeħtieġ li tiġi ġġenerata biss darba għal kull boot. Min-naħa l-oħra, fil /sys
hemm ħafna fajls akbar, li ħafna minnhom jieħdu paġna sħiħa tal-memorja. Normalment fajls sysfs
fihom eżattament numru jew linja waħda, b'differenza tabelli ta 'informazzjoni miksuba mill-qari ta' fajls bħal /proc/meminfo
.
Goal sysfs
- jipprovdu proprjetajiet ta 'qari/kitba ta' dak li jsejjaħ il-kernel «kobjects»
fl-ispazju tal-utent. L-uniku għan kobjects
huwa l-għadd tal-links: meta titneħħa l-aħħar link għal kobject, is-sistema tirrestawra r-riżorsi assoċjati magħha. Madankollu, /sys
jagħmel ħafna mill-famużi
L-ABI stabbli tal-qalba jillimita dak li jista' jidher fih /sys
, mhux dak li huwa attwalment preżenti f'dak il-mument partikolari. L-elenkar tal-permessi tal-fajls fis-sysfs jipprovdi għarfien dwar kif is-settings konfigurabbli għal apparati, moduli, sistemi ta 'fajls, eċċ. jistgħu jiġu kkonfigurati jew jinqraw. Il-konklużjoni loġika hija li procfs hija wkoll parti mill-ABI stabbli tal-qalba, għalkemm dan mhux iddikjarat b'mod espliċitu f'
Fajls fil sysfs
iddeskrivi proprjetà partikolari waħda għal kull entità u tista’ tinqara, tinkiteb, jew it-tnejn. "0" fil-fajl ifisser li l-SSD ma jistax jitneħħa.
Ejja nibdew it-tieni parti tat-traduzzjoni b'kif timmonitorja l-VFS billi tuża l-għodod eBPF u bcc, u issa qed nistennew il-kummenti tiegħek u tradizzjonalment nistiednuk biex
Sors: www.habr.com