惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
U
Unit 42
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The GitHub Blog
The GitHub Blog
Microsoft Azure Blog
Microsoft Azure Blog
有赞技术团队
有赞技术团队
Stack Overflow Blog
Stack Overflow Blog
爱范儿
爱范儿
博客园 - 司徒正美
Vercel News
Vercel News
I
InfoQ
GbyAI
GbyAI
C
Check Point Blog
B
Blog RSS Feed
Martin Fowler
Martin Fowler
B
Blog
MyScale Blog
MyScale Blog
腾讯CDC
博客园 - Franky
Blog — PlanetScale
Blog — PlanetScale
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hugging Face - Blog
Hugging Face - Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 三生石上(FineUI控件)

OneUptime Blog

How to Monitor Azure App Services (PaaS) with OpenTelemetry Grafana Stack vs OneUptime: DIY Observability or Unified Platform? Your AI Workloads Are About to Blow Up Your Observability Bill The Great Observability Consolidation Is Here How to Write Custom Object Classes for Ceph How to Write Custom Ceph Manager Modules How to Write a ceph.conf Configuration File How to Use Rook-Ceph with OpenShift How to Use Rook-Ceph with Longhorn for Comparison How to Configure Volume Snapshot Class for RBD in Rook How to Configure VolumeReplicationClass Scheduling Intervals in Rook How to Set Up Volume Replication with Rook-Ceph How to Create Volume Group Snapshots with Rook CSI How to Visualize Ceph Network Performance in Grafana How to Enable Virtual Host-Style Bucket Access in Rook How to View Runtime Configuration via Admin Socket How to View Quota Settings and Update Stats in Ceph RGW How to View PG Scaling Recommendations with autoscale-status How to View PG Distribution via Admin Socket How to View Performance Metrics in the Ceph Dashboard How to View OSD Performance Counters in Ceph How to View Connection Status via Admin Socket How to View Ceph Cluster Summary Dashboard via CLI How to Version Control Rook-Ceph Configuration How to Version Control Ceph Infrastructure with Terraform How to Verify Kubernetes Node Requirements for Rook-Ceph Deployment How to Verify Health Before and After Rook Upgrades How to Verify Data Integrity with Deep Scrubbing How to Verify Complete Rook-Ceph Cleanup How to Verify Backup Integrity from Ceph Snapshots
How to Understand the creating PG State in Ceph
Nawaz Dhandala · 2026-03-31 · via OneUptime Blog

What is the creating PG State

When Ceph creates a new pool or increases the PG count of an existing pool, placement groups (PGs) go through a creating state. This is a transient phase where Ceph allocates PGs to OSDs and begins distributing data. In most cases it resolves in seconds. When it lingers, you have a problem worth diagnosing.

Check PG states with:

kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- ceph pg stat

You may see output like:

128 pgs: 16 creating, 112 active+clean; 500 GiB data

Common Causes of Stuck creating PGs

Not enough OSDs: Ceph requires a minimum number of OSDs to satisfy the pool's replication rule. If a pool has size=3 but only two OSDs are available, PGs cannot be created.

Broken CRUSH map: If the CRUSH rule references a bucket type that no longer exists or has no OSDs mapped, PG creation stalls.

OSD down during creation: If an OSD was added and immediately failed, in-flight PG creation can pause.

Diagnosing the Issue

Check the overall cluster health:

kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- ceph health detail

List all PGs in creating state:

kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- ceph pg dump | grep creating

Check OSD count and status:

kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- ceph osd stat
kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- ceph osd tree

Inspect the pool's CRUSH rule:

kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- ceph osd pool get <pool-name> all
kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- ceph osd crush rule dump

Resolving Stuck creating PGs

Add more OSDs: If the cluster is undersized, add OSD nodes via your Rook CephCluster spec:

storage:
  storageClassDeviceSets:
    - name: set1
      count: 3
      volumeClaimTemplates:
        - metadata:
            name: data
          spec:
            resources:
              requests:
                storage: 1Ti
            storageClassName: local-storage
            volumeMode: Block
            accessModes:
              - ReadWriteOnce

Fix CRUSH rules: If the CRUSH map is broken, recompile it:

kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- bash -c '\
  ceph osd getcrushmap -o /tmp/crushmap && \
  crushtool -d /tmp/crushmap -o /tmp/crushmap.txt && \
  # Edit /tmp/crushmap.txt as needed, then recompile
  crushtool -c /tmp/crushmap.txt -o /tmp/crushmap.new && \
  ceph osd setcrushmap -i /tmp/crushmap.new'

Restart stuck OSDs: If an OSD is down and blocking creation, identify and restart it:

kubectl -n rook-ceph get pods | grep osd
kubectl -n rook-ceph delete pod <stuck-osd-pod>

Monitoring PG Recovery

After applying fixes, watch PG states converge:

watch kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- ceph pg stat

PGs should exit creating and move to active+clean within a few minutes once all OSDs are available and CRUSH rules are satisfied.

Summary

The creating PG state is normal during cluster initialization and pool creation but should be transient. Persistent creating states usually indicate insufficient OSDs, a misconfigured CRUSH rule, or a failed OSD during the creation window. Use ceph health detail and ceph osd tree to pinpoint the cause and restore cluster health quickly.