Разносим данные по hdd и ssd в CEPH

21/12/2020

ceph hdd vs ssd

Кластер CEPH по умолчанию представляет собой один общий массив хранения данных, в котором объекты распределяются по всем имеющимся дискам в соответствии с их весом. Но зачастую этого бывает недостаточно. SSD диски уже давно не являются экзотикой, и используются на большинстве серверов, да и обычных десктопах и ноутбуках. Как распределить данные на кластере CEPH таким образом, чтобы SSD диски использовались строго для определенных категорий данных, а HDD для других категорий? Об этом хочется рассказать в этой статье. О CEPH уже писал в своем блоге — Установка кластера CEPH. Однако, тематика данной программно-определяемой системы хранения данных мне кажется благодатной, да и в русскоязычном сегменте Интернета полезных статей о ней не так много.

Настройка

Итак, у нас есть работающий кластер CEPH, на котором задействованы диски HDD и SSD под нужды хранения объектов OSD. Данные рекомендации актуальны для последней текущей на данный момент версии CEPH — Octopus. Веб интерфейс CEPH заметно подрос в возможностях за последнее время, но для конфигурации политик, которые позволят разносить данные, все равно придется использовать коммандную строку ceph.

По умолчанию в системе настроена одна crush политика — replicated_rule. Мы создадим еще две crush политики с помощью следующих команд.

# ceph osd crush rule create-replicated ssdrule default host ssd
# ceph osd crush rule create-replicated hddrule default host hdd

Первая политика по имени ssdrule задает правила хранения данных на SSD дисках, а вторая политика hddrule уже описывает использование шпиндельных дисков. В обоих случаях используется репликация для хранения данных и в качестве failure-domain хост кластера.

Чтобы посмотреть crush политики в кластере выполняем следующую команду. Так мы можем убедиться, что настроенные политики успешно видны в кластере.

# ceph osd crush rule ls
replicated_rule
ssdrule
hddrule

Теперь мы можем создавать пулы данных, указывая в настройках конкретную политику crush, исходя из которой будет выбираться тот или иной класс дисков, где будут храниться данные. Пример создания пулов в командной строке ceph показываю ниже. Оговорюсь сразу, что создание пулов и выбор нужной политики crush доступен и через веб интерфейс.

# ceph osd pool create  ssdpool 32 32 ssdrule
# ceph osd pool create  hddpool 32 32 hddrule

После этого нужные пулы созданы, мы их можем монтировать в нужной подсистеме CEPH и использовать по назначению.

Заключение

CEPH предоставляет множество возможностей для подстройки и настройки своей работы. Зная «ручки», которые нужно вертеть, можно получить очень интересные результаты на этой системе хранения данных. Так, настраивая crush правила, можно размещать данные определенных пулов на заданном классе дисков в кластере. Как это сделать быстро, постарался показать в этой статье.

Добавить комментарий

Ваш адрес email не будет опубликован.