CRUSH (Controlled Replication Under Scalable Hashing) è un algoritmo basato su hash per calcolare come e dove archiviare e recuperare i dati in un cluster di archiviazione basato su oggetti distribuito.
CRUSH distribuisce i dati in modo uniforme tra i dispositivi di archiviazione di oggetti disponibili in quello che viene spesso descritto come un modo pseudo-casuale. La distribuzione è controllata da una mappa gerarchica del cluster chiamata mappa CRUSH. La mappa, che può essere personalizzata dall'amministratore dello storage, informa il cluster sul layout e sulla capacità dei nodi nella rete di storage e specifica come deve essere gestita la ridondanza. Consentendo ai nodi del cluster di calcolare dove è stato memorizzato un elemento di dati, CRUSH evita la necessità di cercare le posizioni dei dati in una directory centrale. CRUSH consente inoltre di aggiungere o rimuovere nodi, spostando il minor numero di oggetti possibile mantenendo l'equilibrio nella nuova configurazione del cluster.
CRUSH è stato progettato per Ceph, un software open source progettato per fornire storage basato su oggetti, blocchi e file in un sistema unificato. Poiché CRUSH consente ai client di comunicare direttamente con i dispositivi di archiviazione senza la necessità di un server di indicizzazione centrale per la gestione delle posizioni degli oggetti dati, i cluster Ceph possono archiviare e recuperare i dati molto rapidamente e aumentare o diminuire facilmente.