Алгоритм CRUSH в системе хранения данных Ceph определяет, как хранить и извлекать данные, вычисляя местоположения для их хранения. 2
Для работы CRUSH требуется карта кластера. 2 Она содержит список устройств хранения объектов (OSD), список «ведёр» для агрегирования устройств в физические местоположения и список правил, которые указывают CRUSH, как реплицировать данные в пулах кластера Ceph. 2
CRUSH равномерно записывает данные по всем дискам кластера. 1 Он гарантирует, что все диски кластера используются в равной мере вне зависимости от их ёмкости. 1 Для этого CRUSH присваивает веса каждому OSD: чем выше вес OSD, тем большую физическую ёмкость хранения он имеет, и CRUSH будет записывать на такое OSD больше данных. 1
Когда в кластер добавляется новый хост или диск, CRUSH запускает операцию повторной балансировки. 1 В её процессе он перемещает данные с существующих хостов или дисков на новые хосты или диски. 1 Ребалансировка выполняется для сохранения заполненности дисков в одной пропорции, что увеличивает производительность кластера и сохраняет его работоспособность. 1