Como “rapidamente” criar arquivos de 300M e diretórios de 16M?

2

Eu tenho uma estrutura de diretórios de 3 níveis definida por 2 dígitos hexadecimais como:

0A/FF/2B/someimagefile.gif

Tenho 300M arquivos pequenos em 1.5TB de arquivos compactados que preencherão esses diretórios (teremos mais arquivos para vir no futuro, então escolhi a estrutura de diretório para impedir que a massa de arquivos falhasse em um sistema de arquivos extX típico) .

Desempacotar esses arquivos é movido a 1 MB por segundo (ou ~ 18 dias para descompactar). Ouchie!

Eu acho que foi lento porque eu estava criando a estrutura de diretórios e, em seguida, os arquivos (feitos a partir de APIs Java). Então, comecei a criar apenas a estrutura de diretórios sozinha em um loop bash.

Os diretórios, por si só, são cerca de uma tarefa de 5 dias na taxa atual.

Alguma idéia sobre como melhorar a velocidade com que isso se move?

UPDATE

Uma parte do quebra-cabeça é resolvida, usando perl, em vez de bash, cria os diretórios mais de 200 vezes mais rápido, agora é uma operação que oferece um intervalo para o café, e não um fim de semana prolongado.

Mas a criação de arquivos ainda é extremamente lenta, mesmo sem a necessidade de criar os diretórios.

    
por davidparks21 15.03.2013 / 05:40

2 respostas

1

Minha resposta final para isso: "Não faça isso".

Não consegui encontrar uma maneira de melhorar a velocidade além de cerca de 2Mbytes / s ao criar muitos arquivos pequenos. Para volumes de dados terrabytes, isso é apenas muita inércia para se trabalhar.

Estamos seguindo os passos do facebook e jogando os arquivos em um armazenamento de dados binários (ou usando uma tabela maciça de mysql / myisam com BLOBs, experimentando agora ...).

É um pouco mais complexo, mas elimina o problema de busca aleatória associado a arquivos pequenos, e posso trabalhar com volumes de dados terríveis em questão de horas, ou um dia, em vez de semanas.

O MongoDB é mais uma boa opção para investigar.

    
por 17.03.2013 / 14:23
0

remontar o sistema de arquivos com as opções de noatime, nodiratime

    
por 30.03.2013 / 02:06