GNU/Linux >> Tutoriales Linux >  >> Linux

¿Para qué sirven los inodos?

Me pregunto si almacenar la información sobre los archivos en inodos en lugar de directamente en el directorio vale la pena la sobrecarga adicional. Puede estar bien que esté sobrestimando los gastos generales o pasando por alto algo importante, pero es por eso que pregunto.

Veo que algo así como "inodos" es necesario para los enlaces duros, pero en caso de que la sobrecarga sea realmente tan grande como creo, me pregunto si alguna de las razones lo justifica:

  • usar enlaces duros para las copias de seguridad es inteligente, pero la eficiencia de las copias de seguridad no es lo suficientemente importante en comparación con la eficiencia de las operaciones normales
  • no tener penalización por velocidad ni tamaño para los enlaces duros puede ser realmente importante, ya que esta ventaja solo tiene para unos pocos archivos haciendo uso de enlaces duros mientras que el acceso a todos los archivos sufre los gastos generales
  • guardando algo de espacio para un par de binarios con el mismo nombre como bunzip2 y bcat es insignificante

No estoy diciendo que los inodos/vínculos duros sean malos o inútiles, pero ¿pueden justificar el costo de la indirección adicional (el almacenamiento en caché seguramente ayuda mucho, pero no es una panacea)?

Respuesta aceptada:

Los enlaces duros no vienen al caso. No son la razón para tener inodos. Son un subproducto:básicamente, cualquier diseño razonable de sistema de archivos similar a Unix (e incluso NTFS está lo suficientemente cerca en este punto) tiene enlaces duros de forma gratuita.

El inodo es donde se almacenan todos los metadatos de un archivo:su hora de modificación, sus permisos, etc. También es donde se almacena la ubicación de los datos del archivo en el disco. Estos datos deben almacenarse en algún lugar.

Almacenar los datos del inodo dentro del directorio conlleva su propia sobrecarga. Hace que el directorio sea más grande, por lo que la obtención de una lista de directorios es más lenta. Guarda una búsqueda para cada acceso a un archivo, pero cada recorrido de directorio (de los cuales se necesitan varios para acceder a un archivo, uno por directorio en la ruta del archivo) cuesta un poco más. Lo que es más importante, hace que sea mucho más difícil mover un archivo de un directorio a otro:en lugar de mover solo un puntero al inodo, debe mover todos los metadatos.

Los sistemas Unix siempre le permiten cambiar el nombre o eliminar un archivo, incluso si un proceso lo tiene abierto. (En algunas variantes de Unix, haga esto casi siempre). Esta es una propiedad muy importante en la práctica:significa que una aplicación no puede "secuestrar" un archivo. Cambiar el nombre o eliminar el archivo no afecta a la aplicación, puede continuar leyendo y escribiendo en el archivo. Si se elimina el archivo, los datos permanecen hasta que ningún proceso tenga abierto el archivo. Esto se facilita asociando el proceso con el inodo. El proceso no se puede asociar con el nombre del archivo ya que este puede cambiar o incluso desaparecer en cualquier momento.

Relacionado:¿Cuál es una buena herramienta para visualizar trabajos del Agente SQL?
Linux
  1. ¿Qué son los archivos dispersos en Linux?

  2. ¿Para qué sirven los archivos .la de libtool?

  3. ¿Qué son la página mapeada en memoria y la página anónima?

  4. ¿Cuál es una buena solución para el etiquetado de archivos en Linux?

  5. ¿Qué es un buen visor de archivos CHM para (Fedora) Linux?

¿Qué es ZFS? ¿Por qué la gente está loca por eso?

¿Qué significa "rc" en .bashrc?

¿Buena combinación de navegador de archivos gráfico y de línea de comandos?

¿Qué son los inodos en Linux?

¿Qué es una base de datos distribuida y para qué sirven los sistemas de datos distribuidos?

¿Qué es un archivo .sh?