Skip to main content
RunBook Academy

CephXCIX · Upgrade PlanningUpgrade Planning

Reading release notes as an operational document

Intermediate⏱ ~17 minceph

What you'll learn

  • Locate the release notes for a target version
  • Extract the sections that affect operations
  • Identify deprecations affecting your configuration
  • Turn the notes into a checklist

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

Not yet marked complete on this device.

Why this matters in production

Release notes are long and most of their content is irrelevant to any given cluster. The skill is extracting the part that is not.

Where they are

docs.ceph.com/en/latest/releases/<name>/
The named release page carries the major changes.
Each point release has its own notes with the fixes it carries.
Read both: the named release notes for the behaviour changes, and every
intervening point release for the fixes and regressions.

The sections that matter operationally

SectionWhy
Upgrade instructionsmay specify an order or prerequisite this release needs
Notable changesbehaviour that differs from what your runbooks assume
Deprecationsfeatures you may be using that are going away
Removalsfeatures already gone in this release
Known issuesproblems documented before you encounter them
Default value changestuning you set explicitly may now be redundant, or vice versa
The last is the one most often missed. A default changing means a cluster
that never set the value explicitly now behaves differently.

Extracting what applies

# what the cluster actually uses
ceph config dump
ceph mgr module ls | python3 -c '
import sys,json
d=json.load(sys.stdin)
print("enabled:", d.get("enabled_modules"))'
ceph osd pool ls detail | grep -oE 'erasure|replicated' | sort | uniq -c
ceph fs ls
ceph orch ls
Cross-reference:
  every module the cluster has enabled
  every service type deployed
  every config option set explicitly
against the deprecations and changes in the notes.
# options set explicitly, which are the ones a default change could affect
ceph config dump --format json | python3 -c '
import sys,json
for o in json.load(sys.stdin):
    print("%-20s %-40s %s" % (o.get("section"), o.get("name"), o.get("value")))'

Turning the notes into a checklist

For each relevant item, record:
  what changes
  whether this cluster is affected
  what to do before the upgrade
  what to verify after
Item typePre-upgrade actionPost-upgrade check
A deprecation you useplan the migrationconfirm the replacement works
A removal you usemigrate before upgradingconfirm nothing references it
A default changedecide whether to pin the old valueconfirm behaviour matches expectation
A known issuedecide whether it blocksconfirm it did or did not occur
A behaviour changeupdate runbooksconfirm the new behaviour

Quiz

Knowledge check · 4 questions

  1. Q1. Why do default value changes deserve particular attention in release notes?

  2. Q2. An upgrade from 19.2.0 to 19.2.4 crosses changes that are documented in no named-release notes at all.

  3. Q3. Extract what applies from a release's notes.

    The target release notes run to several thousand words covering RGW, CephFS, RBD, and the dashboard. The cluster serves RBD only.

  4. Q4. Which commands establish what a cluster actually runs, for cross-referencing against release notes?

Passing score: 75%. Answers are checked in this browser.

Production discipline

Read the point release notes as well as the named release notes — an upgrade within a named release crosses no named release at all, and its changes live entirely there. Pay particular attention to default value changes, which alter behaviour on clusters that never set the option.

Cross-course references

  • Kubernetes: changelog reading follows the same cross-reference-against-deployed discipline
  • Linux: default changes in a package upgrade affect exactly the configurations that never overrode them