Ola a todos! Seguimos lanzando novas emisións para os cursos dos que xa te namoraches e agora temos présa en anunciar que comezamos un novo conxunto de cursos
Os sistemas de ficheiros virtuais serven como unha especie de abstracción máxica que permite que a filosofía de Linux diga que "todo é un ficheiro".
Que é un sistema de ficheiros? Baseado nas palabras dun dos primeiros colaboradores e autores de Linux
Conceptos básicos do sistema de ficheiros
O núcleo de Linux ten certos requisitos para unha entidade que se pode considerar un sistema de ficheiros. Debe aplicar os métodos open()
, read()
и write()
para obxectos persistentes que teñen nome. Desde un punto de vista orientado a obxectos
Se podemos abrir, ler e escribir nunha entidade, esa entidade considérase un ficheiro, como podemos ver no exemplo da consola anterior.
O fenómeno VFS só subliña a observación tipo Unix de que "todo é un ficheiro". Pensa o raro que ese pequeno exemplo de /dev/console anterior mostre como funciona realmente a consola. A imaxe mostra unha sesión interactiva de Bash. O envío dunha cadea á consola (dispositivo de consola virtual) móstraa nunha pantalla virtual. VFS ten outras propiedades aínda máis estrañas. Por exemplo, permítelle buscar por
Os sistemas familiares como ext4, NFS e /proc teñen tres funcións importantes nunha estrutura de datos C chamada read()
un sistema de ficheiros e despois use o método write ()
outro sistema de ficheiros para a saída de datos.
As definicións de función que pertencen aos tipos base de VFS están nos ficheiros fs/
contén determinados sistemas de ficheiros. O núcleo tamén contén entidades como cgroups
, /dev
и tmpfs
, que son necesarios durante o proceso de arranque e, polo tanto, están definidos no subdirectorio do núcleo init/
. Observe iso cgroups
, /dev
и tmpfs
non chames as funcións "tres grandes". file_operations
, pero directamente ler e escribir na memoria.
O diagrama de abaixo mostra como o espazo de usuario accede aos diferentes tipos de sistemas de ficheiros montados habitualmente en sistemas Linux. Estruturas non mostradas pipes
, dmesg
и POSIX clocks
, que tamén implementan a estrutura file_operations
, ao que se accede a través da capa VFS.
VFS é unha "capa de envoltura" entre chamadas ao sistema e implementacións de certas file_operations
como ext4
и procfs
. Funcións file_operations
pode interactuar con controladores de dispositivos ou dispositivos de acceso á memoria. tmpfs
, devtmpfs
и cgroups
non usar file_operations
, pero accede directamente á memoria.
A existencia de VFS ofrece unha oportunidade para reutilizar código, xa que os métodos básicos asociados aos sistemas de ficheiros non teñen que ser reimplementados por cada tipo de sistema de ficheiros. A reutilización do código é unha práctica común entre os enxeñeiros de software. Non obstante, se o código reutilizable contén
/tmp: Suxestión sinxela
Un xeito sinxelo de detectar que os VFS están presentes nun sistema é escribir mount | grep -v sd | grep -v :/
, que mostrará todos os montados (mounted
) sistemas de ficheiros que non son residentes no disco e non son NFS, o que é certo na maioría dos ordenadores. Unha das monturas listadas (mounts
) VFS sen dúbida /tmp
, non?
Todo o mundo coñece ese almacenamento / tmp
nun medio físico - tolemia!
Por que é indesexable almacenar /tmp
en medios físicos? Porque os ficheiros en /tmp
son temporais e os dispositivos de almacenamento son máis lentos que a memoria onde se crea tmpfs. Ademais, os medios físicos son máis susceptibles de desgaste cando se sobrescriben que a memoria. Finalmente, os ficheiros en /tmp poden conter información confidencial, polo que facelos desaparecer en cada reinicio é unha característica esencial.
Desafortunadamente, algúns scripts de instalación de distribución de Linux crean /tmp no dispositivo de almacenamento por defecto. Non desespere se isto ocorreu tamén co seu sistema. Siga algunhas instrucións sinxelas con tmpfs
non estará dispoñible para outros fins. Noutras palabras, un sistema cun tmpfs xigante e ficheiros grandes pode quedar sen memoria e fallar. Outra suxestión: ao editar un ficheiro /etc/fstab
, lembre que debe rematar cunha nova liña, se non, o seu sistema non arrancará.
/proc e /sys
Ademais de /tmp
, VFS (sistemas de ficheiros virtuais) que son máis familiares para os usuarios de Linux son /proc
и /sys
. (/dev
reside na memoria compartida e non ten file_operations
). Por que estes dous compoñentes? Vexamos esta cuestión.
procfs
crea unha instantánea do núcleo e dos procesos que supervisa userspace
. En /proc
o núcleo imprime información sobre o que ten dispoñible, como as interrupcións, a memoria virtual e o planificador. Ademais, /proc/sys
é o lugar onde se configuran os parámetros co comando sysctl
, dispoñible para userspace
. O estado e as estatísticas dos procesos individuais móstranse en directorios /proc/
.
Aquí /proc/meminfo
é un ficheiro baleiro que non obstante contén información valiosa.
Comportamento /proc
ficheiros mostra como poden ser diferentes sistemas de ficheiros de disco VFS. Por un lado, /proc/meminfo
conteñen información que se pode ver co comando free
. Por outra banda, está baleiro! Como funciona? A situación lembra ao famoso artigo titulado /proc
, e en realidade nos ficheiros /proc
non hai nada cando ninguén mira. Como dixo
Aparente baleiro procfs
ten sentido porque a información alí é dinámica. Unha situación lixeiramente diferente con sysfs
. Imos comparar cantos ficheiros teñen polo menos un byte de tamaño /proc
e /sys
.
Procfs
ten un ficheiro, é dicir, a configuración do núcleo exportada, que é unha excepción porque só precisa ser xerada unha vez por arranque. Por outra banda, en /sys
hai moitos ficheiros máis grandes, moitos dos cales ocupan unha páxina enteira de memoria. Normalmente arquivos sysfs
conter exactamente un número ou liña, a diferenza das táboas de información obtida da lectura de ficheiros como /proc/meminfo
.
Meta sysfs
- proporcionar propiedades de lectura/escritura do que chama o núcleo «kobjects»
no espazo de usuario. O único obxectivo kobjects
é o reconto de ligazóns: cando se elimina a última ligazón a un kobject, o sistema restaurará os recursos asociados a el. Con todo, /sys
compoñen a maioría dos famosos
O ABI estable do núcleo limita o que pode aparecer /sys
, non o que está realmente presente nese momento en particular. A lista de permisos de ficheiros en sysfs proporciona información sobre como se configuran os axustes para dispositivos, módulos, sistemas de ficheiros, etc. pódese configurar ou ler. A conclusión lóxica é que procfs tamén forma parte do ABI estable do núcleo, aínda que isto non se indica explícitamente en
Arquivos en sysfs
describe unha propiedade particular para cada entidade e pode ser lexible, escribible ou ambas as dúas cousas. "0" no ficheiro significa que non se pode eliminar o SSD.
Comecemos a segunda parte da tradución con como supervisar VFS usando as ferramentas eBPF e bcc, e agora agardamos os teus comentarios e, tradicionalmente, invitámoste a
Fonte: www.habr.com