Como o Windows com NTFS funciona com grandes volumes de arquivos e diretórios?
Existe alguma orientação sobre os limites de arquivos ou diretórios que você pode colocar em um único diretório antes de encontrar problemas de desempenho ou outros problemas?
Por exemplo, é bom ter uma pasta com 100.000 pastas dentro dela?
windows
performance
filesystems
ntfs
James Newton-King
fonte
fonte
Respostas:
Aqui estão alguns conselhos de alguém com um ambiente em que temos pastas contendo dezenas de milhões de arquivos.
Para responder sua pergunta mais diretamente: Se você estiver vendo 100 mil entradas, não se preocupe. Vá nocautear. Se você estiver vendo dezenas de milhões de entradas, então:
a) Faça planos para subdividi-los em subpastas (por exemplo, digamos que você tenha arquivos 100M. É melhor armazená-los em 1000 pastas para que você tenha apenas 100.000 arquivos por pasta do que armazená-los em uma pasta grande. criará 1000 índices de pastas em vez de um único grande, com maior probabilidade de atingir o número máximo de fragmentos ou
b) Faça planos para executar contig.exe regularmente para manter o índice da sua grande pasta desfragmentado.
Leia abaixo apenas se você estiver entediado.
O limite real não está no número de fragmento, mas no número de registros do segmento de dados que armazena os ponteiros no fragmento.
Então, o que você tem é um segmento de dados que armazena ponteiros para os fragmentos dos dados do diretório. Os dados do diretório armazenam informações sobre os subdiretórios e subarquivos que o diretório supostamente armazenou. Na verdade, um diretório não "armazena" nada. É apenas um recurso de rastreamento e apresentação que apresenta a ilusão de hierarquia ao usuário, pois o próprio meio de armazenamento é linear.
fonte
contig.exe
, elas não estão no meu servidor. Uma pesquisa no Google retornou esta página do technet que não menciona subdiretórios ou desfragmentação do índice de pastas.contig.exe
para um diretório, eu acho que vai fazer o trabalho:contig -a .
dá:C:\temp\viele-Dateien is in 411 fragments Summary: Number of files processed : 1 Average fragmentation : 411 frags/file
c:\my\big\directory
, ouc:\my\big\directory\*
, or on$mft
? (ou alguma outra coisa?) #Também há problemas de desempenho com a criação de nomes curtos de arquivos, tornando as coisas mais lentas. A Microsoft recomenda desativar a criação de nome de arquivo curto se você tiver mais de 300k arquivos em uma pasta [1]. Quanto menos exclusivos os 6 primeiros caracteres, maior será o problema.
[1] Como o NTFS funciona em http://technet.microsoft.com , procure por "300.000"
fonte
If you use large numbers of files in an NTFS folder (300,000 or more), disable short-file name generation for better performance, and especially if the first six characters of the long file names are similar.
- poupa a pesquisa de "300.000" dica. BTW: digitar "300" será suficiente (= sem necessidade de clipboarding aqui)Estou construindo uma estrutura de arquivos para hospedar até 2 bilhões (2 ^ 32) de arquivos e realizei os seguintes testes que mostram uma queda acentuada no desempenho de navegação + leitura em cerca de 250 arquivos ou 120 diretórios por diretório NTFS em uma unidade de estado sólido ( SSD):
Curiosamente, o número de diretórios e arquivos NÃO interfere significativamente.
Portanto, as lições são:
Estes são os dados (2 medidas para cada arquivo e diretório):
E este é o código de teste:
fonte
100.000 devem ficar bem.
Eu (anedoticamente) vi pessoas tendo problemas com muitos milhões de arquivos e eu também tive problemas com o Explorer por não saber como contar mais de 60 e tantos mil arquivos, mas o NTFS deve ser bom para os volumes que você está falando.
Caso você esteja se perguntando, o número máximo técnico (e espero teórico ) de arquivos é: 4.294.967.295
fonte
Para acesso local, um grande número de diretórios / arquivos não parece ser um problema. No entanto, se você está acessando através de uma rede, há um desempenho notável após algumas centenas (especialmente quando acessado a partir de máquinas Vista (o XP para Windows Server com NTFS parecia correr muito mais rápido nesse sentido)).
fonte
Ao criar uma pasta com N entradas, você cria uma lista de N itens no nível do sistema de arquivos. Esta lista é uma estrutura de dados compartilhada em todo o sistema. Se você começar a modificar essa lista continuamente adicionando / removendo entradas, espero pelo menos alguma contenção de bloqueio nos dados compartilhados. Essa afirmação - teoricamente - pode afetar negativamente o desempenho.
Para cenários somente leitura, não consigo imaginar nenhum motivo para degradação do desempenho de diretórios com grande número de entradas.
fonte
Eu tinha experiência real com cerca de 100.000 arquivos (cada um com vários MBs) em NTFS em um diretório enquanto copiava uma biblioteca online.
Demora cerca de 15 minutos para abrir o diretório com o Explorer ou 7-zip.
Escrever uma cópia do site
winhttrack
sempre ficará bloqueado após algum tempo. Também tratou do diretório, contendo cerca de 1 000 000 arquivos. Eu acho que o pior é que a MFT só pode ser percorrida sequencialmente.Abrir o mesmo em ext2fsd no ext3 deu quase o mesmo tempo. Provavelmente, mudar para reiserfs (não reiser4fs) pode ajudar.
Tentar evitar essa situação é provavelmente o melhor.
Para seus próprios programas usando blobs sem fs, pode ser benéfico. É assim que o Facebook faz para armazenar fotos.
fonte