2010-09-01 56 views
20

Necesito crear una gran cantidad de archivos que no son muy grandes (como 4kb, 8kb). No es posible en mi equipo causa que se necesita todos los nodos-i hasta el 100% y no puede crear más archivos:¿Cuántos bytes por inodos?

$ df -i /dev/sda5 
Filesystem   Inodes IUsed IFree IUse% Mounted on 
/dev/sda5   54362112 36381206 17980906 67% /scratch 

(I comenzó la eliminación de archivos, es por eso que es ahora 67%)

El bytes- per-nodos son de 256 en mi sistema de archivos (ext4)

$ sudo tune2fs -l /dev/sda5 | grep Inode 
Inode count:    54362112 
Inodes per group:   8192 
Inode blocks per group: 512 
Inode size:    256 

me pregunto si es posible ajustar este valor muy bajo incluso por debajo de 128 (durante transformando los). En caso afirmativo, ¿qué valor debería usar? Thx

+2

El 'tamaño de Inode' no es lo mismo que bytes-por-inode. El 'tamaño de inode' es simplemente la cantidad (número de bytes) de datos que cada inodo puede contener, mientras que los bytes por inodo se refieren a la relación de inodos con respecto al espacio de disco. Ambos valores son independientes. –

Respuesta

24

El defecto por inode suele 16384, que es el valor por defecto en inode_ratio/etc/mke2fs.conf (que se lee antes de la creación del sistema de ficheros). Si se está acabando de nodos, puede probar, por ejemplo:

mkfs.ext4 -i 8192 /dev/mapper/main-var2 

Otra opción que afecta a esta -T es, por lo general -T news que reduce aún más que en 4096.

Además, no se puede cambiar el número de inodos en un sistema de archivos ext3 o ext4 sin volver a crearlo o editarlo hexagonalmente. Los sistemas de archivos Reiser son dinámicos, por lo que nunca tendrá problemas con ellos.

+4

¿Cómo determino el valor actual de bytes por inodo para un sistema de archivos? Tu comando funcionó, pero ¿hay algún valor en la salida de tune2fs que muestre la relación? –

+1

Solo quería comentar que puede verificar/cambiar el valor predeterminado en '/ etc/mke2fs.conf' en Red Hat y derivadas. –

-7

he encontrado la solución a mi problema en la página mke2fs hombre:

-I-i-nodo tamaño

Especificar el tamaño de cada nodo-i en bytes. mke2fs crea inodos de 256 bytes de forma predeterminada. En kernels posteriores a 2.6.10 y algunos kernels de proveedores anteriores, es posible utilizar inodos de más de 128 bytes para almacenar los atributos extendidos para un mejor rendimiento. El valor del tamaño del inodo debe ser una potencia de 2 mayor o igual a 128. Cuanto mayor sea el tamaño de inodo , más espacio consumirá la tabla de inodo, y esto reduce el espacio utilizable en el sistema de archivos y también puede afectar negativamente el rendimiento. Los atributos extendidos almacenados en inodos grandes no son visibles con núcleos más antiguos, y tales sistemas de archivos no se podrán montar con núcleos 2.4 en absoluto. No es posible cambiar este valor después de que se crea el sistema de archivos.

El máximo que podrá establecer viene dado por su tamaño de bloque.

sudo tune2fs -l /dev/sda5 | grep "Block size" 
Block size:    4096 

Esperamos que esto pueda ayudar .... bytes

+6

El tamaño de inodo ('-I') es algo diferente de la configuración de bytes-por-inode (' -i'). El tamaño del inodo determina el tamaño de un solo inodo, los inodos más grandes pueden contener más punteros a los bloques, lo que reduce la necesidad de bloques indirectos a costa de un mayor uso del disco.La configuración de bytes por inodo establece una relación que se utilizará para determinar la cantidad máxima de inodos. Ninguno de estos dos valores se puede cambiar después de que se haya creado el sistema de archivos. – Tader

8

Puede averiguar la relación aproximada de inodo dividiendo el tamaño del espacio disponible por el número de inodos disponibles. Por ejemplo:

$ sudo tune2fs -l /dev/sda1 | awk -F: ' \ 
    /^Block count:/ { blocks = $2 } \ 
    /^Inode count:/ { inodes = $2 } \ 
    /^Block size:/ { block_size = $2 } \ 
    END { blocks_per_inode = blocks/inodes; \ 
      print "blocks per inode:\t", blocks_per_inode, \ 
       "\nbytes per inode:\t", blocks_per_inode * block_size }' 

blocks per inode: 3.99759 
bytes per inode:  16374.1 
+0

Si obtiene un error como "tune2fs: Número mágico malo en super-bloque mientras intenta abrir/dev/sda3" intente ejecutar "blkid". El sistema de archivos real que necesitaba usar era "/ dev/mapper/myubuntu - vg-root". – jamshid

Cuestiones relacionadas