STRUMENTI · CEPH
Calcolatore PG Ceph
Calcola pg_num per ogni pool con la regola di PGCalc o prepara le impostazioni per l'autoscaler, stima quante istanze PG ospita ogni OSD prima e dopo la perdita di un nodo e copia i comandi ceph e pveceph generati dalla stessa tabella.
Calcola i PG dei tuoi pool
Si parte dall'installazione di base, come nel calcolatore Ceph: 3 nodi con 4 NVMe e un pool RBD in replica 3. La regola dà 512 PG, perché 100 × 12 / 3 fa 400 e la potenza di 2 più vicina è 512. Cambia i dati o parti da un esempio.
Calcola i PG dei tuoi pool
| Pool | Protezione | Classe | Quota del pool nei dati della classe | pg_num | Istanze PG per OSD, di questo pool | Azioni |
|---|---|---|---|---|---|---|
| % | 512 | 128,0 istanze per OSD | ||||
| % | 512 | 128,0 istanze per OSD |
PG calcolati: pool vm-disks: 512. Massimo stimato di istanze per OSD: 128, sotto mon_max_pg_per_osd 250.
Dopo la perdita di un nodo i nodi rimasti non bastano per tutte le istanze: 512 restano senza collocazione. Il massimo stimato è sotto mon_max_pg_per_osd (250); il limite rigido del singolo OSD è 750. Il confronto del massimo stimato con mon_max_pg_per_osd è un controllo prudente: l'avviso TOO_MANY_PGS di Ceph usa la media del cluster. La scala arriva al limite rigido del singolo OSD.
Dopo la perdita di un nodo i nodi rimasti non bastano per tutte le istanze: 512 restano senza collocazione. Il massimo stimato è sotto mon_max_pg_per_osd (250); il limite rigido del singolo OSD è 750. Il confronto del massimo stimato con mon_max_pg_per_osd è un controllo prudente: l'avviso TOO_MANY_PGS di Ceph usa la media del cluster. La scala arriva al limite rigido del singolo OSD.
ceph osd crush rule create-replicated rep-nvme default host nvme ceph osd pool create vm-disks 512 512 replicated rep-nvme ceph osd pool set vm-disks size 3 ceph osd pool set vm-disks min_size 2 ceph osd pool application enable vm-disks rbd ceph osd pool set vm-disks pg_autoscale_mode warn
In questa pagina
Come si calcola pg_num
La regola è quella di PGCalc, descritta nella documentazione di Ceph: si parte dall'obiettivo di PG per OSD, si moltiplica per gli OSD della classe e per la quota di dati del pool, e si divide per la larghezza del pool, cioè le copie in replica o k+m in erasure coding.
x = obiettivo × OSD × quota / larghezza
x = max(x, OSD / larghezza)
pg_num = potenza di 2 più vicina a x
se pg_num < 0,75 × x allora pg_num = 2 × pg_num
Esempio svolto: 12 OSD, un solo pool in replica 3, obiettivo 100. x vale 100 × 12 / 3 = 400; la potenza di 2 più vicina è 512, che non è sotto il 75% di 400: pg_num è 512. Il raddoppio scatta quando la potenza di 2 più vicina è più bassa di x di oltre il 25%: con x = 1.365 il risultato è 1.024, con x = 1.366 è 2.048.
L'obiettivo di partenza è 100, il default di mon_target_pg_per_osd. La regola di PGCalc usa 200 quando il numero di OSD può raddoppiare, così non serve aumentare pg_num dei pool poco dopo averli creati.
PGCalc o autoscaler
Con pg_autoscale_mode on Ceph regola pg_num da solo, in base ai dati presenti e a quelli previsti. In modalità autoscaler il calcolatore scrive per ogni pool target_size_ratio pari alla sua quota nella classe: è un peso relativo, non una quota rigida, e l'autoscaler lo normalizza fra i pool che condividono gli stessi OSD. I pool che conterranno la maggior parte dei dati ricevono bulk, che li fa partire con molti PG invece di farli crescere un po' alla volta.
In modalità PGCalc il calcolatore mette l'autoscaler in warn: pg_num resta quello calcolato, e Ceph avvisa se lo ritiene lontano dall'ottimo.
Istanze PG per OSD: media e massimo
La media non basta. Nel modello ogni pool si distribuisce fra i nodi in proporzione alla capacità, con al massimo un'istanza di ogni PG per nodo, e le istanze di tutti i pool si sommano sugli stessi OSD. Ceph applica mon_max_pg_per_osd (250 di default in Squid e Tentacle) alla media del cluster: oltre, segnala TOO_MANY_PGS e rifiuta i pool o i pg_num che la supererebbero. Il calcolatore lo confronta anche con il massimo stimato sul singolo OSD, come controllo prudente, e mostra il limite rigido del singolo OSD, il triplo con osd_max_pg_per_osd_hard_ratio a 3: oltre quel valore l'OSD non crea nuovi PG. Ripete il controllo dopo la perdita di un nodo, quando le istanze del nodo perso si ridistribuiscono sugli altri.
Esempio svolto: tre nodi con 12, 1 e 1 OSD, un pool in replica 3 da 512 PG, failure domain host. La media è di circa 110 istanze per OSD, ma ogni PG ha una copia su ciascun nodo: i due OSD dei nodi con un disco solo ospitano 512 istanze ciascuno, più del doppio di mon_max_pg_per_osd.
Comandi pronti
I comandi nascono dalla stessa tabella dei pool. Con ceph il calcolatore genera: una regola CRUSH replicata per classe di dispositivo; la creazione dei pool con size e min_size; per l'erasure coding, un profilo con crush-device-class e crush-failure-domain; allow_ec_overwrites per RBD e CephFS; l'applicazione associata al pool e la modalità dell'autoscaler.
Con pveceph pool create e --erasure-coding, Proxmox VE crea due pool: <nome>-data in erasure coding, con il pg_num indicato e allow_ec_overwrites già acceso, e <nome>-metadata replicato con 32 PG. --size, --min_size e --crush_rule valgono per il pool metadata, quindi il min_size del pool dati si imposta con un comando successivo. Per i pool EC che non servono a RBD il calcolatore aggiunge --add_storages 0, perché con l'erasure coding pveceph crea di default anche uno storage RBD in Proxmox VE. CephFS su Proxmox VE si crea con pveceph fs create, e un pool EC si aggiunge come pool dati con ceph fs add_data_pool.
Formule e fonti
Modello 1.2.0 del 19 ottobre 2026, condiviso con il calcolatore Ceph. Il comportamento di pveceph con l'erasure coding è verificato nel codice di Proxmox VE, oltre che nella documentazione.
Ti serve un secondo parere sui tuoi pool?
Rivediamo pool, regole CRUSH e PG di un cluster Ceph esistente, oppure li definiamo nella progettazione di un cluster nuovo.
Domande frequenti sul calcolatore PG
Che cosa sono i placement group di Ceph?
I placement group, o PG, sono i gruppi in cui Ceph divide gli oggetti di un pool: ogni PG vive su un insieme di OSD, uno per copia o per frammento, e Ceph sposta, recupera e bilancia i dati PG per PG. Con troppo pochi PG i dati si distribuiscono male, con troppi crescono memoria e CPU usate dagli OSD.
Perché pg_num è una potenza di 2?
Ceph assegna ogni oggetto di un pool a un PG con un hash: con pg_num potenza di 2 ogni PG riceve in media la stessa quota di oggetti, con un valore diverso alcuni PG ne ricevono il doppio degli altri. Per questo la regola di PGCalc arrotonda sempre a una potenza di 2.
100 o 200 PG per OSD?
In Ceph 100 PG per OSD è il default di mon_target_pg_per_osd e va bene per un cluster che non crescerà. La regola di PGCalc usa 200 quando il numero di OSD può raddoppiare, così non serve aumentare pg_num dei pool poco dopo averli creati. Restare sotto mon_max_pg_per_osd, 250 di default, conta più del valore esatto.
Cosa fa l'autoscaler dei PG e quando spegnerlo?
L'autoscaler dei PG di Ceph regola pg_num di ogni pool in base ai dati presenti, a target_size_ratio e a target_size_bytes, e con bulk fa partire da molti PG i pool grandi. Mettilo in warn (solo avvisi) o in off quando vuoi decidere pg_num a mano, ad esempio per evitare spostamenti di dati non pianificati.
Cos'è mon_max_pg_per_osd?
In Ceph mon_max_pg_per_osd vale 250 di default in Squid e Tentacle e si applica alla media di istanze PG per OSD del cluster: oltre, Ceph segnala TOO_MANY_PGS e rifiuta i pool che la supererebbero. Il limite del singolo OSD è il triplo, con osd_max_pg_per_osd_hard_ratio a 3: oltre, l'OSD non crea nuovi PG. Il calcolatore confronta con mon_max_pg_per_osd anche il massimo stimato sul singolo OSD, prima e dopo la perdita di un nodo, come controllo prudente.
Quanti PG dare a un pool Ceph in erasure coding?
In un pool Ceph in erasure coding ogni PG ha k+m istanze, una per frammento: la regola di PGCalc divide quindi per k+m invece che per il numero di copie. Un EC 8+3 su 288 OSD, con l'80% dei dati della classe e obiettivo 100, ha 2.048 PG.
Che differenza c'è con il PG Calc della documentazione Ceph?
Il PG Calc nella documentazione di Ceph applica la stessa regola, ma solo ai pool in replica. Questo calcolatore aggiunge l'erasure coding, le classi di dispositivo, la stima delle istanze su ogni OSD prima e dopo la perdita di un nodo e i comandi per pveceph; il vecchio indirizzo ceph.com/pgcalc oggi risponde con un errore 404.
- 700+ clienti attivi
- H24 supporto in italiano
- GDPR dati in Italia
Progettiamo il tuo cluster Ceph
Dimensioniamo dischi, rete, block.db e protezione sul tuo carico e, prima della produzione, verifichiamo come il cluster reagisce ai guasti.
0421 1885889 · sales@rackone.it