Salut à tutti ! Continuemu à lancià novi flussi per i corsi chì avete digià innamuratu è avà avemu a fretta di annunzià chì avemu principiatu un novu gruppu di corsi
I sistemi di schedarii virtuali servenu cum'è un tipu d'astrazione magica chì permette à a filusufìa di Linux per dì chì "tuttu hè un schedariu".
Cosa hè un sistema di schedari? Basatu nantu à e parolle di unu di i primi cuntributori è autori di Linux
Principi di u sistema di filesystem
U kernel Linux hà certi requisiti per una entità chì pò esse cunsideratu un sistema di fugliale. Deve implementà i metudi open()
, read()
и write()
per ughjetti persistenti chì anu nomi. Da un puntu di vista orientatu à l'ughjettu
Se pudemu apre, leghje è scrive à una entità, allora quella entità hè cunsiderata un schedariu, cum'è pudemu vede da l'esempiu in a cunsola sopra.
U fenomenu VFS sottumette solu l'osservazione Unix-like chì "tuttu hè un schedariu". Pensate quantu stranu chì quellu pocu /dev/console esempiu sopra mostra cumu a cunsola funziona veramente. A stampa mostra una sessione Bash interattiva. Mandatu una stringa à a cunsola (dispositivu di cunsola virtuale) a mostra nantu à una pantalla virtuale. VFS hà altre proprietà, ancu più strane. Per esempiu, vi permette di circà da
I sistemi familiari cum'è ext4, NFS è / proc anu trè funzioni impurtanti in una struttura di dati C chjamata read()
un sistema di schedariu è dopu aduprà u metudu write ()
un altru sistema di schedari per a pruduzzioni di dati.
E definizioni di funzioni chì appartenenu à i tipi di basa VFS sò in i schedari fs/
cuntene certi sistemi di schedari. U core cuntene ancu entità cum'è cgroups
, /dev
и tmpfs
, chì sò necessarii durante u prucessu di boot è sò dunque definiti in u subdirectory di u kernel init/
. Avvisu chì cgroups
, /dev
и tmpfs
Ùn chjamate micca e funzioni "big three". file_operations
, ma direttamente leghje è scrive in memoria.
U diagramma quì sottu mostra cumu u spaziu di l'utilizatori accede à i diversi tipi di filesystems cumunamenti muntati in sistemi Linux. Strutture micca mostrate pipes
, dmesg
и POSIX clocks
, chì implementanu ancu a struttura file_operations
, accede à traversu a strata VFS.
VFS hè un "layer wrapper" trà e chjama di u sistema è implementazioni di certi file_operations
, cum'è ext4
и procfs
. Funzioni file_operations
pò interagisce cù i cunduttori di u dispositivu o i dispositi d'accessu à a memoria. tmpfs
, devtmpfs
и cgroups
ùn aduprà file_operations
, ma accede direttamente à a memoria.
L'esistenza di VFS furnisce l'uppurtunità di riutilizà u codice, postu chì i metudi basi assuciati cù i sistemi di schedari ùn anu micca esse riimplementati da ogni tipu di sistema di schedari. A riutilizazione di u codice hè una pratica cumuna trà ingegneri di software! Tuttavia, se u codice reusable cuntene
/tmp: Suggerimentu simplice
Un modu faciule per detectà chì VFS sò prisenti nantu à un sistema hè di scrive mount | grep -v sd | grep -v :/
, chì mostrarà tutte e muntagne (mounted
) filesystems chì ùn sò micca residenti di discu è micca NFS, chì hè vera in a maiò parte di l'urdinatori. Unu di i monti elencati (mounts
) VFS sarà senza dubbitu /tmp
, diritta?
Tuttu u mondu sanu chì u almacenamentu / tmp
nantu à un mediu fisicu - follia!
Perchè ùn hè micca desideratu di almacenà /tmp
nantu à i media fisichi? Perchè i schedari in /tmp
sò tempuranee è i dispositi di almacenamento sò più lenti cà a memoria induve tmpfs hè creatu. Inoltre, i media fisichi sò più suscettibili à l'usura quandu sò soprascritti da a memoria. Infine, i fugliali in / tmp ponu cuntene infurmazioni sensittivi, cusì fà sparisce in ogni reboot hè una funzione essenziale.
Sfurtunatamente, certi script di installazione di distribuzione Linux creanu /tmp in u dispositivu di almacenamento per automaticamente. Ùn disperate micca s'ellu hè accadutu ancu à u vostru sistema. Segui uni pochi di struzzioni simplici cù tmpfs
diventa indisponibile per altri scopi. In altri palori, un sistema cù un tmpfs giganti è grandi schedari nantu à ellu pò esce da memoria è crash. Un altru suggerimentu: mentre editate un schedariu /etc/fstab
, ricordate chì deve finisce cù una nova linea, altrimenti u vostru sistema ùn hà micca avviatu.
/proc è /sys
stringhjendu /tmp
, VFS (sistemi di schedarii virtuali) chì sò più familiari per l'utilizatori di Linux sò /proc
и /sys
. (/dev
risiede in memoria spartuta è ùn hà micca file_operations
). Perchè sti dui cumpunenti? Fighjemu in stu prublema.
procfs
crea un snapshot di u kernel è i prucessi chì monitoreghja userspace
. L' /proc
u kernel stampa l'infurmazioni nantu à ciò chì hà dispunibule, cum'è interruzioni, memoria virtuale è u pianificatore. In più, /proc/sys
hè u locu induve i paràmetri cunfigurati cù u cumandimu sysctl
, dispunibule per userspace
. U statutu è e statistiche di i prucessi individuali sò visualizati in cartulari /proc/
.
hè /proc/meminfo
hè un schedariu viotu chì cuntene quantunque informazioni preziose.
Cumpurtamentu /proc
i schedarii mostra quantu ponu esse diversi sistemi di schedarii di discu VFS. Da una parte, /proc/meminfo
cuntene infurmazione chì pò esse vistu cù u cumandamentu free
. D'altronde, hè viotu ! Cumu funziona? A situazione hè reminiscente di u famosu articulu intitulatu /proc
, è in fatti in i schedari /proc
ùn ci hè nunda quandu nimu cerca. Comu dettu
Viotu apparente procfs
hè sensu perchè l'infurmazione hè dinamica. Una situazione un pocu sfarente cù sysfs
. Comparamu quanti fugliali chì sò almenu un byte di dimensione sò in /proc
è in /sys
.
Procfs
hà un schedariu, vale à dì a cunfigurazione di u kernel esportatu, chì hè una eccezzioni perchè solu deve esse generatu una volta per boot. D'altra parte, in /sys
Ci sò parechji schedarii più grande, assai di quali occupanu una pagina intera di memoria. Di solitu i schedari sysfs
cuntene esattamente un numeru o una linea, à u cuntrariu di e tavule d'infurmazioni ottenute da leghje i schedari cum'è /proc/meminfo
.
Goal sysfs
- furnisce proprietà di lettura / scrittura di ciò chì u kernel chjama «kobjects»
in u spaziu utilizatori. L'unicu scopu kobjects
hè u contu di ligami: quandu l'ultimu ligame à un kobject hè sguassatu, u sistema restaurà e risorse assuciate cun ellu. Tuttavia, /sys
custituisce a maiò parte di i famosi
L'ABI stabile di u kernel limita ciò chì pò appare /sys
, micca ciò chì hè veramente presente in quellu mumentu particulare. A lista di i permessi di u schedariu in sysfs furnisce un insight in quantu paràmetri configurabili per i dispositi, i moduli, i filesystems, etc. pò esse cunfiguratu o leghje. A cunclusione logica hè chì procfs hè ancu parte di l'ABI stabile di u kernel, ancu s'ellu ùn hè micca esplicitamente dichjaratu in
I schedari in sysfs
descrive una pruprietà particulare per ogni entità è pò esse leggibile, scrivibile, o i dui. "0" in u schedariu significa chì u SSD ùn pò micca esse eliminatu.
Cuminciamu a seconda parte di a traduzzione cù cumu monitorà VFS cù l'arnesi eBPF è bcc, è avà aspittemu i vostri cumenti è tradiziunale vi invitemu à
Source: www.habr.com