Virtuell Dateiesystemer am Linux: firwat si se gebraucht a wéi funktionnéieren se? Deel 1

Moien alleguer! Mir lancéiere weider nei Streams fir d'Coursen op déi Dir scho verléift sidd an elo si mir presséiert fir matzedeelen datt mir eng nei Formatioun vu Coursen starten "Linux Administrator"déi Enn Abrëll lancéiert. Eng nei Verëffentlechung gëtt fir dëst Evenement datéiert. Mat dem Originalmaterial kënnt Dir liesen hei.

Virtuell Dateiesystemer déngen als eng Art magesch Abstraktioun, déi d'Philosophie vu Linux erlaabt ze soen datt "alles e Fichier ass."

Virtuell Dateiesystemer am Linux: firwat si se gebraucht a wéi funktionnéieren se? Deel 1

Wat ass e Dateiesystem? Baséierend op de Wierder vun engem vun den éischte Mataarbechter an Autoren vu Linux Roberta Lava, "E Dateiesystem ass eng hierarchesch Späichere vun Daten, déi no enger spezifescher Struktur zesummegesat sinn." Wéi och ëmmer, dës Definitioun ass gläich gutt fir VFAT (Virtual File Allocation Table), Git an Cassandra (NoSQL Datebank). Also wat definéiert genau sou eng Saach als "Dateisystem"?

Dateisystem Basics

De Linux Kernel huet gewësse Viraussetzunge fir eng Entitéit déi als Dateiesystem ugesi ka ginn. Et muss d'Methoden ëmsetzen open(), read() и write() fir persistent Objeten déi Nimm hunn. Aus objektorientéierter Siicht programméiere, de Kernel definéiert e generesche Dateiesystem als abstrakt Interface, an dës dräi grouss Funktiounen ginn als "virtuell" ugesinn an hu keng konkret Definitioun. Deementspriechend gëtt d'Default Dateisystemimplementatioun e virtuelle Dateiesystem (VFS) genannt.

Virtuell Dateiesystemer am Linux: firwat si se gebraucht a wéi funktionnéieren se? Deel 1

Wa mir kënnen op eng Entitéit opmaachen, liesen a schreiwen, da gëtt dës Entitéit als Datei ugesinn, wéi mir aus dem Beispill an der Konsole hei uewen gesinn.
De VFS Phänomen ënnersträicht nëmmen déi Unix-ähnlech Observatioun datt "alles e Fichier ass". Denkt wéi komesch datt dat klengt /dev/console Beispill hei uewen weist wéi d'Konsol tatsächlech funktionnéiert. D'Bild weist eng interaktiv Bash Sessioun. Schécken vun engem String op d'Konsole (virtuell Konsol Apparat) weist et op engem virtuelle Écran. VFS huet aner, souguer komesch Eegeschaften. Zum Beispill, et erlaabt Iech ze sichen duerch vun him.

Bekannte Systemer wéi ext4, NFS, an / proc hunn dräi wichteg Funktiounen an enger C-Datenstruktur genannt file_operations. Zousätzlech verlängeren a bestëmmte Dateiesystemer VFS Funktionalitéit op eng vertraute objektorientéiert Manéier. Wéi de Robert Love weist, erlaabt d'VFS Abstraktioun Linux Benotzer nonchalant Dateien op oder vun Drëtt Partei Betribssystemer oder abstrakt Entitéite wéi Päifen ze kopéieren ouni sech iwwer hiren internen Dateformat ze këmmeren. Op der Benotzersäit (Benotzerraum), mat engem Systemruff, kann e Prozess vun enger Datei op d'Kerneldatenstrukture mat der Method kopéieren read() engem Dateiesystem an dann d'Methode benotzen write () en anere Dateiesystem fir Datenausgang.

D'Funktiounsdefinitioune, déi zu de Basis VFS-Typen gehéieren, sinn an de Dateien fs/*.c kernel Quellcode, wärend Ënnerverzeechnungen fs/ enthalen bestëmmte Fichier Systemer. De Kär enthält och Entitéite wéi cgroups, /dev и tmpfs, déi während dem Bootprozess erfuerderlech sinn an dofir am Kernel-Ënnerverzeechnes definéiert sinn init/. Notéiert dat cgroups, /dev и tmpfs ruffen net déi "grouss dräi" Funktiounen file_operations, awer direkt liesen a schreiwen an Erënnerung.
D'Diagramm hei ënnen weist wéi d'Benotzerraum Zougang zu de verschiddenen Aarte vu Dateiesystemer déi allgemeng op Linux Systemer montéiert sinn. Strukturen net gewisen pipes, dmesg и POSIX clocks, déi och d'Struktur ëmsetzen file_operations, zougänglech duerch d'VFS Layer.

Virtuell Dateiesystemer am Linux: firwat si se gebraucht a wéi funktionnéieren se? Deel 1

VFS ass eng "Wrapper Layer" tëscht System Uriff an Implementatioune vu bestëmmte file_operations, wéi zum Beispill ext4 и procfs. Fonctiounen file_operations kann mat entweder Apparat Chauffeuren oder Erënnerung Zougang Apparater interagéieren. tmpfs, devtmpfs и cgroups benotzen net file_operations, mee direkt Zougang zu der Erënnerung.
D'Existenz vu VFS bitt eng Méiglechkeet fir Code ze benotzen, well d'Basismethoden, déi mat Dateiesystemer verbonne sinn, net vun all Typ vu Dateiesystem ëmgesat musse ginn. Code weiderbenotzen ass eng gemeinsam Praxis ënnert Software Ingenieuren! Wéi och ëmmer, wann de wiederverwendbare Code enthält grave Feeler, all Implementatiounen, déi allgemeng Methoden ierwen, leiden dovunner.

/tmp: Einfach Hiweis

En einfache Wee fir z'entdecken datt VFS op engem System präsent sinn ass ze tippen mount | grep -v sd | grep -v :/, déi all montéiert weist (mounted) Dateiesystemer déi net diskresident an net NFS sinn, wat op de meeschte Computeren stëmmt. Ee vun de opgezielt Mounts (mounts) VFS wäert ouni Zweiwel /tmp, riets?

Virtuell Dateiesystemer am Linux: firwat si se gebraucht a wéi funktionnéieren se? Deel 1

Jidderee weess datt Stockage / tmp op engem kierperleche Medium - Wahnsinn! Source.

Firwat ass et net wënschenswäert ze späicheren /tmp op kierperlech Medien? Well d'Dateien an /tmp sinn temporär a Späicherapparater si méi lues wéi d'Erënnerung wou tmpfs erstallt gëtt. Ausserdeem si kierperlech Medien méi ufälleg fir ze droen wann se iwwerschriwwe ginn wéi d'Erënnerung. Schlussendlech kënnen Dateien an /tmp sensibel Informatioun enthalen, sou datt se op all Neistart verschwannen ass eng wesentlech Feature.

Leider erstellen e puer Linux Verdeelungsinstallatiounsskripter / tmp op de Späicherapparat als Standard. Verzweifelt net wann dëst och mat Ärem System geschitt ass. Follegt e puer einfach Instruktioune mat Arch Wikifir dëst ze fixéieren, a bewosst datt d'Erënnerung zougewisen ass tmpfs gëtt fir aner Zwecker net verfügbar. An anere Wierder, e System mat engem riesegen tmpfs a grousse Fichieren op et kann aus Erënnerung lafen a Crash. En aneren Hiweis: beim Änneren vun enger Datei /etc/fstab, Denkt drun datt et mat enger Neilinn ophalen muss, soss wäert Äre System net booten.

/proc an /sys

nieft /tmp, VFS (virtuell Dateiesystemer) déi Linux Benotzer am meeschte vertraut sinn /proc и /sys. (/dev wunnt am gemeinsame Erënnerung an huet net file_operations). Firwat dës zwee Komponenten? Loosst eis dëst Thema kucken.

procfs erstellt e Snapshot vum Kernel an de Prozesser fir déi se iwwerwaacht userspace. d' /proc de Kernel dréckt Informatioun iwwer wat et verfügbar ass, wéi Ënnerbriechungen, virtuell Erënnerung, an de Scheduler. Ausserdeem, /proc/sys ass d'Plaz wou d'Parameteren mat dem Kommando konfiguréiert sinn sysctl, verfügbar fir userspace. De Status an d'Statistike vun eenzelne Prozesser ginn an Verzeichnisser ugewisen /proc/.

Virtuell Dateiesystemer am Linux: firwat si se gebraucht a wéi funktionnéieren se? Deel 1

et ass /proc/meminfo ass eng eidel Datei déi trotzdem wäertvoll Informatioun enthält.

Verhalen /proc Dateien weist wéi verschidde VFS Disk Dateisystemer kënne sinn. Op där enger Säit, /proc/meminfo enthält Informatioun déi mat dem Kommando gekuckt ka ginn free. Op der anerer Säit ass et eidel! Wéi funktionéiert et? D'Situatioun erënnert un de berühmten Artikel mam Titel Gëtt et de Mound, wa kee méi no kuckt? Realitéit a Quantetheorie"geschriwwen vum Cornell University Physik Professer David Mermin am Joer 1985. De Fakt ass datt de Kärel Erënnerungsstatistiken sammelt wann eng Ufro gemaach gëtt /proc, an eigentlech an Fichieren /proc et gëtt näischt wa kee kuckt. Wéi gesot Mermin, "Fundamental Quantedoktrin seet datt d'Messung allgemeng net e pre-existéierende Wäert vun der Immobilie gëtt, déi gemooss gëtt." (A betruecht d'Fro iwwer de Mound als Hausaufgaben!)
Schéngt Leedung procfs mécht Sënn well d'Informatioun do dynamesch ass. Eng liicht aner Situatioun mat sysfs. Loosst eis vergläichen wéivill Dateien déi op d'mannst ee Byte grouss sinn /proc an a /sys.

Virtuell Dateiesystemer am Linux: firwat si se gebraucht a wéi funktionnéieren se? Deel 1

Procfs huet eng Datei, nämlech déi exportéiert Kernelkonfiguratioun, déi eng Ausnam ass, well se nëmmen eemol pro Boot generéiert muss ginn. Op der anerer Säit, an /sys et gi vill gréisser Dateien, vill vun deenen eng ganz Erënnerungssäit ophuelen. Normalerweis Fichieren sysfs enthalen genee eng Nummer oder Linn, am Géigesaz zu Tabelle vun Informatioun, déi duerch d'Liesen vun Dateien wéi z /proc/meminfo.

Goal geschoss huet sysfs - liwwert Lies- / Schreifeigenschaften vun deem wat de Kernel nennt «kobjects» am Benotzerraum. Dat eenzegt Zil kobjects ass Link zielen: wann de leschte Link zu engem kobject geläscht ass, wäert de System d'Ressourcen verbonne mat et restauréiert. Trotzdem, /sys mécht déi meescht vun de berühmte "stabil ABI fir Benotzerraum" Kär, dee keen jee kann, ënner kengen Ëmstänn "break". Dëst bedeit net datt Dateien an sysfs statesch sinn, wat inkonsequent wier mat Referenzzielung vun onbestännegen Objeten.
De stabile ABI vum Kernel limitéiert wat kann erschéngen /sys, net wat eigentlech an deem bestëmmte Moment präsent ass. Oplëschtung vun Dateierechter an sysfs gëtt Abléck wéi konfiguréierbar Astellunge fir Apparater, Moduler, Dateiesystemer, etc. kann konfiguréiert oder gelies ginn. Déi logesch Conclusioun ass datt procfs och Deel vum Kernel stabilen ABI ass, obwuel dëst net explizit an Dokumentatioun.

Virtuell Dateiesystemer am Linux: firwat si se gebraucht a wéi funktionnéieren se? Deel 1

Dateien an sysfs beschreiwen eng bestëmmte Propriétéit fir all Entitéit a ka liesbar, schrëftlech oder béid sinn. "0" an der Datei bedeit datt d'SSD net geläscht ka ginn.

Loosst eis den zweeten Deel vun der Iwwersetzung ufänken mat wéi Dir VFS iwwerwaacht mat den eBPF a bcc Tools, an elo waarden mir op Är Kommentaren an invitéieren Iech traditionell oppen Webinar, déi vun eisem Schoulmeeschter den 9. Abrëll ofgehale gëtt - Vladimir Drozdetsky.

Source: will.com

Setzt e Commentaire