Como particionar o sistema de diretórios para o GlusterFS?

1

Temos 3 pastas em uma máquina Ubuntu 14.04, cada uma contendo 250K imagens com o tamanho de 2KB-30KB em cada pasta, esperando crescer até 1 milhão de arquivos por diretório.

Ao tentar dimensionar o aplicativo para vários servidores, estamos olhando para Glusterfs para um armazenamento compartilhado. Como arquivos 250K não são um problema no ext4, parece ser problemático para glusterfs. Tentar copiar os arquivos trava completamente a máquina.

Estou procurando particionar os arquivos em diretórios em dois níveis:

mkdir -p {000..255} / {000..255}

/000/000/filename
/001/000/filename
/001/001/filename
...

Isso soa como um bom caminho? Toda a estrutura conterá milhões de arquivos posteriormente. Isso permitiria que o glusterfs fosse confiável na produção com um bom desempenho, hospedando milhões de arquivos?

    
por merlin 24.08.2015 / 09:09

1 resposta

1

Usar o GlusterFS para armazenar e acessar muitos e muitos arquivos pequenos é uma dificuldade que muitas implementações enfrentam, e parece que você já está em um bom caminho para resolver o problema: dividir os arquivos em diretórios separados.

Você poderia implementar uma solução como essa. Basta criar um monte de diretórios, escolher um limite para quantos arquivos podem ir em cada diretório e esperar que você não fique sem lugares para colocar arquivos. No seu exemplo, você está criando diretórios de 65k +, portanto, isso provavelmente não será um problema tão cedo.

Outra opção é criar diretórios com base na data em que um arquivo é criado. Por exemplo, se o arquivo cust_logo_xad.png foi criado hoje, ele seria armazenado aqui:

/gluster/files/2015/08/24/cust_logo_xad.png

Se você hospeda dados para diferentes entidades (clientes, departamentos, etc.), é possível separar arquivos com base na propriedade, atribuindo à entidade uma ID exclusiva de algum tipo. Por exemplo:

/gluster/files/ry/ry7eg4k/cust_logo_xad.png

Além disso, seria uma boa ideia dar uma olhada na documentação do GlusterFS para ajustar o cluster de armazenamento para hospedagem de arquivos pequenos. No mínimo, certifique-se de que:

  1. Os sistemas de arquivos nos servidores de armazenamento GlusterFS possuem inodes gratuitos suficientes disponíveis ( mkfs option)
  2. As unidades nos servidores de armazenamento GlusterFS podem manipular muitos IOPs.
  3. Você usa um sistema de arquivos apropriado para a tarefa (ext4 ou xfs)
  4. Seu aplicativo / equipe não tenta varrer diretórios com muitos arquivos pequenos com frequência.

Se você puder (e se ainda não o fez), é uma boa idéia criar um banco de dados que funcione como um índice para os arquivos, em vez de ter que verificar (por exemplo, ls ) ou pesquisar (por exemplo, find ) para arquivos o tempo todo.

    
por 24.08.2015 / 10:33

Tags