Máximo de arquivos totais em um diretório no FreeBSD 6 ufs?

3

Existe um limite máximo para o número total de arquivos armazenados em um único subdiretório no FreeBSD 6?

O sistema de arquivos é o ufs

    
por Ian 12.08.2009 / 22:12

5 respostas

3

Isso foi discutido na lista freebsd-questions em novembro de 2008. Para citar Erik Trulsson :

Each i-node on the disk contains a field telling how many hard-links point to that inode. This field is a (signed) 16-bit value, meaning the maximum number of hardlinks allowed is 32767. Each subdirectory created contains a hardlink ('..') to its parent, thus limiting the number of subdirectories to a single directory to less than 32767.

Note that this does not limit the number of files you can have in a single directory, since normal files do not contain hardlinks to the parent directory, but there are of course limits to the total number of files and directories you can have on a single filesystem based on how many inodes were created when the filesystem was first created.

( Mensagem completa , start of thread )

Estes são limites teóricos; como discutido acima, você começará a ter problemas de desempenho bem antes de atingir qualquer limite.

    
por 13.08.2009 / 08:53
1

Eu fiz algumas coisas com o freebsd 6.x que envolvia um grande número de arquivos (50.000+) e não me lembro de nenhuma limitação específica. Uma verificação rápida em um sistema 7.2 mostra que o limite está bem acima de 100.000. O processo ainda está em execução a partir de agora, quando falhar, informarei qual é o limite máximo para 7.2, o que provavelmente é semelhante a 6.x.

Dito isso, você vê um enorme impacto no desempenho em cerca de 30.000 entradas de diretório ao criar novos arquivos / diretórios. Nesse ponto, as pessoas começam a criar arquivos com o nome HashOfName / name, em vez de apenas o nome, para facilitar as pesquisas.

    
por 12.08.2009 / 22:21
1

Eu esperaria que esse número variasse com base no tipo de sistema de arquivos envolvido.

    
por 12.08.2009 / 22:30
1

Sua pergunta já foi respondida, então apenas uma pequena dica de desempenho: Se você tiver muitos arquivos pequenos, você deve aumentar vfs.ufs.dirhash_maxmem, o padrão 2MB é muito pequeno para milhares de arquivos.

Eu tenho essa linha no meu /etc/sysctl.conf

vfs.ufs.dirhash_maxmem=67108864

Você pode ler sobre o dirhash aqui ( melhorias do UFS @ BSDCON ) e aqui (< a href="http://en.wikipedia.org/wiki/Dirhash"> Wiki )

    
por 17.08.2009 / 14:35
1

O total de inodes são os limites do total de arquivos que você pode colocar em um diretório. Os inodes totais são criados quando você formata seu disco rígido. Você pode criar mais inode usando tamanho pequeno de segmentos. Veja man newfs para detalhes.

O vfs.ufs.dirhash_maxmem é para a memória usada para manter os nomes de diretório em um diretório. Isso afeta apenas o desempenho, limitações de nada. Se você tiver mais memória, faça-a maior, caso contrário não a incomode.

    
por 01.01.2010 / 06:54