Как изменить размер журнала OSD в Ceph
Изменение объёма журнала для OSD в Ceph
По умолчанию, если собирать Ceph из коробки, то команда ceph-deploy osd create
создает раздел Ceph Journal
объемом 5G, что на практике, могу заверить, очень мало.
Увеличим это значение.
Способ первый
Задать значение для журнала можно при создании OSD. Например при первоначальной конфигурации или же при добавлении новой OSD.
Для этого достаточно в конфигурационный файл ceph.conf
добавить строчку:
osd_journal_size = 100000
После этого при создании и добавлении OSD журнал будет указанного размера.
# Start End Size Type Name 1 204802048 2000343694 856.2G unknown ceph data 2 2048 204802047 97.7G unknown ceph journal
Способ второй
Изменение размера журнала “на лету” на готовом кластере.
Обязательные условия:
- Ceph кластер должен быть в состоянии
HEALTH_OK
- Все PGs (Placement Groups) должны быть в состоянии
active + clean
- Установить статус
ceph osd noout
для остановки балансировки. - Заранее установить значение
osd_journal_size = 100000
вceph.conf
Итак, все действия выполнены - приступаем.
Останавливаем ре-балансировку.
ceph osd set noout
Останавливаем OSD на котором будет производить действия:
systemctl stop ceph-osd@0.service
Немного подождем и очищаем кэш журнала, <osd_id>
- в нашем случае 0:
ceph-osd -i <osd_id> --flush-journal
Переходим в директорию с журналом и удаляем его:
cd /var/lib/ceph/osd/ceph-0/ rm journal
После указанных действий создаем новый журнал, <osd_id>
- в нашем случае 0:
ceph-osd --mkjournal -i <osd id>
Проверим размер нового журнала, он должен соответствовать тому, что мы указали в конфигурационном файле ceph.conf
Запускаем OSD:
systemctl start ceph-osd@0.service
И проверяем используется ли новый журнал.
$ sudo ceph --admin-daemon /var/run/ceph/ceph-osd.0.asok config get osd_journal_size { "osd_journal_size": "100000" }
Проверим, что кластер восстановился в состояние HEALTH_OK
и PGs находятся в статусе active+clean
Проделываем аналогичные действия на других OSD.
По завершении работ возвращаем балансировку:
ceph osd unset noout