Qual é o número máximo de arquivos que uma pasta Unix pode conter?

20

Qual é o número máximo de arquivos que uma pasta Unix pode conter?

Acho que será o mesmo que o número de arquivos.

    
por Peter Mortensen 26.01.2009 / 02:18

6 respostas

19

Varia de acordo com o sistema de arquivos, link

    
por 26.01.2009 / 02:20
14

Em todos os sistemas de arquivos Unix atuais, um diretório pode conter um número praticamente ilimitado de arquivos. Considerando que "ilimitado" é limitado por espaço em disco e inodes - o que se esgota primeiro.

Com designs de sistema de arquivos mais antigos ( ext2 , UFS , HFS + ) as coisas tendem a ficar lentas se você tiver muitos arquivos em um diretório . Normalmente as coisas começam a ficar dolorosas em torno de 10.000 arquivos. Com sistemas de arquivos mais recentes ( ReiserFS , XFS , ZFS , UFS2 ) você pode ter milhões de arquivos em um diretório sem ver gargalos gerais de desempenho.

Mas ter muitos arquivos em um diretório não é bem testado e há muitas ferramentas que não dão certo. Por exemplo, scripts periódicos de manutenção do sistema podem interferir.

Eu felizmente usei um diretório com vários milhões de arquivos no UFS2 e não vi nenhum problema até que eu quisesse deletar o diretório - que levou vários DAYS.

    
por 27.01.2009 / 22:23
11

Depende de quantos inodes o sistema de arquivos foi criado. Executando

df -i 

fornecerá o número de inodes gratuitos. Este é o limite prático de quantos arquivos um sistema de arquivos e, portanto, um diretório pode conter.

    
por 26.01.2009 / 03:22
6

Eu presumo que você esteja pensando em armazenar muitos arquivos em um só lugar, não?

A maioria dos sistemas de arquivos Unix modernos pode colocar muito de arquivos em um diretório, mas operações como seguir caminhos, listar arquivos, etc. envolvem uma busca linear na lista de arquivos e ficam lentos se lista cresce muito grande.

Parece que me lembro de ouvir que alguns milhares são muitos para a maioria dos usos práticos. A solução normalmente é quebrar o agrupamento. Isto é,

/some/path/to/dir/a/
/some/path/to/dir/b/
...
/some/path/to/dir/z/

e armazene seus arquivos no subdiretório apropriado de acordo com um hash de seus basename . Escolha um hash conveniente, o primeiro personagem pode fazer para casos simples.

Cristian Ciupitu escreve nos comentários que XFS , e possivelmente outros sistemas de arquivos muito novos, usam log(N) pesquisável estruturas para manter o conteúdo do diretório, então essa restrição é muito melhorada .

    
por 26.01.2009 / 03:07
0

ext3 um dos formatos de sistema de arquivos linux mais comuns fica realmente lento se você tem cerca de 20k + arquivo em um diretório. Independentemente de quantos ele possa conter, você deve tentar evitar ter muitos arquivos em um diretório.

    
por 21.01.2010 / 11:51
0

Do comentário que você deixou, acho que você não se importa com quantos arquivos / pastas seu FS pode hospedar.

Você provavelmente deve considerar usar o ModRewrite e reescrever site.com/usuário para site.com/?user= ou algo do tipo e armazenar todos os seus dados em um banco de dados. Criar uma pasta por usuário geralmente não é necessário (e não é uma boa ideia).

Dito isso, cada sistema de arquivos tem limites e df pode informar quantos inodes estão disponíveis em cada partição do sistema.

    
por 21.01.2010 / 12:48