Почему Ceph вычисляет идентификатор PG по хешу объекта, а не по алгоритму CRUSH?

Ceph использует алгоритм CRUSH для сопоставления PG->OSD и отлично работает для увеличения/уменьшения узлов OSD.

Но для отображения obj->PG Ceph по-прежнему использует традиционный хеш, который равен pgid = hash(obj_name) % pg_num. Такой подход может привести к массовой миграции данных, если мы изменим количество PG, даже снизим доступность системы.

Почему Ceph не использует CRUSH algirhtm (скажем, slice2) для сопоставления obj->PG, которое могло бы иметь оптимальный объем миграции данных при изменении количества PG?


person Wizmann    schedule 29.11.2020    source источник


Ответы (1)


Есть разные сценарии, и CRUSH, я думаю, не панацея.

  1. PG->OSD — это функция «один ко многим», а obj->PG — это функция «один к одному».
  2. Добавление и удаление OSD происходит довольно часто, в то время как PG считается довольно стабильным.
  3. Группа OSD может быть частично недоступна, в то время как PG не будет.

Это мое восприятие, критика или обсуждение приветствуются.

person uncleDuo    schedule 12.12.2020