Hola a tots! Continuem llançant nous streams per als cursos dels quals ja us heu enamorat i ara tenim pressa per anunciar que comencem un nou conjunt de cursos
Els sistemes de fitxers virtuals serveixen com una mena d'abstracció màgica que permet que la filosofia de Linux digui que "tot és un fitxer".
Què és un sistema de fitxers? Basat en les paraules d'un dels primers col·laboradors i autors de Linux
Conceptes bàsics del sistema de fitxers
El nucli de Linux té certs requisits per a una entitat que es pot considerar un sistema de fitxers. Ha d'implementar els mètodes open()
, read()
и write()
per a objectes persistents que tenen noms. Des d'un punt de vista orientat a objectes
Si podem obrir, llegir i escriure en una entitat, aquesta entitat es considera un fitxer, com podem veure a l'exemple de la consola anterior.
El fenomen VFS només subratlla l'observació semblant a Unix que "tot és un fitxer". Penseu que estrany que aquest petit exemple de /dev/console anterior mostri com funciona realment la consola. La imatge mostra una sessió de Bash interactiva. En enviar una cadena a la consola (dispositiu de consola virtual) la mostra en una pantalla virtual. VFS té altres propietats encara més estranyes. Per exemple, us permet cercar per
Els sistemes familiars com ext4, NFS i /proc tenen tres funcions importants en una estructura de dades C anomenada read()
un sistema de fitxers i després utilitzeu el mètode write ()
un altre sistema de fitxers per a la sortida de dades.
Les definicions de funcions que pertanyen als tipus VFS base es troben als fitxers fs/
conté determinats sistemes de fitxers. El nucli també conté entitats com ara cgroups
, /dev
и tmpfs
, que es requereixen durant el procés d'arrencada i, per tant, es defineixen al subdirectori del nucli init/
. Adona't que cgroups
, /dev
и tmpfs
no anomeneu les funcions "tres grans". file_operations
, però directament llegir i escriure a la memòria.
El diagrama següent mostra com l'espai d'usuari accedeix als diferents tipus de sistemes de fitxers muntats habitualment als sistemes Linux. Estructures no mostrades pipes
, dmesg
и POSIX clocks
, que també implementen l'estructura file_operations
, s'hi accedeix a través de la capa VFS.
VFS és una "capa d'embolcall" entre trucades al sistema i implementacions de certes file_operations
Com ext4
и procfs
. Funcions file_operations
pot interactuar amb els controladors de dispositiu o amb els dispositius d'accés a la memòria. tmpfs
, devtmpfs
и cgroups
no utilitzi file_operations
, però accedeix directament a la memòria.
L'existència de VFS ofereix una oportunitat per reutilitzar codi, ja que els mètodes bàsics associats als sistemes de fitxers no han de ser reimplementats per cada tipus de sistema de fitxers. La reutilització del codi és una pràctica habitual entre els enginyers de programari! Tanmateix, si el codi reutilitzable conté
/tmp: pista senzilla
Una manera senzilla de detectar que els VFS estan presents en un sistema és escriure mount | grep -v sd | grep -v :/
, que mostrarà tots els muntats (mounted
) sistemes de fitxers que no són residents al disc i que no són NFS, que és cert a la majoria d'ordinadors. Un dels muntatges enumerats (mounts
) VFS ho farà sens dubte /tmp
, dret?
Tothom sap aquest emmagatzematge / tmp
en un mitjà físic: bogeria!
Per què no és desitjable emmagatzemar /tmp
en mitjans físics? Perquè els fitxers a /tmp
són temporals i els dispositius d'emmagatzematge són més lents que la memòria on es crea tmpfs. A més, els mitjans físics són més susceptibles de desgastar-se quan se sobreescriuen que la memòria. Finalment, els fitxers de /tmp poden contenir informació sensible, de manera que fer-los desaparèixer a cada reinici és una característica essencial.
Malauradament, alguns scripts d'instal·lació de distribució de Linux creen /tmp al dispositiu d'emmagatzematge de manera predeterminada. No us desespereu si això també li va passar al vostre sistema. Seguiu unes quantes instruccions senzilles amb tmpfs
no està disponible per a altres finalitats. En altres paraules, un sistema amb un tmpfs gegant i fitxers grans pot quedar-se sense memòria i bloquejar-se. Un altre consell: mentre editeu un fitxer /etc/fstab
, recordeu que ha d'acabar amb una nova línia, en cas contrari el vostre sistema no arrencarà.
/proc i /sys
A més /tmp
, VFS (sistemes de fitxers virtuals) que són més familiars per als usuaris de Linux són /proc
и /sys
. (/dev
resideix a la memòria compartida i no té file_operations
). Per què aquests dos components? Anem a analitzar aquest tema.
procfs
crea una instantània del nucli i dels processos que supervisa userspace
. En /proc
el nucli imprimeix informació sobre el que té disponible, com ara interrupcions, memòria virtual i el planificador. A més, /proc/sys
és el lloc on es configuren els paràmetres amb l'ordre sysctl
, disponible per userspace
. L'estat i les estadístiques dels processos individuals es mostren als directoris /proc/
.
Aquí /proc/meminfo
és un fitxer buit que, tanmateix, conté informació valuosa.
Comportament /proc
fitxers mostra com poden ser diferents sistemes de fitxers de disc VFS. D'una banda, /proc/meminfo
conté informació que es pot veure amb l'ordre free
. D'altra banda, està buit! Com funciona? La situació recorda al famós article titulat /proc
, i de fet en fitxers /proc
no hi ha res quan ningú mira. Com s'ha dit
Aparent buit procfs
té sentit perquè la informació allà és dinàmica. Una situació una mica diferent amb sysfs
. Comparem quants fitxers tenen una mida d'almenys un byte /proc
i /sys
.
Procfs
té un fitxer, és a dir, la configuració del nucli exportada, que és una excepció perquè només s'ha de generar una vegada per arrencada. D'altra banda, en /sys
hi ha molts fitxers més grans, molts dels quals ocupen una pàgina sencera de memòria. Normalment arxius sysfs
contenen exactament un número o una línia, a diferència de les taules d'informació obtingudes de la lectura de fitxers com ara /proc/meminfo
.
Objectiu sysfs
- proporcionar propietats de lectura/escriptura del que el nucli crida «kobjects»
a l'espai d'usuari. L'únic objectiu kobjects
és el recompte d'enllaços: quan s'elimina l'últim enllaç a un kobject, el sistema restaurarà els recursos associats a aquest. No obstant, /sys
constitueix la majoria dels famosos
L'ABI estable del nucli limita el que pot aparèixer /sys
, no el que està realment present en aquell moment concret. Llistar els permisos de fitxers a sysfs proporciona informació sobre com es poden configurar els paràmetres per a dispositius, mòduls, sistemes de fitxers, etc. es pot configurar o llegir. La conclusió lògica és que procfs també forma part de l'ABI estable del nucli, tot i que això no s'indica explícitament a
Arxius a sysfs
descriure una propietat particular per a cada entitat i es pot llegir, escriure o ambdues. "0" al fitxer significa que l'SSD no es pot treure.
Comencem la segona part de la traducció amb com controlar VFS mitjançant les eines eBPF i bcc, i ara estem esperant els vostres comentaris i us convidem tradicionalment a
Font: www.habr.com