Existe algum problema com muitas entradas em um diretório?

1

Temos um sistema que usa o Jira, e o Jira armazena anexos de tickets em /opt/jira/jiraattachments . Sob esse diretório está o nome do projeto RRT e, sob esse, existe um diretório de tickets. Assim, o ticket RRT1234 tem seus anexos em:

/opt/jira/jiraattachments/RRT/RRT1234

Temos um sistema de monitoramento que dispara um alerta quando há mais de 30.000 itens no diretório /opt/jira/jiraattachments/RRT . Considerando que temos 900.000 ingressos Jira, isso não é realmente uma surpresa.

Em um nível de programação, não vejo realmente um problema. Jira não abre o diretório inteiro e mantém todos esses diretórios abertos. Na verdade, a estrutura é organizada para que Jira possa encontrar imediatamente o diretório que contém os anexos.

No entanto, em um nível de sistema operacional, há um problema com um único diretório contendo mais de 32 mil arquivos? Eu posso ver problemas ao escrever scripts de shell e tentar analisar muitos arquivos. Eu posso ver problemas com ls tentando ler e classificar todos esses arquivos. Sei que nos dias do MS-DOS 2.x, um diretório não poderia ter mais de 512 entradas. Mas não estamos mais na era do disco. Não consigo ver um SO tropeçando em algo assim.

$ uname -r
2.6.18-238.el5

$ df -kT .
Filesystem    Type   1K-blocks      Used Available Use% Mounted on
10.10.136.125:/vol/jira_prod
               nfs    83886080  58621352  25264728  70% /jira_prod
    
por David W. 29.07.2013 / 19:51

1 resposta

4

Eu não posso explicar totalmente a sua lógica, mas posso dizer que o ext3 tem um 32000 limite de subdiretório . Ele pode acomodar facilmente arquivos de 1 / 4M em um diretório, dependendo mais do seu servidor. Listar / classificar através da direção é obviamente caro, mas não há mecanismo que evite "custos" mais altos de pesquisa mesmo quando você sabe o nome do arquivo (os índices melhoram o desempenho, mas não resolvem todos os problemas).

Como seria de esperar, as penalidades de desempenho pioram com o tamanho. A maioria das recomendações é manter menos de 15 a 25 mil arquivos por diretório. Se você não estiver vendo nenhum problema de desempenho, eu não me preocuparia com isso. O sistema de arquivos não irá implodir, apenas ficará mais lento para cada arquivo adicionado.

    
por 29.07.2013 / 20:39