Virtuele lĂȘerstelsels in LinuxWaarom is hulle nodig en hoe werk hulle? Deel 1

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 "Administrateur Linux»wat aan die einde van April bekendgestel word. 'n Nuwe publikasie sal vir hierdie geleentheid gedateer word. Met die oorspronklike materiaal kan jy lees hier.

Virtuele lĂȘerstelsels tree op as 'n soort magiese abstraksie wat filosofie toelaat Linux om te sĂȘ dat "alles 'n lĂȘer is".

Virtuele lĂȘerstelsels in LinuxWaarom is hulle nodig en hoe werk hulle? Deel 1

Wat is 'n lĂȘerstelsel? Volgens een van die eerste bydraers en outeurs Linux Roberta Lava, "'n LĂȘerstelsel is 'n hiĂ«rargiese berging van data wat volgens 'n spesifieke struktuur saamgestel is." Hoe dit ook al sy, hierdie definisie is ewe goed geskik vir VFAT (Virtual File Allocation Table), Git en Cassandra (NoSQL databasis). So, wat presies definieer so iets as 'n "lĂȘerstelsel"?

LĂȘerstelsel basiese beginsels

kern Linux het sekere vereistes vir 'n entiteit om as 'n lĂȘerstelsel beskou te word. Dit moet metodes implementeer open(), read() Đž write() vir aanhoudende voorwerpe wat name het. Vanuit 'n objekgeoriĂ«nteerde oogpunt Programmering, die kern definieer 'n generiese lĂȘerstelsel as 'n abstrakte koppelvlak, en hierdie drie groot funksies word as "virtueel" beskou en het geen konkrete definisie nie. Gevolglik word die standaard lĂȘerstelselimplementering 'n virtuele lĂȘerstelsel (VFS) genoem.

Virtuele lĂȘerstelsels in LinuxWaarom is hulle nodig en hoe werk hulle? Deel 1

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 deur hom.

Bekende stelsels soos ext4, NFS en /proc het drie belangrike funksies in 'n C-datastruktuur genaamd lĂȘer_operasiesDaarbenewens brei sekere lĂȘerstelsels VFS-funksionaliteit uit en herimplementeer dit op 'n bekende objekgeoriĂ«nteerde manier. Soos Robert Love opmerk, laat die VFS-abstraksie gebruikers toe Linux Kopieer lĂȘers sorgeloos na en van derdeparty-bedryfstelsels of abstrakte entiteite soos pype, sonder om bekommerd te wees oor hul interne dataformaat. Van die gebruikerskant (gebruikersruimte) kan 'n proses van 'n lĂȘer na kerndatastrukture kopieer deur 'n stelseloproep te gebruik. 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/*.c kernbronkode, terwyl subgidse 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 toon hoe gebruikersruimte toegang verkry tot die verskillende tipes lĂȘerstelsels wat algemeen op stelsels gemonteer is. LinuxSulke konstruksies wat nie getoon word nie pipes, dmesg Đž POSIX clocks, wat ook die struktuur implementeer file_operations, verkry deur die VFS-laag.

Virtuele lĂȘerstelsels in LinuxWaarom is hulle nodig en hoe werk hulle? Deel 1

VFS is 'n "wrapper laag" tussen stelsel oproepe en implementering van sekere file_operationssoos 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 ernstige foute, alle implementerings wat algemene metodes erf, ly daaronder.

/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?

Virtuele lĂȘerstelsels in LinuxWaarom is hulle nodig en hoe werk hulle? Deel 1

Almal ken daardie stoorplek / tmp op 'n fisiese medium - waansin! Bron.

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, sommige installasieskripte Linux Verspreidings skep /tmp standaard op die stoortoestel. Moenie wanhoop as dit met jou stelsel gebeur nie. Volg 'n paar eenvoudige instruksies met Arch Wikiom dit reg te stel, en wees bewus daarvan dat die geheue wat vir 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 gebruikers Linux - hierdie /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/.

Virtuele lĂȘerstelsels in LinuxWaarom is hulle nodig en hoe werk hulle? Deel 1

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 Bestaan ​​die maan as niemand daarna kyk nie? Werklikheid en kwantumteorie"geskryf deur Cornell Universiteit fisika professor David Mermin in 1985. Die feit is dat die kern geheuestatistieke insamel wanneer 'n versoek gerig word /proc, en eintlik in lĂȘers /proc daar is niks as niemand kyk nie. Soos gesĂȘ Mermin, "Fundamentele kwantumleerstellings sĂȘ dat meting oor die algemeen nie 'n voorafbestaande waarde van die eiendom wat gemeet word openbaar nie." (En beskou die vraag oor die maan as huiswerk!)
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.

Virtuele lĂȘerstelsels in LinuxWaarom is hulle nodig en hoe werk hulle? Deel 1

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 "stabiele ABI vir gebruikersruimte" kern, wat niemand ooit, onder enige omstandighede kan nie "breek". Dit beteken nie dat lĂȘers in sysfs staties is nie, wat teenstrydig sou wees met verwysingtelling van onstabiele voorwerpe.
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 dokumentasie.

Virtuele lĂȘerstelsels in LinuxWaarom is hulle nodig en hoe werk hulle? Deel 1

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 oop webinar, wat op 9 April deur ons onderwyser gehou word - Vladimir Drozdetsky.

Bron: will.com

Koop betroubare hosting vir werwe met DDoS-beskerming, VPS VDS-bedieners đŸ”„ Koop betroubare webwerfhosting met DDoS-beskerming, VPS VDS-bedieners | ProHoster