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
$ 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+clean
Delay 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
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
$ 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.
$ 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.
$ 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.
$ 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
$ 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.
$ 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.
$ 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.
$ rbd ls rbd pool-check
$ rbd rm --no-progress rbd/pool-check
No output indicates the temporary image was removed.