Ceph: слишком много PGs per OSD
Я настроил Ceph с рекомендуемыми значениями (используя формулу из документов). У меня есть 3 OSDs, и моя конфигурация (которую я поставил на узел монитора и все 3 OSDs) включает это:
osd pool default size = 2
osd pool default min size = 1
osd pool default pg num = 150
osd pool default pgp num = 150
когда я запускаю ceph status
Я:
health HEALTH_WARN
too many PGs per OSD (1042 > max 300)
это сбивает с толку по двум причинам. Во-первых, потому, что рекомендуемая формула не удовлетворяла Цеф. Во-вторых, и самое загадочное, что он говорит, что у меня есть 1042 PGs per OSD, когда моя конфигурация говорит 150.
что я делаю не так?
2 ответов
перед установкой PG count вам нужно знать 3 вещи.
1. Количество OSD
ceph osd ls
Sample Output:
0
1
2
Here Total number of osd is three.
2. Количество пулов
ceph osd pool ls
или rados lspools
Sample Output:
rbd
images
vms
volumes
backups
Here Total number of pool is five.
3. Граф Репликации
ceph osd dump | grep repli
Sample Output:
pool 0 'rbd' replicated size 2 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 64 pgp_num 64 last_change 38 flags hashpspool stripe_width 0
pool 1 'images' replicated size 2 min_size 2 crush_ruleset 1 object_hash rjenkins pg_num 30 pgp_num 30 last_change 40 flags hashpspool stripe_width 0
pool 2 'vms' replicated size 2 min_size 2 crush_ruleset 1 object_hash rjenkins pg_num 30 pgp_num 30 last_change 42 flags hashpspool stripe_width 0
pool 3 'volumes' replicated size 2 min_size 2 crush_ruleset 1 object_hash rjenkins pg_num 30 pgp_num 30 last_change 36 flags hashpspool stripe_width 0
pool 4 'backups' replicated size 2 min_size 2 crush_ruleset 1 object_hash rjenkins pg_num 30 pgp_num 30 last_change 44 flags hashpspool stripe_width 0
You can see each pool has replication count two.
теперь давайте в расчет
расчет:
Общий Расчет PGs:
Total PGs = (Total_number_of_OSD * 100) / max_replication_count
This result must be rounded up to the nearest power of 2.
пример:
нет OSD: 3
Нет числа репликации: 2
Всего PGs = (3 * 100) / 2 = 150. Ближайшая мощность от 150 до 2 составляет 256.
таким образом, максимальный рекомендуемый PGs составляет 256
вы можете установить PG для каждого пула
всего PGs на расчет пула:
Total PGs = ((Total_number_of_OSD * 100) / max_replication_count) / pool count
This result must be rounded up to the nearest power of 2.
пример:
нет OSD: 3
Нет числа репликации: 2
Нет бассейнов: 5
Всего PGs = ((3 * 100) / 2 ) / 5 = 150 / 5 = 30 . Ближайшая мощность от 30 до 2 составляет 32.
поэтому количество ПГС в бассейне-32.
мощность 2 таблицы:
2^0 1
2^1 2
2^2 4
2^3 8
2^4 16
2^5 32
2^6 64
2^7 128
2^8 256
2^9 512
2^10 1024
Полезные Команды
ceph osd pool create <pool-name> <pg-number> <pgp-number> - To create a new pool
ceph osd pool get <pool-name> <pg_num> - To get number of PG in a pool
ceph osd pool get <pool-name> <pgp_num> - To get number of PGP in a pool
ceph osd pool set <pool-name> <pg_num number> - To increase number of PG in a pool
ceph osd pool set <pool-name> <pgp_num number> - To increase number of PGP in a poo
*usually pg and pgp number is same
как я зафиксировал его в 12.2.4 светящемся:
слишком много PGs per OSD (380 > max 200) может привести вас ко многим запросам блокировки.
сначала вам нужно установить:
[global]
mon_max_pg_per_osd = 800 # < depends on you amount of PGs
osd max pg per osd hard ratio = 10 # < default is 2, try to set at least 5. It will be
mon allow pool delete = true # without it you can't remove a pool
затем перезапустите все MONs и OSDs, один за другим.
проверяем значение:
ceph --admin-daemon /var/run/ceph/ceph-mon.ceph2.asok config get mon_max_pg_per_osd
ceph --admin-daemon /var/run/ceph/ceph-osd.3.asok config get osd_max_pg_per_osd_hard_ratio
теперь смотри сюда:
rados lspools
ceph osd pool get .users.email pg_num
в моем случае по умолчанию pg_num
было 128 или что-то в этом роде (моему кластеру 4 года, было много обновлений, много изменений). Вы можете уменьшить ее.
осторожно:
ceph osd pool create .users.email.new 8
rados cppool .users.email default.rgw.lc.new
ceph osd pool delete .users.email .users.email --yes-i-really-really-mean-it
ceph osd pool rename .users.email.new .users.email
ceph osd pool application enable .users.email rgw
если этого было недостаточно, попробуйте найти другой бассейн, который вы можете вырезать.