CephXVII · PoolsPools
Application tagging — telling Ceph who owns a pool
What you'll learn
- Set application tags correctly for each service
- Explain what the tag affects beyond the health warning
- Diagnose problems caused by missing or wrong tags
- Use tags to document pool ownership
Prerequisites
None — start here.
Verified against Ceph Tentacle 20.2.x · Ceph Squid 19.2.x (supported previous) · cephadm matches the verified Ceph release · podman 4.x · csi-rbd and csi-cephfs current · RBD / CephFS / RGW current (matches Ceph release) · Linux kernel 5.15+ (5.10 minimum) · Ubuntu 24.04 LTS (Ceph host baseline) · Debian 12 (Bookworm) (Ceph host baseline) · Rocky Linux / RHEL / AlmaLinux 9.x (Ceph host baseline) · Proxmox VE 9.x (cross-course integration) · Kubernetes 1.31+ (cross-course integration) · 2026-08-18
Why this matters in production
POOL_APP_NOT_ENABLED is one of the most frequently muted health
warnings in Ceph, and muting it is how clusters arrive at pools nobody
can identify.
Setting the tag
ceph osd pool application enable rbd-vms rbd
ceph osd pool application enable cephfs_data cephfs
ceph osd pool application enable rgw-data rgw
ceph osd pool application get rbd-vms
ceph osd pool ls detail | grep application
The three standard values are rbd, cephfs, and rgw. Custom
values are allowed for pools used directly through librados:
ceph osd pool application enable app-state my-application
What the tag affects
Beyond silencing the warning:
rbdrefuses to operate on untagged pools.rbd createagainst a pool without therbdtag fails.- CephFS and RGW expect their pools tagged, and tooling uses the tag to identify them.
- The dashboard groups pools by application.
- It documents intent, which on a cluster with fifteen pools and four years of history is the single most useful property.
Identifying an untagged pool
If you inherit one:
# POOL is the untagged pool, from `ceph osd pool ls`; substitute your own:
POOL=rbd-vms
rados -p "$POOL" ls | head -20
Object naming identifies the owner:
| Pattern | Owner |
|---|---|
rbd_data.<hex>.<seq>, rbd_header.<hex> | RBD |
<hex>.00000000 with an inode-shaped prefix | CephFS data |
<marker>_<key>, .dir.<marker> | RGW |
| anything else | direct librados or unknown |
POOL=rbd-vms
ceph osd pool stats ${POOL} # is it receiving I/O?
ceph df detail # how large is it?
The habit
Add it to pool creation:
NAME=acme
PGS=pgs
RULE=replicated_rule
APP=app
TEAM=team
ceph osd pool create ${NAME} ${PGS} ${PGS} replicated ${RULE}
ceph osd pool set ${NAME} size 3
ceph osd pool set ${NAME} min_size 2
ceph osd pool application enable ${NAME} ${APP}
ceph osd pool application set ${NAME} ${APP} owner ${TEAM}
Four commands, one of which is the tag. Nobody mutes a warning that never fires.
Quiz
Knowledge check · 4 questions
Q1. What happens if you attempt rbd create against a pool with no application tag?
Q2. A wrong application tag is less harmful than no tag at all.
Q3. An inherited cluster has POOL_APP_NOT_ENABLED muted and three untagged pools. Identify them.
Three untagged pools of 40 GB, 900 GB, and 4 TB. The warning has been muted for eighteen months. No documentation exists. ceph osd pool stats shows the 4 TB pool receiving steady I/O, the 900 GB pool receiving occasional I/O, and the 40 GB pool receiving none. The team wants to tag what is in use and reclaim what is not.
Q4. Explain why POOL_APP_NOT_ENABLED should be fixed rather than muted.
Passing score: 75%. Answers are checked in this browser.
Production discipline
Put ceph osd pool application enable in the pool creation procedure
so the warning never fires, and use the key-value form to record the
owning team in the cluster rather than only in a document. Never mute
POOL_APP_NOT_ENABLED — it takes one command to resolve and muting it
is how clusters end up with pools nobody can identify. And set the tag
correctly the first time, since a wrong tag causes silent
misidentification where a missing one at least asks to be fixed.
Cross-course references
- Ceph: Part XVII lesson on pool purpose for the wider design.
- Ceph: Part LIII (Cluster Health) for handling warnings generally.
- Ceph: Part XLII (CephFS Operations) for filesystem pool tags.