¿Qué es un inodo huérfano? [cerrado]

16

Entiendo qué es un inodo, pero ¿cuál es la definición exacta de un inodo huérfano? Realmente no entiendo lo que eso significa.

ACTUALIZAR

Hubo un tiempo en que un servidor que estaba administrando se quedó sin inodos, pero cuando hacía un df -h me demostró que el servidor solo tenía un 60% de espacio usado. Supongo que esto se debe a inodes huérfanos. ¿Cómo se pueden usar todos los inodes pero aún queda "espacio" en el servidor? ¿Puedes abordar esto en tus respuestas?

ninjacoder
fuente
1
Su actualización es una pregunta separada realmente, que tiene que ver con la diferencia entre la capacidad de almacenamiento de un sistema de archivos y la cantidad de inodos que puede contener; deberías hacerla como una pregunta separada.
Stephen Kitt
La ejecución df -imostrará la información correspondiente para inodes.
Kusalananda
El espacio libre / usado en disco solo está ligeramente correlacionado con los inodos libres / usados. Un disco con muchos archivos pequeños se quedará sin inodos antes de quedarse sin espacio.
Kusalananda

Respuestas:

17

Un inodo huérfano es un inodo que no está conectado a una entrada de directorio en el sistema de archivos, lo que significa que no se puede alcanzar.

Los inodos huérfanos pueden aparecer por varias razones:

  • los archivos temporales que se eliminan pero se mantienen abiertos (una práctica común) ocupan inodos en el sistema de archivos; Si el sistema se reinicia sin apagarse correctamente, estos inodos permanecen y quedan huérfanos.
  • la corrupción del sistema de archivos puede dañar un directorio sin afectar los inodos de los archivos que contiene el directorio; estos inodos quedan huérfanos

fsckcrea nuevas entradas de directorio para inodos huérfanos en lost+found.

Stephen Kitt
fuente
Gracias por su respuesta @ stephen-kitt. Hubo un tiempo en que un servidor que estaba administrando se quedó sin inodos, pero cuando lo hice df -hme mostró que solo tenía un 60% de espacio. Supongo que esto se debe a inodes huérfanos. ¿Cómo se pueden usar todos los inodos pero aún queda "espacio" en el servidor?
ninjacoder
3

Un inodo huérfano es un archivo que está "semi-eliminado": no tiene más entradas de directorio, pero aún está abierto en algún proceso, por lo que los datos aún están presentes en el disco. Cuando el último proceso que tiene este archivo abierto lo cierra, el archivo se eliminará por completo y el inodo huérfano desaparecerá.

Un inodo huérfano usa un inodo y el espacio en disco para almacenar el archivo, así que ambos dfy df -icontarlo como se usa. Por lo tanto, si el disco se informa como lleno pero dfmuestra algo de espacio restante, esto no puede estar relacionado con inodos huérfanos. Los inodes huérfanos son una de las razones por las cuales el uso del sistema de archivos informado por dfy el tamaño total del archivo informado dupueden diferir; ver ¿Por qué hay tantas formas diferentes de medir el uso del disco? para más detalles sobre este tema

Muchos sistemas de archivos reservaron un número fijo de inodes cuando se crea el sistema de archivos, lo que significa que puede tener como máximo esa cantidad de archivos en el sistema de archivos. El número de inodos es un compromiso entre el espacio utilizado por los inodos y la capacidad de crear muchos archivos. Si no hay más espacio en el sistema de archivos, entonces no puede hacer crecer los archivos existentes o crear archivos nuevos (quizás aún pueda crear algunos archivos vacíos en los directorios existentes, siempre que solo estén llenando bloques parcialmente utilizados y no que requiere que se asigne un nuevo bloque). Si no hay más inodo libre, puede hacer crecer los archivos existentes pero no puede crear un nuevo archivo.

El núcleo informa el mismo error a las aplicaciones si un sistema de archivos está lleno debido a la falta de espacio de datos o debido a la falta de inodos. Por lo tanto, puede obtener un error de "disco lleno" incluso si queda algo de espacio de datos, si la operación requiere un nuevo inodo y la tabla de inodo está llena. Ejecute df -ipara saber cuántos inodos se usan y cuántos quedan.

Gilles 'SO- deja de ser malvado'
fuente
1
  • Un inodo huérfano es aquel que se ha desvinculado pero que aún está abierto en otro proceso. Por ejemplo, ejecutarse tail -f {file}en un shell seguido de rm {file}otro. El sistema de archivos realiza un seguimiento de estos para que puedan limpiarse cuando finalice el proceso.

  • Es perfectamente normal cuando tienes un desmontaje inmundo. Son simplemente archivos que se habían eliminado, pero que aún estaban abiertos cuando se volvió a montar el fs de solo lectura. No son la causa, sino simplemente un síntoma.


Para problemas de inodes, ejecute esta consulta para obtener la lista de la cantidad de inodes que se utilizan en todos los directorios.

for i in `find . -type d `; do echo `ls -a $i | wc -l` $i; done | sort -n

Puede consultar esto y esto para obtener más métodos de verificación.

Rahul
fuente
@ninjacoder puedes consultar mi respuesta actualizada para tu problema de inodo
Rahul