Hi almal! Ons gaan voort om nuwe strome bekend te stel vir die kursusse waarop jy reeds verlief geraak het en nou is ons haastig om aan te kondig dat ons 'n nuwe stel kursusse begin
Virtuele lêerstelsels dien as 'n soort magiese abstraksie wat die filosofie van Linux toelaat om te sê dat "alles 'n lêer is."
Wat is 'n lêerstelsel? Gebaseer op die woorde van een van die eerste bydraers en skrywers van Linux
Lêerstelsel basiese beginsels
Die Linux-kern het sekere vereistes vir 'n entiteit wat as 'n lêerstelsel beskou kan word. Dit moet die metodes implementeer open()
, read()
и write()
vir aanhoudende voorwerpe wat name het. Vanuit 'n objekgeoriënteerde oogpunt
As ons 'n entiteit kan oopmaak, lees en skryf, dan word daardie entiteit as 'n lêer beskou, soos ons kan sien uit die voorbeeld in die konsole hierbo.
Die VFS-verskynsel onderstreep net die Unix-agtige waarneming dat "alles 'n lêer is". Dink hoe vreemd dat daardie klein /dev/console-voorbeeld hierbo wys hoe die konsole eintlik werk. Die foto wys 'n interaktiewe Bash-sessie. Deur 'n string na die konsole (virtuele konsole-toestel) te stuur, word dit op 'n virtuele skerm vertoon. VFS het ander, selfs vreemder eienskappe. Dit laat jou byvoorbeeld toe om deur te soek
Bekende stelsels soos ext4, NFS en /proc het drie belangrike funksies in 'n C-datastruktuur genaamd read()
een lêerstelsel en gebruik dan die metode write ()
'n ander lêerstelsel vir data-uitvoer.
Die funksiedefinisies wat aan die basis VFS-tipes behoort, is in die lêers fs/
sekere lêerstelsels bevat. Die kern bevat ook entiteite soos cgroups
, /dev
и tmpfs
, wat tydens die selflaaiproses benodig word en dus in die kernsubgids gedefinieer word init/
. Neem waar dat cgroups
, /dev
и tmpfs
moenie die "groot drie" funksies noem nie file_operations
, maar direk lees en skryf na die geheue.
Die diagram hieronder wys hoe gebruikersruimte toegang verkry tot die verskillende tipes lêerstelsels wat algemeen op Linux-stelsels gemonteer word. Strukture nie getoon nie pipes
, dmesg
и POSIX clocks
, wat ook die struktuur implementeer file_operations
, verkry deur die VFS-laag.
VFS is 'n "wrapper laag" tussen stelsel oproepe en implementering van sekere file_operations
soos ext4
и procfs
. Funksies file_operations
kan interaksie hê met óf toestelbestuurders óf geheuetoegangstoestelle. tmpfs
, devtmpfs
и cgroups
Moenie gebruik nie file_operations
, maar direk toegang tot die geheue.
Die bestaan van VFS bied die vermoë om kode te hergebruik, aangesien die basiese metodes wat met lêerstelsels geassosieer word, nie deur elke tipe lêerstelsel hergeïmplementeer hoef te word nie. Kode hergebruik is 'n algemene praktyk onder sagteware-ingenieurs! As die herbruikbare kode egter bevat
/tmp: Eenvoudige wenk
'n Maklike manier om op te spoor dat VFS op 'n stelsel teenwoordig is, is om te tik mount | grep -v sd | grep -v :/
, wat alles gemonteer sal wys (mounted
) lêerstelsels wat nie skyf-inwoner en nie-NFS is, wat waar is op die meeste rekenaars. Een van die gelyste monterings (mounts
) VFS sal ongetwyfeld /tmp
, reg?
Almal ken daardie stoorplek / tmp
op 'n fisiese medium - waansin!
Hoekom is dit ongewens om te stoor /tmp
op fisiese media? Omdat die lêers in /tmp
is tydelik en stoortoestelle is stadiger as die geheue waar tmpfs geskep word. Daarbenewens is fisiese media meer geneig om slytasie te oorskryf as geheue. Laastens kan lêers in /tmp sensitiewe inligting bevat, so dit is 'n noodsaaklike kenmerk om hulle met elke herlaai te laat verdwyn.
Ongelukkig skep sommige Linux-verspreidingsinstallasieskrifte /tmp by verstek op die stoortoestel. Moenie moed verloor as dit ook met jou stelsel gebeur het nie. Volg 'n paar eenvoudige instruksies met tmpfs
onbeskikbaar word vir ander doeleindes. Met ander woorde, 'n stelsel met 'n reuse-tmpfs en groot lêers daarop kan sonder geheue opraak en ineenstort. Nog 'n wenk: terwyl 'n lêer redigeer /etc/fstab
, onthou dat dit met 'n nuwe reël moet eindig, anders sal jou stelsel nie selflaai nie.
/proc en /sys
Behalwe /tmp
, VFS (virtuele lêerstelsels) wat die meeste bekend is aan Linux-gebruikers is /proc
и /sys
. (/dev
woon in gedeelde geheue en het nie file_operations
). Hoekom hierdie twee komponente? Kom ons kyk na hierdie kwessie.
procfs
skep 'n momentopname van die kern en die prosesse waarvoor dit gemonitor word userspace
. In /proc
die kern druk inligting oor wat dit beskikbaar het, soos onderbrekings, virtuele geheue en die skeduleerder. Buitendien, /proc/sys
is die plek waar die parameters gekonfigureer is met die opdrag sysctl
, beskikbaar vir userspace
. Die status en statistieke van individuele prosesse word in gidse vertoon /proc/
.
Hier /proc/meminfo
is 'n leë lêer wat nietemin waardevolle inligting bevat.
gedrag /proc
lêers wys hoe verskillende VFS-skyflêerstelsels kan wees. Aan die een kant, /proc/meminfo
inligting bevat wat met die opdrag bekyk kan word free
. Aan die ander kant is dit leeg! Hoe werk dit? Die situasie herinner aan die bekende artikel getiteld /proc
, en eintlik in lêers /proc
daar is niks as niemand kyk nie. Soos gesê
Oënskynlike leegheid procfs
maak sin omdat die inligting daar dinamies is. N effens ander situasie met sysfs
. Kom ons vergelyk hoeveel lêers in is wat ten minste een greep groot is /proc
en /sys
.
Procfs
het een lêer, naamlik die uitgevoerde kernkonfigurasie, wat 'n uitsondering is omdat dit net een keer per selflaai gegenereer hoef te word. Aan die ander kant, in /sys
daar is baie groter lêers, waarvan baie 'n hele bladsy geheue in beslag neem. Gewoonlik lêers sysfs
bevat presies een nommer of reël, anders as tabelle van inligting wat verkry word deur die lees van lêers soos /proc/meminfo
.
Doel sysfs
- verskaf lees/skryf eienskappe van wat die kern noem «kobjects»
in gebruikersruimte. Die enigste doelwit kobjects
is skakeltelling: wanneer die laaste skakel na 'n kobject verwyder word, sal die stelsel die hulpbronne wat daarmee geassosieer word, herstel. Nietemin, /sys
maak die meeste van die bekendes uit
Die kern se stabiele ABI beperk wat in kan verskyn /sys
, nie wat werklik teenwoordig is op daardie spesifieke oomblik nie. Die lys van lêertoestemmings in sysfs bied insig in hoe konfigureerbare instellings vir toestelle, modules, lêerstelsels, ens. gekonfigureer of gelees kan word. Die logiese gevolgtrekking is dat procfs ook deel is van die kern se stabiele ABI, alhoewel dit nie uitdruklik in
Lêers in sysfs
beskryf een spesifieke eienskap vir elke entiteit en kan leesbaar, skryfbaar of albei wees. "0" in die lêer beteken dat die SSD nie verwyder kan word nie.
Kom ons begin die tweede deel van die vertaling met hoe om VFS te monitor deur die eBPF- en bcc-nutsmiddels te gebruik, en nou wag ons vir jou kommentaar en nooi ons jou tradisioneel om
Bron: will.com