Как изменить размер журнала OSD в Ceph

Как изменить размер журнала OSD в Ceph

Roman Bogachev VMware Specialist | Drone Pilot | Traveler

Изменение объёма журнала для OSD в Ceph

По умолчанию, если собирать Ceph из коробки, то команда ceph-deploy osd create создает раздел Ceph Journal объемом 5G, что на практике, могу заверить, очень мало.

Увеличим это значение.

Способ первый

Задать значение для журнала можно при создании OSD. Например при первоначальной конфигурации или же при добавлении новой OSD.

Для этого достаточно в конфигурационный файл ceph.conf добавить строчку:

1
osd_journal_size = 100000

После этого при создании и добавлении OSD журнал будет указанного размера.

1
2
3
#         Start          End    Size  Type            Name
1 204802048 2000343694 856.2G unknown ceph data
2 2048 204802047 97.7G unknown ceph journal

Способ второй

Изменение размера журнала “на лету” на готовом кластере.

Обязательные условия:

  1. Ceph кластер должен быть в состоянии HEALTH_OK
  2. Все PGs (Placement Groups) должны быть в состоянии active + clean
  3. Установить статус ceph osd noout для остановки балансировки.
  4. Заранее установить значение osd_journal_size = 100000 в ceph.conf

Итак, все действия выполнены - приступаем.

Останавливаем ре-балансировку.

1
ceph osd set noout

Останавливаем OSD на котором будет производить действия:

1
systemctl stop ceph-osd@0.service

Немного подождем и очищаем кэш журнала, <osd_id> - в нашем случае 0:

1
ceph-osd -i <osd_id>  --flush-journal

Переходим в директорию с журналом и удаляем его:

1
2
cd /var/lib/ceph/osd/ceph-0/
rm journal

После указанных действий создаем новый журнал, <osd_id> - в нашем случае 0:

1
ceph-osd --mkjournal -i <osd id>

Проверим размер нового журнала, он должен соответствовать тому, что мы указали в конфигурационном файле ceph.conf

Запускаем OSD:

1
systemctl start ceph-osd@0.service

И проверяем используется ли новый журнал.

1
2
3
4
$ 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.

По завершении работ возвращаем балансировку:

1
ceph osd unset noout