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
- CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data Storage Systems Research Center, UC Santa Cruz · ssrc.us
- Ceph: A Scalable, High-Performance Distributed File System USENIX · usenix.org ·