Назад | Перейти на главную страницу

Установите CRUSHMAP для 3-х стороннего в двухузловом кластере

У меня есть система хранения SSD, которая содержит два узла с 6 дисками SSD. Не идеально, поэтому в какой-то момент я представлю еще один узел. Прямо сейчас я хочу 3-х стороннюю репликацию.

По правилу по умолчанию этого не произойдет, потому что у нас всего два узла. Поэтому я подумал, что попытаюсь изменить карту успеха и установить набор правил для узлов хранилища SSD для размещения данных между двумя узлами, а третий набор может находиться в другом OSD на том же узле.

Будучи новичком и не совсем понимающим, как choose firstn и chooseleaf firstn заявления работают Я не уверен, что это будет делать то, что я собираюсь.

Вот что у меня есть на данный момент:

rule ssd-all {
  ruleset 1
  type replicated
  min_size 1
  max_size 5
  step take ssd
  step choose firstn 0 type host
  step chooseleaf firstn 2 type osd
  step emit
}

Где ssd - это корневой тип, содержащий несколько хостов и те хосты, которые содержат несколько (6) OSD.

Это сработает? Почему-то я не думаю, что это правильно. Я бы хотел лучше понять, когда использовать choose и где использовать chooseleaf. И лучшее понимание числа после firstn. В документации отсутствуют наглядные примеры. Читая Технический документ CRUSH имел некоторый смысл, но псевдокод для меня не так понятен. Может кто поможет?

Оказывается, все нормально.

rule ssd-all {
  ruleset 1
  type replicated

  # These lines mean ssd-all will be used when the replica 
  # count is between 1 & 5 inclusive
  min_size 1  
  max_size 5

  # Take the top level pool named 'ssd'
  step take ssd

  # Choose all host nodes.  In my case, there are only 2.
  step choose firstn 0 type host

  # Choose up to to 2 leaves of type osd.
  step chooseleaf firstn 2 type osd
  step emit
}

После запуска

   crushtool -t crushmap --test --show-statistics --show-mappings --rule 1 --min-x 1 --max-x 10 --num-rep 3

С различным количеством реплик для --num-rep кажется, что условия выполняются правильно. На двух хостах есть как минимум 3 реплики с двумя репликами на одном хосте на 2 разных OSD.