CRUSH (Controlled Replication Under Scalable Hashing) é um algoritmo baseado em hash para calcular como e onde armazenar e recuperar dados em um cluster de armazenamento distribuído baseado em objetos.
CRUSH distribui os dados uniformemente entre os dispositivos de armazenamento de objetos disponíveis no que é frequentemente descrito como uma forma pseudo-aleatória. A distribuição é controlada por um mapa de cluster hierárquico chamado mapa CRUSH. O mapa, que pode ser personalizado pelo administrador do armazenamento, informa o cluster sobre o layout e a capacidade dos nós na rede de armazenamento e especifica como a redundância deve ser gerenciada. Ao permitir que os nós de cluster calculem onde um item de dados foi armazenado, o CRUSH evita a necessidade de procurar locais de dados em um diretório central. CRUSH também permite que nós sejam adicionados ou removidos, movendo o menor número possível de objetos enquanto ainda mantém o equilíbrio através da nova configuração de cluster.
CRUSH foi projetado para Ceph, um software de código aberto projetado para fornecer armazenamento baseado em objetos, blocos e arquivos sob um sistema unificado. Como o CRUSH permite que os clientes se comuniquem diretamente com dispositivos de armazenamento sem a necessidade de um servidor de índice central para gerenciar a localização dos objetos de dados, os clusters Ceph podem armazenar e recuperar dados muito rapidamente e escalar para cima ou para baixo com bastante facilidade.