VK Private Cloud logo
Помощь
Обновлена 10 сентября 2026 г. в 14:07

Расчет количества групп размещения (PG) Ceph

Количество групп размещения влияет на потребление ресурсов в кластере и скорость выполнения служебных операций:

  • чем меньше групп размещения, тем дольше выполняются операции перемещения данных (recover, rebalance, backfill).
  • чем больше групп размещения, тем выше потребление RAM и CPU.

Количество групп размещения рассчитывается не для всего кластера, а для всех OSD в конкретном правиле CRUSH и типе накопителя. Если в кластере несколько типов накопителей, выполните расчет для каждого типа.

Методика расчета

Количество групп размещения (PG, Placement Group) в пуле рассчитывается по формулам:

C=TNOSDRRFC = \frac {T \cdot N_{OSD} \cdot R}{RF}

PGpool=2log2CPG_{pool} = 2^{\lceil \log_2 C \rceil}

Здесь:

  • TT — целевое количество групп размещения на OSD. Рекомендации по выбору значения — в разделе Целевое количество групп размещения на OSD.
  • NOSDN_{OSD} — количество OSD в правиле CRUSH.
  • RR — доля потребления данных пулом относительно других пулов. Задается дробным числом от 0 до 1. Сумма долей всех пулов должна быть равна 1.
  • RFRF — фактор репликации. В стандартных случаях — 3.
  • CC — промежуточное значение для расчета количества групп размещения.
  • PGpoolPG_{pool} — итоговое количество групп размещения в пуле. Получается округлением CC вверх до ближайшей степени двойки и задается параметрами pg_num и pgp_num. Степени двойки приведены в таблице 3.

Целевое количество групп размещения на OSD

Целевое количество групп размещения на OSD — от 100 до 300.

Ориентируйтесь на следующие значения:

  • 100 — если кластер статичный и рост не планируется;
  • 150 — если планируется рост емкости более чем на 50%;
  • 200 — если планируется рост емкости более чем на 100%;
  • 300 — если используются OSD объемом более 8 ТБ.

Примеры расчета

Примеры ниже приведены для накопителей SSD.

Таблица 1 — Пример расчета для кластера с тремя пулами

Количество OSD

Фактор репликации

Целевое количество групп размещения на OSD

Пул

Доля

Количество групп размещения

Всего групп размещения

48

3

100

cinder-volumes

0,8

2048

2432

manila-volumes

0,15

256

vms-ephemeral

0,05

128

Расчет для пула cinder-volumes:

T=100, NOSD=48, RF=3, R=0,8T = 100,\ N_{OSD} = 48,\ RF = 3,\ R = 0,8

100480,83=1280\frac {100 \cdot 48 \cdot 0,8}{3} = 1280

PGpool=2log21280=2048PG_{pool} = 2^{\lceil \log_2 1280 \rceil} = 2048

Расчет для пула manila-volumes:

T=100, NOSD=48, RF=3, R=0,15T = 100,\ N_{OSD} = 48,\ RF = 3,\ R = 0,15

100480,153=240\frac {100 \cdot 48 \cdot 0,15}{3} = 240

PGpool=2log2240=256PG_{pool} = 2^{\lceil \log_2 240 \rceil} = 256

Расчет для пула vms-ephemeral:

T=100, NOSD=48, RF=3, R=0,05T = 100,\ N_{OSD} = 48,\ RF = 3,\ R = 0,05

100480,053=80\frac {100 \cdot 48 \cdot 0,05}{3} = 80

PGpool=2log280=128PG_{pool} = 2^{\lceil \log_2 80 \rceil} = 128

Таблица 2 — Пример расчета для кластера с двумя пулами

Количество OSD

Фактор репликации

Целевое количество групп размещения на OSD

Пул

Доля

Количество групп размещения

Всего групп размещения

144

3

150

cinder-volumes

0,95

8192

8704

vms-ephemeral

0,05

512

Расчет для пула cinder-volumes:

T=150, NOSD=144, RF=3, R=0,95T = 150,\ N_{OSD} = 144,\ RF = 3,\ R = 0,95

1501440,953=6840\frac {150 \cdot 144 \cdot 0,95}{3} = 6840

PGpool=2log26840=8192PG_{pool} = 2^{\lceil \log_2 6840 \rceil} = 8192

Расчет для пула vms-ephemeral:

T=150, NOSD=144, RF=3, R=0,05T = 150,\ N_{OSD} = 144,\ RF = 3,\ R = 0,05

1501440,053=360\frac {150 \cdot 144 \cdot 0,05}{3} = 360

PGpool=2log2360=512PG_{pool} = 2^{\lceil \log_2 360 \rceil} = 512

Степени двойки

Таблица 3 — Степени двойки

n

2^n

0

1

1

2

2

4

3

8

4

16

5

32

6

64

7

128

8

256

9

512

10

1024

11

2048

12

4096

13

8192

14

16384

15

32768

16

65536

17

131072

18

262144

19

524288

20

1048576

Была ли статья полезна?