Grandes sistemas de arquivos distribuídos tradicionalmente precisavam de metadados que indicassem onde cada bloco ou objeto residia. Na escala de petabytes, esses mapas de alocação tornavam-se problemas de coordenação, recuperação e rebalanceamento.

A resposta do Ceph foi o CRUSH: uma função de posicionamento pseudoaleatória. Clientes e nós de armazenamento podiam calcular a localização de um objeto a partir do nome do objeto e do mapa do cluster, em vez de consultar uma tabela central.

O artigo do OSDI relatou o Ceph suportando mais de 250.000 operações de metadados por segundo, e a publicação do CRUSH apresentou o algoritmo para dezenas ou centenas de milhares de dispositivos de armazenamento, evitando um diretório central.

Transformar o posicionamento em uma função

Uma função de posicionamento determinística permite que cada participante encontre de forma independente o mesmo objeto.

Pesos e regras de domínio de falha preservam restrições do mundo real, como racks e tamanhos de dispositivos.

Pequenas mudanças de topologia movem apenas os dados que precisam ser movidos, tornando o crescimento e as falhas menos disruptivos.

Remover as listas de alocação reduz a tarefa do servidor de metadados ao namespace, e não ao endereço de cada byte.

Em escala extrema, eliminar a coordenação pode importar mais do que otimizá-la; uma função determinística compartilhada pode substituir um diretório mutável compartilhado.

O CRUSH tornou-se uma das ideias marcantes do Ceph e ajudou a fazer do projeto um sistema de armazenamento de código aberto duradouro. Sua beleza é arquitetural: o melhor diretório na escala de petabytes era nenhum diretório.

CONFIRA AS EVIDÊNCIAS

As fontes

  1. CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data Storage Systems Research Center, UC Santa Cruz · ssrc.us
  2. Ceph: A Scalable, High-Performance Distributed File System USENIX · usenix.org ·