Quantos arquivos posso colocar em um diretório?

561

Importa quantos arquivos eu mantenho em um único diretório? Em caso afirmativo, quantos arquivos em um diretório são muitos e quais são os impactos de ter muitos arquivos? (Isso está em um servidor Linux.)

Antecedentes: tenho um site de álbum de fotos e cada imagem carregada é renomeada para um ID de 8 dígitos hexadecimais (digamos, a58f375c.jpg). Isso é para evitar conflitos de nome de arquivo (se muitos arquivos "IMG0001.JPG" forem carregados, por exemplo). O nome do arquivo original e quaisquer metadados úteis são armazenados em um banco de dados. No momento, tenho algo em torno de 1500 arquivos no diretório de imagens. Isso faz com que a listagem dos arquivos no diretório (através do cliente FTP ou SSH) leve alguns segundos. Mas não vejo que isso tenha outro efeito além disso. Em particular, parece não haver impacto na rapidez com que um arquivo de imagem é veiculado para o usuário.

Pensei em reduzir o número de imagens criando 16 subdiretórios: 0-9 e af. Depois, movia as imagens para os subdiretórios com base no primeiro dígito hexadecimal do nome do arquivo. Mas não tenho certeza de que exista alguma razão para fazê-lo, exceto pela listagem ocasional do diretório por FTP / SSH.

Kip
fonte

Respostas:

736

FAT32 :

  • Número máximo de arquivos: 268.173.300
  • Número máximo de arquivos por diretório: 2 16  - 1 (65.535)
  • Tamanho máximo do arquivo: 2 GiB - 1 sem LFS , 4 GiB - 1 com

NTFS :

  • Número máximo de arquivos: 2 32  - 1 (4.294.967.295)
  • Tamanho máximo do arquivo
    • Implementação: 2 44  - 2 6 bytes (16 TiB - 64 KiB)
    • Teórico: 2 64  - 2 6 bytes (16 EiB - 64 KiB)
  • Tamanho máximo do volume
    • Implementação: 2  clusters 32 - 1 (256 TiB - 64 KiB)
    • Teórico: 2 64  - 1 clusters (1 YiB - 64 KB)

ext2 :

  • Número máximo de arquivos: 10 18
  • Número máximo de arquivos por diretório: ~ 1,3 × 10 20 (problemas de desempenho anteriores a 10.000)
  • Tamanho máximo do arquivo
    • 16 GiB (tamanho do bloco de 1 KiB)
    • 256 GiB (tamanho do bloco de 2 KiB)
    • 2 TiB (tamanho do bloco de 4 KiB)
    • 2 TiB (tamanho do bloco de 8 KiB)
  • Tamanho máximo do volume
    • 4 TiB (tamanho do bloco de 1 KiB)
    • 8 TiB (tamanho do bloco de 2 KiB)
    • 16 TiB (tamanho do bloco de 4 KiB)
    • 32 TiB (tamanho do bloco de 8 KiB)

ext3 :

  • Número máximo de arquivos: min (volumeSize / 2 13 , numberOfBlocks)
  • Tamanho máximo do arquivo: igual ao ext2
  • Tamanho máximo do volume: igual ao ext2

ext4 :

  • Número máximo de arquivos: 2 32  - 1 (4.294.967.295)
  • Número máximo de arquivos por diretório: ilimitado
  • Tamanho máximo do arquivo: 2 44  - 1 bytes (16 TiB - 1)
  • Tamanho máximo do volume: 2 48  - 1 bytes (256 TiB - 1)
ISW
fonte
24
Presumo que este seja o número máximo de arquivos para toda a partição, não um diretório. Portanto, essas informações não são muito úteis em relação ao problema, porque haveria um número igual de arquivos, independentemente do método (a menos que você conte os diretórios como arquivos).
213
19
Como estamos em 2012 agora, acho que é hora de deixar claro que o ext4 não tem nenhum limite em relação ao número de subdiretórios. Também o tamanho máximo do arquivo aumentou para 16 TB. Além disso, o tamanho geral do sistema de arquivos pode ser de até 1 EB = 1.048.576 TB.
devsnd
7
Aparentemente, o ext3 também tem um limite de 60.000 arquivos (ou diretórios ou links) por diretório. Eu descobri da maneira mais difícil sobre isso.
stackular
8
Resposta antiga, eu sei ... mas quando você escreve EXT4 - Número máximo de arquivos: 2³² - 1 (4.294.967.295) e Número máximo de arquivos por diretório: ilimitado, você realmente me confundiu porque 2³² - 1! = "Ilimitado". Acho que preciso de um café agora. ;) No entanto, +1
e-sushi
11
limites do sistema de arquivos rígido não respondem à pergunta " Importa quantos arquivos eu mantenho em um único diretório? "
Etki
191

Eu tive mais de 8 milhões de arquivos em um único diretório ext3. libc readdir()usado por find, lse a maioria dos outros métodos discutidos neste tópico para listar diretórios grandes.

A razão lse a findlentidão nesse caso é que readdir()apenas lê 32K de entradas de diretório por vez, portanto, em discos lentos, serão necessárias muitas leituras para listar um diretório. Existe uma solução para esse problema de velocidade. Eu escrevi um artigo bastante detalhado sobre isso em: http://www.olark.com/spw/2011/08/you-can-list-a-directory-with-8-million-files-but-not-with- ls /

A chave é: use getdents()diretamente - http://www.kernel.org/doc/man-pages/online/pages/man2/getdents.2.html em vez de qualquer coisa baseada na libc, readdir()para que você possa especificar o buffer tamanho ao ler entradas de diretório do disco.

Ben
fonte
6
Leitura interessante! Posso perguntar em que situação você tinha 8 milhões de arquivos em um diretório? haha
Aᴄʜᴇʀᴏɴғᴀɪʟ
Eu tive o mesmo Migrei a coluna de blob de uma tabela, cada coluna de blob que exportei como um arquivo. É cerca de 8 milhões de arquivos :)
Pico
65

Eu tenho um diretório com 88.914 arquivos nele. Como você, isso é usado para armazenar miniaturas e em um servidor Linux.

Os arquivos listados via FTP ou uma função php são lentos, sim, mas também há um impacto na exibição do arquivo. por exemplo, www.website.com/thumbdir/gh3hg4h2b4h234b3h2.jpg tem um tempo de espera de 200 a 400 ms. Como comparação em outro site, tenho cerca de 100 arquivos em um diretório, a imagem é exibida após apenas 40ms de espera.

Eu dei essa resposta, já que a maioria das pessoas acabou de escrever sobre o desempenho das funções de pesquisa de diretório, que você não usará em uma pasta miniatura - apenas exibindo arquivos estaticamente, mas estará interessado no desempenho de como os arquivos podem realmente ser usados. .

S ..
fonte
6
Esta é a única resposta útil. Fizemos experiências semelhantes. Nosso limite é de 1.000 arquivos para reduzir problemas com backups (muitos diretórios ficam lentos também).
mgutt
1
Também pode ser útil montar uma unidade com noatime: howtoforge.com/… e ler isso também: serverfault.com/questions/354017/…
mgutt
2
Qual sistema de arquivos você está usando, onde fica mais lento? O XFS, por exemplo, deve ser capaz de manipular facilmente 100.000 arquivos em um diretório, sem nenhum abrandamento perceptível.
Ethan
1
Contrariando a opinião da maioria dos outros, quero confirmar esta resposta. Temos centenas de milhares de imagens em nosso site de rede social. Para melhorar o desempenho, fomos forçados a ter 100 subdiretórios (ou 1000 para alguns arquivos) e distribuir os arquivos neles (ext3 no linux + Apache para nós).
wmac
57

Depende um pouco do sistema de arquivos específico em uso no servidor Linux. Atualmente, o padrão é ext3 com dir_index, o que torna a busca em diretórios grandes muito rápida.

Portanto, a velocidade não deve ser um problema, além do que você já observou, que é que as listagens levarão mais tempo.

Há um limite para o número total de arquivos em um diretório. Parece-me que me lembro definitivamente trabalhando até 32000 arquivos.

Bart Schuller
fonte
4
O Gnome e o KDE carregam diretórios grandes em um ritmo comum, o Windows armazena o diretório em cache, portanto é razoável. Eu amo o Linux, mas o kde e o gnome são mal escritos.
rook
1
E ext4 parece ter o equivalente a dir_index ativado por padrão.
O contrato do Prof. Falken violou
22
Há um limite de cerca de 32 K subdiretórios em um diretório no ext3, mas o OP está falando sobre arquivos de imagem. Não há limite (prático?) Para arquivos em um sistema de arquivos ext3 com o Dir Index ativado.
Peter N Lewis #
1
Esta resposta está desatualizada, atualmente o padrão é ext4 .
Boris
1
"Não há limite (prático?) Para arquivos em um sistema de arquivos ext3 com o Dir Index ativado" - Acabei o espaço no arquivo em um diretório em um sistema de arquivos ext4 de 4 TB, com o recurso dir_indexativado. Eu tinha cerca de 17 milhões de arquivos no diretório. A resposta foi ativar o large_dirtune2fs.
lunixbochs
49

Lembre-se de que, no Linux, se você tiver um diretório com muitos arquivos, o shell poderá não conseguir expandir curingas. Eu tenho esse problema com um álbum de fotos hospedado no Linux. Ele armazena todas as imagens redimensionadas em um único diretório. Enquanto o sistema de arquivos pode lidar com muitos arquivos, o shell não pode. Exemplo:

-shell-3.00$ ls A*
-shell: /bin/ls: Argument list too long

ou

-shell-3.00$ chmod 644 *jpg
-shell: /bin/chmod: Argument list too long
Steve Kuo
fonte
33
@ Steve, use find (1) e / ou xargs (1) para esses casos. Pelo mesmo motivo, é uma boa ideia usar essas ferramentas em scripts, em vez de expandir a linha de comando.
Dave C
3
@ Steve você vê o desempenho diminuindo quando o número de arquivos em uma pasta aumenta? Ou não há relação?
Pacerier
6
Este é um bom ponto, mas, para apontar, a razão apresentada está errada. A lista de argumentos muito longa é uma limitação não do shell, mas da execimplementação do sistema . Normalmente, o shell pode expandir bem o curinga - é a chamada execcom tantos argumentos que retorna o erro.
Jw013
Eu tive o mesmo erro ontem à noite (Fedora 15) com "rm" (alguns arquivos *) com cerca de 400.000 arquivos em um diretório. Consegui cortar os arquivos mais antigos com "find" até o ponto em que eu "rm" com um curinga.
PJ Brunet
10.000.000 arquivos para um diretório no etx4 funcionam bem. Não há muito impacto no desempenho ao acessar. Mas bastante lento com curinga. Tenha cuidado ao usar programas shell que gostam de classificar nomes de arquivos! :)
Simon Rigét
25

Estou trabalhando em um problema semelhante agora. Temos uma estrutura hierárquica de diretórios e usamos IDs de imagem como nomes de arquivos. Por exemplo, uma imagem com id=1234567é colocada em

..../45/67/1234567_<...>.jpg

usando os últimos 4 dígitos para determinar para onde o arquivo vai.

Com alguns milhares de imagens, você pode usar uma hierarquia de um nível. Nosso administrador de sistemas sugeriu não mais do que alguns milhares de arquivos em qualquer diretório (ext3) para eficiência / backup / quaisquer outros motivos que ele tivesse em mente.

armandino
fonte
1
Esta é uma solução bastante agradável. Todos os níveis do diretório até o arquivo teriam no máximo 100 entradas, se você seguisse os dois dígitos, e o diretório mais inferior teria apenas 1 arquivo.
RobKohr
Implementação do PHP: stackoverflow.com/a/29707920/318765
mgutt 19/11/19
21

Para o que vale a pena, eu apenas criei um diretório em um ext4sistema de arquivos com 1.000.000 de arquivos e, em seguida, acessei esses arquivos aleatoriamente através de um servidor web. Eu não notei nenhum prêmio em acessar aqueles com (digamos) apenas 10 arquivos lá.

Isso é radicalmente diferente da minha experiência em fazer isso ntfshá alguns anos atrás.

TJ Crowder
fonte
que tipo de arquivos? ? texto ou imagens estou no ext4 e tem que importar 80000 imagens em um único diretório sob wordpress e gostaria de saber se ele vai ficar bem
Yvon Huynh
1
@YvonHuynh: O tipo de arquivo é completamente irrelevante. A sobrecarga no diretório de listagem / rastreamento do arquivo é a mesma, independentemente.
TJ Crowder
14

O maior problema que encontrei é em um sistema de 32 bits. Depois de passar um certo número, ferramentas como 'ls' param de funcionar.

Tentar fazer qualquer coisa com esse diretório depois de ultrapassar essa barreira se torna um grande problema.

Mike Paterson
fonte
9

Eu estou tendo o mesmo problema. Tentando armazenar milhões de arquivos em um servidor Ubuntu no ext4. Acabei de executar meus próprios benchmarks. Descobriu que o diretório simples tem um desempenho muito melhor e é muito mais simples de usar:

referência

Escreveu um artigo .

Hartator
fonte
Um link para uma solução é bem-vindo, mas garanta que sua resposta seja útil sem ela: adicione contexto ao link para que seus colegas usuários tenham uma idéia do que é e por que está lá; depois cite a parte mais relevante da página que você ' reencaminhando para o caso de a página de destino não estar disponível. Respostas que são pouco mais que um link podem ser excluídas.
Samuel Liew
1
Interessante. Descobrimos que, depois de 10.000 arquivos, o desempenho diminuiu muito rapidamente, a ponto de ficar inutilizável. Decidimos dividir os arquivos em subdiretórios de cerca de 100 em cada nível para obter o desempenho ideal. Acho que a moral da história é sempre compará-la com você em seus próprios sistemas e com seus próprios requisitos.
Joshua Pinter
7

Se o tempo envolvido na implementação de um esquema de particionamento de diretório for mínimo, eu sou a favor. Na primeira vez em que você precisar depurar um problema que envolva a manipulação de um diretório de 10000 arquivos por meio do console, você entenderá.

Como exemplo, o F-Spot armazena arquivos de fotos como AAAA \ MM \ DD \ filename.ext, o que significa que o maior diretório com o qual tive que lidar ao manipular manualmente minha coleção de ~ 20000 fotos é de cerca de 800 arquivos. Isso também torna os arquivos mais facilmente navegáveis ​​a partir de um aplicativo de terceiros. Nunca assuma que o seu software é a única coisa que acessará os arquivos do seu software.

Sparr
fonte
6
Anuncio o particionamento por data, porque as importações em massa podem agrupar arquivos em uma determinada data.
max
Um bom argumento. Você definitivamente deve considerar seus casos de uso antes de escolher um esquema de particionamento. Por acaso, importo fotos por muitos dias em uma distribuição relativamente ampla, e quando quero manipular as fotos fora da data do F-Spot é a maneira mais fácil de encontrá-las, portanto é uma vitória dupla para mim.
Sparr
7

Depende absolutamente do sistema de arquivos. Muitos sistemas de arquivos modernos usam estruturas de dados decentes para armazenar o conteúdo dos diretórios, mas os sistemas de arquivos mais antigos costumavam adicionar as entradas a uma lista, portanto, recuperar um arquivo era uma operação O (n).

Mesmo se o sistema de arquivos estiver certo, ainda é absolutamente possível que os programas que listam o conteúdo do diretório atrapalhem e façam uma classificação O (n ^ 2), para que, por segurança, eu sempre limite o número de arquivos por diretório para não mais que 500.

Michael Borgwardt
fonte
7

Realmente depende do sistema de arquivos usado e também de alguns sinalizadores.

Por exemplo, o ext3 pode ter muitos milhares de arquivos; mas depois de alguns milhares, costumava ser muito lento. Principalmente ao listar um diretório, mas também ao abrir um único arquivo. Alguns anos atrás, ele ganhou a opção 'htree', que reduziu drasticamente o tempo necessário para obter um inode com um nome de arquivo.

Pessoalmente, uso subdiretórios para manter a maioria dos níveis abaixo de mil itens. No seu caso, eu criaria 256 diretórios, com os dois últimos dígitos hexadecimais do ID. Use os últimos e não os primeiros dígitos, para equilibrar a carga.

Javier
fonte
6
Se os nomes dos arquivos fossem completamente aleatórios, não importaria quais dígitos foram usados.
Strager 21/01/09
Na verdade, esses nomes de arquivos são gerados aleatoriamente.
Kip
2
Ou use os primeiros N bytes do resumo SHA-1 do nome do arquivo.
Gawi
6

de fato, o ext3 possui limites de tamanho de diretório e eles dependem do tamanho do bloco do sistema de arquivos. Não há um "número máximo de arquivos" por diretório, mas um "número máximo de blocos por diretório usado para armazenar entradas de arquivos". Especificamente, o tamanho do diretório em si não pode crescer além de uma árvore b de altura 3, e o fanout da árvore depende do tamanho do bloco. Veja este link para alguns detalhes.

https://www.mail-archive.com/[email protected]/msg01944.html

Fui mordido por isso recentemente em um sistema de arquivos formatado com blocos de 2K, que estava inexplicavelmente recebendo mensagens do kernel com diretório completo warning: ext3_dx_add_entry: Directory index full!quando eu estava copiando de outro sistema de arquivos ext3. No meu caso, um diretório com apenas 480.000 arquivos não pôde ser copiado para o destino.

sem data
fonte
5

A questão se resume ao que você fará com os arquivos.

No Windows, qualquer diretório com mais de 2k arquivos tende a abrir lentamente para mim no Explorer. Se forem todos arquivos de imagem, mais de 1k tendem a abrir muito lentamente na visualização em miniatura.

Ao mesmo tempo, o limite imposto pelo sistema era de 32.767. Agora está mais alto, mas mesmo assim há muitos arquivos para manipular ao mesmo tempo na maioria das circunstâncias.

Sim - aquele Jake.
fonte
5

O que a maioria das respostas acima não mostra é que não há uma resposta "tamanho único para todos" à pergunta original.

No ambiente atual, temos um grande conglomerado de diferentes hardwares e softwares - alguns de 32 bits, outros de 64 bits, outros de ponta e outros testados e verdadeiros - confiáveis ​​e nunca mudando. Além disso, há uma variedade de hardware mais antigo e mais recente, sistemas operacionais mais antigos e mais novos, diferentes fornecedores (Windows, Unixes, Apple etc.) e uma infinidade de utilitários e servidores que acompanham. À medida que o hardware melhorou e o software foi convertido para compatibilidade de 64 bits, houve necessariamente um atraso considerável em fazer com que todas as partes deste mundo muito grande e complexo funcionassem bem com o ritmo acelerado das mudanças.

IMHO não há uma maneira de corrigir um problema. A solução é pesquisar as possibilidades e, por tentativa e erro, encontrar o que funciona melhor para suas necessidades específicas. Cada usuário deve determinar o que funciona para o sistema em vez de usar uma abordagem de cortador de biscoitos.

Por exemplo, tenho um servidor de mídia com alguns arquivos muito grandes. O resultado é apenas cerca de 400 arquivos preenchendo uma unidade de 3 TB. Apenas 1% dos inodes são usados, mas 95% do espaço total é usado. Outra pessoa, com muitos arquivos menores, pode ficar sem inodes antes que cheguem perto de preencher o espaço. (Como regra geral, nos sistemas de arquivos ext4, é utilizado 1 inode para cada arquivo / diretório.) Embora teoricamente o número total de arquivos que possam estar contidos em um diretório seja quase infinito, a praticidade determina que o uso geral determine unidades realistas, não apenas recursos do sistema de arquivos.

Espero que todas as diferentes respostas acima tenham promovido o pensamento e a solução de problemas, em vez de apresentar uma barreira insuperável ao progresso.

Computersavvy
fonte
4

Lembro-me de executar um programa que estava criando uma enorme quantidade de arquivos na saída. Os arquivos foram classificados em 30000 por diretório. Não me lembro de ter problemas de leitura quando tive que reutilizar a saída produzida. Ele estava em um laptop Ubuntu Linux de 32 bits e até o Nautilus exibiu o conteúdo do diretório, embora depois de alguns segundos.

sistema de arquivos ext3: código semelhante em um sistema de 64 bits lida bem com 64000 arquivos por diretório.

user54579
fonte
4

"Depende do sistema de arquivos"
Alguns usuários mencionaram que o impacto no desempenho depende do sistema de arquivos usado. Claro. Sistemas de arquivos como o EXT3 podem ser muito lentos. Mas mesmo se você usar EXT4 ou XFS você não pode impedir que o listando uma pasta através de lsou findou através de uma conexão externa como FTP vai se tornar mais lenta uma mais lenta.

Solução
Prefiro da mesma maneira que @armandino . Para isso, uso essa pequena função no PHP para converter IDs em um caminho de arquivo que resulta em 1000 arquivos por diretório:

function dynamic_path($int) {
    // 1000 = 1000 files per dir
    // 10000 = 10000 files per dir
    // 2 = 100 dirs per dir
    // 3 = 1000 dirs per dir
    return implode('/', str_split(intval($int / 1000), 2)) . '/';
}

ou você pode usar a segunda versão se desejar usar caracteres alfanuméricos:

function dynamic_path2($str) {
    // 26 alpha + 10 num + 3 special chars (._-) = 39 combinations
    // -1 = 39^2 = 1521 files per dir
    // -2 = 39^3 = 59319 files per dir (if every combination exists)
    $left = substr($str, 0, -1);
    return implode('/', str_split($left ? $left : $str[0], 2)) . '/';
}

resultados:

<?php
$files = explode(',', '1.jpg,12.jpg,123.jpg,999.jpg,1000.jpg,1234.jpg,1999.jpg,2000.jpg,12345.jpg,123456.jpg,1234567.jpg,12345678.jpg,123456789.jpg');
foreach ($files as $file) {
    echo dynamic_path(basename($file, '.jpg')) . $file . PHP_EOL;
}
?>

1/1.jpg
1/12.jpg
1/123.jpg
1/999.jpg
1/1000.jpg
2/1234.jpg
2/1999.jpg
2/2000.jpg
13/12345.jpg
12/4/123456.jpg
12/35/1234567.jpg
12/34/6/12345678.jpg
12/34/57/123456789.jpg

<?php
$files = array_merge($files, explode(',', 'a.jpg,b.jpg,ab.jpg,abc.jpg,ddd.jpg,af_ff.jpg,abcd.jpg,akkk.jpg,bf.ff.jpg,abc-de.jpg,abcdef.jpg,abcdefg.jpg,abcdefgh.jpg,abcdefghi.jpg'));
foreach ($files as $file) {
    echo dynamic_path2(basename($file, '.jpg')) . $file . PHP_EOL;
}
?>

1/1.jpg
1/12.jpg
12/123.jpg
99/999.jpg
10/0/1000.jpg
12/3/1234.jpg
19/9/1999.jpg
20/0/2000.jpg
12/34/12345.jpg
12/34/5/123456.jpg
12/34/56/1234567.jpg
12/34/56/7/12345678.jpg
12/34/56/78/123456789.jpg
a/a.jpg
b/b.jpg
a/ab.jpg
ab/abc.jpg
dd/ddd.jpg
af/_f/af_ff.jpg
ab/c/abcd.jpg
ak/k/akkk.jpg
bf/.f/bf.ff.jpg
ab/c-/d/abc-de.jpg
ab/cd/e/abcdef.jpg
ab/cd/ef/abcdefg.jpg
ab/cd/ef/g/abcdefgh.jpg
ab/cd/ef/gh/abcdefghi.jpg

Como você pode ver na $intversão -, cada pasta contém até 1000 arquivos e até 99 diretórios, contendo 1000 arquivos e 99 diretórios ...

Mas não esqueça que muitos diretórios causam os mesmos problemas de desempenho!

Finalmente, você deve pensar em como reduzir a quantidade de arquivos no total. Dependendo do seu objetivo, você pode usar sprites CSS para combinar várias imagens minúsculas, como avatares, ícones, smilies, etc. No meu caso, eu tinha milhares de mini-caches e finalmente decidi combiná-los em pacotes de 10.

mgutt
fonte
3

Respeito que isso não responda totalmente à sua pergunta sobre quantos são demais, mas uma idéia para resolver o problema a longo prazo é que, além de armazenar os metadados do arquivo original, também armazene em qual pasta do disco está armazenada - normalize fora esse pedaço de metadados. Depois que uma pasta cresce além de algum limite, você se sente à vontade para desempenho, estética ou qualquer outra razão, basta criar uma segunda pasta e começar a soltar arquivos lá ...

Goyuix
fonte
3

Eu tive um problema semelhante. Eu estava tentando acessar um diretório com mais de 10.000 arquivos. Estava demorando muito para criar a lista de arquivos e executar qualquer tipo de comando em qualquer um dos arquivos.

Pensei em um pequeno script php para fazer isso por mim mesmo e tentei descobrir uma maneira de impedir que o tempo acabasse no navegador.

A seguir está o script php que escrevi para resolver o problema.

Listando arquivos em um diretório com muitos arquivos para FTP

Como isso ajuda alguém

Swhistlesoft
fonte
1

Não é uma resposta, mas apenas algumas sugestões.

Selecione um FS (sistema de arquivos) mais adequado. Desde um ponto de vista histórico, todos os seus problemas foram sábios o suficiente para ser uma vez central para os FSs evoluindo ao longo de décadas. Quero dizer, o FS mais moderno suporta melhor seus problemas. Primeiro, faça uma tabela de decisão de comparação com base no seu objetivo final da lista FS .

Eu acho que é hora de mudar seus paradigmas. Então, eu pessoalmente sugiro o uso de um FS com reconhecimento de sistema distribuído , o que significa que não há limites em relação ao tamanho, número de arquivos e etc. Caso contrário, mais cedo ou mais tarde você será desafiado por novos problemas imprevistos.

Não tenho certeza se vou funcionar, mas se você não mencionar algumas experiências, experimente o AUFS no sistema de arquivos atual. Eu acho que ele tem facilidades para imitar várias pastas como uma única pasta virtual.

Para superar os limites de hardware, você pode usar o RAID-0.

shvahabi
fonte
1

Não existe um número único que seja "demais", desde que não exceda os limites do sistema operacional. No entanto, quanto mais arquivos em um diretório, independentemente do sistema operacional, mais tempo leva para acessar qualquer arquivo individual e, na maioria dos sistemas operacionais, o desempenho é não linear; portanto, encontrar um arquivo entre 10.000 leva mais que 10 vezes mais em seguida, para encontrar um arquivo em 1.000.

Problemas secundários associados a muitos arquivos em um diretório incluem falhas de expansão de curinga. Para reduzir os riscos, considere solicitar seus diretórios por data de upload ou algum outro pedaço útil de metadado.

Paul Smith
fonte