Linux - ¡Ayuda, me estoy quedando sin inodos!

16

Tengo un sistema de archivos que tiene muchos archivos pequeños. Actualmente se usa aproximadamente el 80% de los inodos (lo comprobé con df -i), sin embargo, solo se usa el 60% del espacio en disco. ¿Cómo puedo 'aumentar' el número de inodes? Si fuera solo espacio en disco, sé que podría aumentar el tamaño del disco (este disco está en LVM). Si aumento el tamaño del disco, ¿eso me hará tener más inodes?

Estoy dispuesto a hacer crecer el sistema de archivos en el que se encuentra este disco, si eso ayuda.

Rory
fuente

Respuestas:

14

hombre mke2fs

Verá un -N para el número de inodes

Entonces puede especificarlo cuando formatea una nueva partición. No es tan útil en este momento, ¿eh?

tune2fs, que ajusta el sistema de archivos, no parece tener una forma de agregar más inodos.

Pero tal vez ext3 o 4 hace esto, y alguien más sabe ...?

Entonces ahora tiene una opción: copia de seguridad, formatear partición, restaurar.

Pablo
fuente
1
Sí, es bueno, pero no porque sea reiserfs, sino porque es la asignación de soporte dinámico de nodo-i (con el apoyo de todos los decentemente nuevo sistema de archivos)
1
Reiser es excelente para toneladas de pequeños archivos pequeños. Yo iría con eso.
Xorlev
Sin embargo, me aseguraría de que tenga copias de seguridad cuando use Reiser. Yo (yo) y otros hemos perdido datos debido a reiserFS en los años anteriores. Ya no confío en eso desde entonces.
Anony-Mousse -Reinstale a Monica el
ext3 parece no tener forma de hacerlo
kagali-san
15

Para responder la pregunta original, aunque probablemente sea tarde para el interrogador, sí, aumentar EXT2 / 3 en LVM2 también aumentará el límite de inodes.

Solo tenía una partición de tamaño 1G con un límite de inodes de 65k. Después

lvextend -L+1G /dev/vg/var
umount /var
resize2fs /dev/vg/var
mount /var

... mi límite de inodes ahora es 128k.

Aleš Krajník
fuente
1
Wow, estaba casi desesperado, pero encontré tu respuesta y decidí intentarlo, y funcionó. ¡Esta definitivamente debería ser la respuesta aceptada! Funciona tanto para LVM como para máquinas virtuales :)
vadipp
12

Si sabía que los archivos pequeños consumirán su espacio en el disco, debería haber usado un FS con asignación dinámica de inodo, como ReiserFS o cualquier FS moderno nuevo (XFS, JFS) en lugar de EXT2 / 3/4 (que supongo que está usando , no dijiste eso).

Una migración del sistema de archivos es probablemente una buena opción en su situación.

Comunidad
fuente
1
Si sabía que los archivos pequeños ocuparán su espacio en el disco, debería haber hecho algunos ajustes . Cada sistema de archivos tiene pros y contras.
Franklin Piat
3

Como un recurso provisional, monte un nuevo sistema de archivos y cp / rm / ln-s parte de su jerarquía fs allí. ¡Ahora tiene algunos inodos de repuesto! No puede mover archivos entre los dos fses, así que tenga cuidado de romper cosas que necesitan hacer eso, pero para muchas aplicaciones esto puede ser transparente.

Luego haga un nuevo fs, según el consejo de Paul, y migre a eso.

Charles Stewart
fuente
1
Por supuesto, puede crear archivos mv entre los dos sistemas de archivos: un mv es efectivamente el azúcar semántico para cp + rm. No se puede vincular entre dos sistemas de archivos. ¿Querías decir otra cosa?
Daniel Lawson
@Daniel: Me refiero a la llamada al sistema rename (), y creo que es una práctica descuidada usar mv como azúcar para cp / rm, debido al problema con la semántica en torno a los enlaces simbólicos. Debería editar esta respuesta: hay algunos lugares que no son muy claros.
Charles Stewart
2

Ext4 sufre el mismo problema, si crea una pequeña partición y tiene una tonelada de archivos pequeños, se quedará sin inodos, y si tiene flex_bgcaracterísticas que no puede usar tune2fspara aumentar los inodos.

Personalmente, iría con ext4 sobre cualquier versión de rieserfs, solo haga lo siguiente al formatear:

mkfs.ext4 -I 512 /dev/foo
tune2fs -i0 -c0 -o journal_data_writeback /dev/foo

Formatear de esta manera le dará 33160 inodes en una partición de arranque de 512M.

Digo esto como alguien que usó reiserfs durante años, el soporte del kernel no es tan bueno como ext *, y el sistema de archivos se fragmenta con el tiempo y se vuelve lento.

Suicida
fuente
-1

Ir a resiserfs o cualquier otro fs sin limitación de inodo. Especialmente con respecto a los archivos de registro, probablemente podría empaquetar algunas toneladas de pequeños archivos no utilizados en un archivo tar más grande para liberar una buena cantidad de inodes =)

$ find /path -iname "pattern" | xargs tar rvf output_file.tar
adrolmar
fuente