дата публикации 05.02.2019

ssd пул и hdd пул в ceph luminous

Создание раздельных пулов ssd и hdd в кластере ceph luminous

Начиная с версии luminous в ceph появились классы дисков hdd, ssd, nvme. В большинстве случаев они определяются системой автоматически. Используя классы довольно легко можно разделить пулы например на объемные hdd и быстрые ssd, при этом не надо производить никаких манипуляций с выгрузкой и загрузкой crush map.

Типовое правило crush map выглядит так:

rule replicated_rule {
   id 0
   type replicated
   min_size 1
   max_size 10
   step take default
   step chooseleaf firstn 0 type host
   step emit
}

Согласно этому правилу все диски, независимо от класса будут попадать в общий пул. Чтоб сделать раздельные пулы ssd и hdd необходимо создать правила для каждого класса дисков. Добавим их:

ceph osd crush rule create-replicated ceph-fast default host ssd
ceph osd crush rule create-replicated ceph-big default host hdd

Первая строка создает правило для класса ssd, второе для hdd. Обратите внимание, в конце каждой строки мы указываем host, как в дефолтном правиле. Если количество хостов в кластере 2, а pool size выставлен в 3, мы получим warning active+clean+remapped.

После выполнения команд наши правила будут выглядеть примерно так:

# rules
rule replicated_rule {
   id 0
   type replicated
   min_size 1
   max_size 10
   step take default
   step chooseleaf firstn 0 type host
   step emit
}
rule ceph-fast {
   id 1
   type replicated
   min_size 1
   max_size 10
   step take default class ssd
   step choose firstn 0 type host
   step emit
}
rule ceph-big {
   id 2
   type replicated
   min_size 1
   max_size 10
   step take default class hdd
   step choose firstn 0 type host
   step emit
}

Далее по стандартной схеме создаем пулы на основе созданных правил.