A Ceph RBD pool is the RADOS storage area where block images, snapshots, and clones store their objects. Creating a dedicated pool before hosts, hypervisors, or orchestration platforms provision disks keeps block workloads separated from general application pools and lets the pool carry RBD metadata from the beginning.
RBD uses a replicated pool, then rbd pool init writes the metadata needed by the block-device tools. The pool can use the PG autoscaler like other replicated pools, but the replica policy, min_size, and placement assumptions still need to fit the cluster's failure domain and capacity budget.
Create the pool after ceph -s reports HEALTH_OK and enough OSDs are up and in for the intended replica count. The pool name rbd is common because many clients default to it, while a workload-specific name such as vms is better when block images need separate quotas, CRUSH rules, or client caps.
Related: How to create a replicated pool in Ceph
Related: How to enable the Ceph PG autoscaler
Related: How to set a quota on a Ceph pool
Steps to create a Ceph RBD pool:
- Check cluster health before adding the pool.
$ ceph -s cluster: id: 11111111-2222-3333-4444-555555555555 health: HEALTH_OK services: mon: 3 daemons, quorum ceph-node1,ceph-node2,ceph-node3 mgr: ceph-node1(active), standbys: ceph-node2 osd: 9 osds: 9 up, 9 in data: pools: 3 pools, 73 pgs objects: 262.15k objects, 1.1 TiB usage: 3.4 TiB used, 56 TiB / 60 TiB avail pgs: 73 active+cleanDelay pool creation when the cluster reports degraded, backfilling, remapped, or stuck PGs. A new pool adds placement work to the same OSD set.
Related: How to check Ceph cluster health
- Decide the pool name, replica policy, and PG handling.
The sample uses pool rbd, replica size 3, min_size 2, and starting pg_num 32. Keep the PG autoscaler on unless the pool has a deliberate manual PG plan.
Tool: Ceph Storage Capacity Calculator - Create the replicated pool.
$ ceph osd pool create rbd 32 replicated pool 'rbd' created
Use a power-of-two starting PG count when setting one manually. Omit custom CRUSH-rule arguments unless the RBD workload has a separate placement rule already tested for the target OSD class or failure domain.
- Set the pool replica count.
$ ceph osd pool set rbd size 3 set pool 4 size to 3
The size value includes the primary copy. A size of 3 keeps three total object copies when enough OSDs are available.
- Set the pool minimum replica count.
$ ceph osd pool set rbd min_size 2 set pool 4 min_size to 2
A production RBD pool with size 2 or min_size 1 can acknowledge writes with too little redundancy. Use those values only for a documented emergency or disposable test cluster.
- Enable PG autoscaling for the new pool.
$ ceph osd pool set rbd pg_autoscale_mode on set pool 4 pg_autoscale_mode to on
Use warn instead of on when PG count changes require manual approval. Add target_size_ratio or target_size_bytes only when the expected pool share is known before real data arrives.
Related: How to enable the Ceph PG autoscaler
- Initialize the pool for RBD.
$ rbd pool init rbd
No output indicates the pool metadata was initialized successfully.
Do not use --force to override another application tag on a production pool unless the pool was deliberately prepared for RBD and no other workload still owns it.
- Inspect pool detail and confirm the RBD application tag.
$ ceph osd pool ls detail pool 4 'rbd' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 32 pgp_num 32 autoscale_mode on last_change 51 flags hashpspool stripe_width 0 application rbd
The target line should show the pool name, replicated type, size, min_size, autoscaler mode, and application rbd.
- Create a small RBD smoke-test image.
$ rbd create --size 64 rbd/pool-check
The --size value is in MiB unless another unit is supplied. The smoke-test image proves the initialized pool accepts RBD image metadata before clients depend on it.
- List images in the RBD pool.
$ rbd ls rbd pool-check
- Remove the smoke-test image.
$ rbd rm --no-progress rbd/pool-check
No output indicates the temporary image was removed.
Mohd Shakir Zakaria is a cloud architect with deep roots in software development and open-source advocacy. Certified in AWS, Red Hat, VMware, ITIL, and Linux, he specializes in designing and managing robust cloud and on-premises infrastructures.