Qual é o número máximo de arquivos que um sistema de arquivos pode conter?

34

Dada a estrutura atual de uma entrada de diretório em um sistema de arquivos ext4 no Ubuntu, qual é o número máximo de arquivos que um sistema de arquivos pode conter?

Qual é o método geral de calcular o número máximo de arquivos que um sistema de arquivos pode conter?


fonte

Respostas:

37

O ext4 possui um limite teórico de 4 bilhões de arquivos, que é restrito pelo tamanho do número de inode usado para identificar cada arquivo (o ext4 usa números de inode de 32 bits). No entanto, como John diz, ext4 aloca tabelas de inodes estaticamente, portanto o limite real é definido quando o sistema de arquivos é criado.

O comando df mostra uma contagem de inodes gratuitos no seu sistema de arquivos:

$ df -i

Filesystem        iused     ifree  %iused  Mounted on
/dev/disk0s3   55253386  66810480    45%   /
/dev/disk1s3   55258045  66805821    45%   /Volumes/Clone

O Ext4 também suporta um número ilimitado de subdiretórios por diretório, embora possa ter como padrão um limite de 64.000. Isso é configurável - veja o artigo ext4 em Iniciantes no Kernel .

Para obter mais informações, consulte O novo sistema de arquivos ext4: status atual e planos futuros do Simpósio Linux 2007.


fonte
9

Não há um, por si só; depende. Ao criar um sistema de arquivos ext4, você decide o tamanho da tabela de inodes , que, por sua vez, governa o número total de diretórios ou arquivos que o sistema de arquivos pode conter de uma só vez.

John Feminella
fonte
8
você pode executar tune2fs -l /path/to/devicee olhar para o valor de contagem Inode para encontrar qual é o limite para um determinado sistema de arquivos
1
Podemos aumentar a contagem de inodes? Até onde eu sei, os inodes são armazenados como uma lista vinculada, por isso é como adicionar mais nós à lista vinculada. Eu acho que a pergunta se resume a qual pode ser o tamanho máximo de uma lista vinculada?
4
No ext4, a tabela do inode é alocada estaticamente quando o sistema de arquivos é criado. A única maneira de aumentá-lo é recriar o sistema de arquivos. As opções -N ou -i são usadas para definir o número de inodes criados.
1
Também é importante notar que os diretórios são arquivos e devem ser contados como tal.
dmckee
1
Como são os links simbólicos. Não tenho certeza se os dispositivos, FIFOs e soquetes contam ou não.
ephemient
1

Não no Ubuntu, mas no Redhat Linux, comandos básicos, como find, falham com um 'erro de muitos argumentos' quando executados em um diretório que contém 3 milhões de arquivos. O ls é executado com sucesso se nenhum parâmetro for incluído, mas falhará com o mesmo erro assim que os parâmetros do filtro forem adicionados.

Supondo que a confiabilidade de tais comandos básicos seja um requisito obrigatório, sugiro que 3 milhões de arquivos sejam muitos.

John Hadaway
fonte
3
Isso não é uma restrição do sistema de arquivos.
user9517 suporta GoFundMonica
1
Bom ponto! O FS pode apoiá-lo, mas as ferramentas terão cada vez mais dificuldade para lidar com isso.
precisa