Tuve un problema (nuevo para mí) la semana pasada. Tengo un sistema de archivos ext4 (Fedora 15). La aplicación que se ejecuta en el servidor se detuvo de repente. No pude encontrar el problema a primera vista.
df
mostró 50% de espacio disponible. Después de buscar durante aproximadamente una hora, vi una publicación en el foro donde usaba el tipo df -i
. La opción busca el uso de inodes. El sistema estaba sin inodos, un problema simple que no me di cuenta. La partición tenía solo 3.2M inodos.
Ahora, mis preguntas son: ¿Puedo hacer que el sistema tenga más inodos? ¿Debe / puede establecerse al formatear el disco? Con los inodos de 3.2M, ¿cuántos archivos podría tener?
Respuestas:
Parece que tiene muchos más archivos de lo esperado.
No sé si hay una solución para cambiar el tamaño de la tabla de inodo dinámicamente. Me temo que necesita hacer una copia de seguridad de sus datos, crear un nuevo sistema de archivos y restaurar sus datos.
Para crear un nuevo sistema de archivos con una tabla de inodos tan grande, debe usar la opción '-N' de mke2fs (8).
Recomiendo usar primero la opción '-n' (que no crea la fs, pero muestra la información útil) para que pueda obtener el número estimado de inodes. Luego, si es necesario, use '-N' para crear su sistema de archivos con un número de inodo específico.
fuente
mke2fs -i
para especificar el número de inodes. Su documentación indica que "no es posible expandir el número de inodos en un sistema de archivos después de que se crea".-i
opciones especifican el tamaño del inodo, no cuántos hay. La-N
opción establece el número de inodos.Como otra solución alternativa, podría sugerir considerar empaquetar grandes colecciones de archivos en un
tar
archivo comprimido (!) Y luego usarloarchivemount
para montarlo como un sistema de archivos. Un archivo tar es mejor para compartir que una imagen del sistema de archivos y proporciona un rendimiento similar al realizar copias de seguridad en una nube u otro almacenamiento.Si se supone que la colección es de solo lectura,
squashfs
puede ser una opción, pero requiere ciertas opciones habilitadas en el kernel, y laxz
compresión está disponible para tar también con el mismo rendimiento.fuente
Con 3,2 millones de inodes, puedes tener 3,2 millones de archivos y directorios, en total (pero los enlaces duros múltiples a un archivo solo usan un inodo).
Sí, se puede configurar al crear un sistema de archivos en la partición. Las opciones
-T usage-type
,-N number-of-inodes
o-i bytes-per-inode
pueden establecer el número de inodos. Generalmente uso-i
, después de comparar la salida dedu -s
yfind | wc -l
para una colección similar de archivos y permitir un poco de holgura.No, no se puede cambiar in situ en un sistema de archivos existente. Sin embargo:
resize2fs
para expandir el sistema de archivos. Esto agrega más inodos en proporción al espacio agregado, aproximadamente. Si desea evitar quedarse sin inodos antes del espacio, suponiendo que los archivos futuros en promedio tengan aproximadamente el mismo tamaño, establezca un porcentaje de bloque reservado lo suficientemente alto usandotune2fs -m
.fuente
Tengo soluciones alternativas para esta situación. Digamos que tienes 1000 inodos en una partición de 10G. Pero debido al límite de inodes no se supone que use todo el espacio de partición . Pero en estas soluciones podrá utilizar el espacio restante de la partición sin formatearla .
para montaje permanente
fuente
$
) para distinguir claramente entre comandos y resultados (si solo fueran comandos, el prompt normalmente se omite). También cambié los GRITOS en el énfasis de la fase en negrita, que es lo que creo que pretendías. Puede revertir los cambios si tergiversé las cosasRecientemente me encontré con este problema al usar apt o aptitude upgrade.
Comando emitido:
Revelado, la mayoría de los archivos estaban en subcarpetas para varias versiones de kernel dentro de:
Se eliminaron esas subcarpetas y se solucionó el problema del inodo.
fuente
du
comando. El uso es para la raíz del sistema de archivos en el ejemplo anterior, mirando solo el espacio. La salida se canaliza para ordenar para mostrar qué directorios contienen la mayoría de los archivos. No se realizó un recuento en el ejemplo anterior para los archivos, la parte de "cuántos archivos" de su pregunta. Sindu
embargo, los de origen del núcleo fueron los culpables que se muestran en la salida; por ejemplo, muchos archivos pequeños, subcarpetas de compilaciones pasadas, lo que es ideal para eliminar con el fin de liberar inodos. Todavía queda un manual, la revisión humana de ladu
salida,/usr/src/linux-headers
era entonces obvia.pruebe
du -s --inodes * 2>/dev/null |sort -g
el cd en el último directorio de salida y repita.Divulgación completa: no todos los sistemas operativos son compatibles
--inodes
con el comando du command (mi Mac OS no), pero muchos sistemas operativos Linux sí.fuente