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
Virtuell Dateiesystemer déngen als eng Art magesch Abstraktioun, déi d'Philosophie vu Linux erlaabt ze soen datt "alles e Fichier ass."
Wat ass e Dateiesystem? Baséierend op de Wierder vun engem vun den éischte Mataarbechter an Autoren vu Linux
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
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
Bekannte Systemer wéi ext4, NFS, an / proc hunn dräi wichteg Funktiounen an enger C-Datenstruktur genannt 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/
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.
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
/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?
Jidderee weess datt Stockage / tmp
op engem kierperleche Medium - Wahnsinn!
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 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/
.
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 /proc
, an eigentlech an Fichieren /proc
et gëtt näischt wa kee kuckt. Wéi gesot
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
.
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
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
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
Source: will.com