ext4 file-system max limite de inode - alguém pode, por favor, explicar?

15

Recentemente tivemos um problema em que um dos sistemas de arquivos ext4 parecia incapaz de lidar com um grande número de arquivos, more than 6mln in this case , apesar de ter espaço suficiente. É 6mln o número máximo, um sistema de arquivos ext4 pode ter quando formatado com todas as configurações padrão? Eu tentei o Google, mas não recebi nenhuma resposta definitiva. Alguém aqui fora pode sombrear alguma luz sobre isso, por favor? Felicidades!

    
por MacUsers 08.06.2012 / 10:19

2 respostas

18

Não existe um padrão como tal para o ext4, isso depende do tamanho do dispositivo e das opções escolhidas na criação. Você pode verificar os limites existentes usando

tune2fs -l /path/to/device

Por exemplo,

root@xwing:~# tune2fs -l /dev/sda1
tune2fs 1.42 (29-Nov-2011)
Filesystem volume name:   <none>
Last mounted on:          /

[lots of stuff snipped]

Inode count:              1277952
Free inodes:              1069532
Inodes per group:         8192
Inode blocks per group:   512

[lots of stuff snipped]

Como por man mkfs.ext4

-i bytes-per-inode

Specify the bytes/inode ratio. mke2fs creates an inode for every bytes-per-inode bytes of space on the disk. The larger the bytes-per-inode ratio, the fewer inodes will be created. This value generally shouldn't be smaller than the blocksize of the filesystem, since in that case more inodes would be made than can ever be used. Be warned that it is not possible to expand the number of inodes on a filesystem after it is created, so be careful deciding the correct value for this parameter.

    
por 08.06.2012 / 10:40
6

Depende de como você formatou o sistema de arquivos. Usando tune2fs -l <device> você pode encontrar o número de inodes que seu dispositivo possui, provavelmente cerca de 6 milhões de inodes no seu caso. Todo arquivo ou diretório usa um inode.

Até onde eu sei, a única possibilidade de aumentar o número de inodes é reformatar seu sistema de arquivos. O parâmetro -i para o mkfs pode ser usado para especificar a taxa de bytes / inode. O valor padrão é definido em /etc/mke2fs.conf (no meu sistema: 16384).

Uma razão maior de bytes / inode define menos inodes, um menor mais inodes. Os valores padrão funcionam bem na maioria dos casos, mas se você tem um grande número de arquivos pequenos, você pode correr para o limite e pode precisar formatar o sistema de arquivos com uma pequena razão de bytes / inode.

    
por 08.06.2012 / 10:37