From: Kefu Chai <k.chai@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [PATCH manager 0/5] ceph: add 'pveceph upgrade-check' subcommand
Date: Tue, 28 Apr 2026 10:45:33 +0800 [thread overview]
Message-ID: <20260428024538.3559017-1-k.chai@proxmox.com> (raw)
Hi all,
this series grew out of a chat with Shannon about how easy it is for
upgraded Ceph clusters to silently miss out on features unlocked by
later releases. After a Ceph upgrade, two OSDmap settings often stay
at their old values, and admins forget to bump them:
- require_osd_release: leaving this behind blocks OSD-side features
the new release would otherwise enable. We warn if it is behind the
running version.
https://docs.ceph.com/en/latest/rados/operations/require-osd-release/
- require_min_compat_client: bumping this unlocks newer on-map
features like pg-upmap-primary and the read-balancer, but it's a
one-way change that excludes older clients on enable of any
dependent feature. We notice (not warn) and walk the operator
through 'ceph features' first, so they don't lock anyone out by
accident.
https://docs.ceph.com/en/latest/rados/operations/require-min-compat-client/
Both checks are advisory only. Shannon and I agreed that turning these
knobs on the operator's behalf during an unattended upgrade would be a
show-stopper, so we just nudge.
While I was in there, I also added a 'pveceph upgrade-check' subcommand
so operators can run a Ceph sanity check without having to wade through
the full pve8to9 output. Ceph upgrades can happen multiple times across
a PVE major-release cycle, and the standalone command makes more sense
for that cadence.
The plumbing: a new PVE::Ceph::UpgradeCheck module returns structured
{ level, msg } records, so 'pveceph upgrade-check' and the pve8to9
"CHECKING HYPER-CONVERGED CEPH STATUS" section share the same checks
through their own log helpers. Patch 1 is a pure refactor of pve8to9's
check_ceph() into the new module, byte-diff verified on a real cluster
to make sure pve8to9 emits the same messages in the same order.
Tested on a live PVE 9 / Ceph Squid cluster: pve8to9 output is
byte-identical before/after the refactor (modulo the
require_min_compat_client message wording this series polishes), and
'pveceph upgrade-check' fires both the positive case
(require_osd_release == squid) and the negative case
(require_min_compat_client == luminous) correctly. Summary line counts
match the records emitted.
A pve-docs follow-up for the new subcommand will land separately once
this patchset gets merged.
Thanks!
Kefu Chai (5):
pve8to9: extract ceph checks into PVE::Ceph::UpgradeCheck
ceph: add pveceph upgrade-check command
ceph: add require_osd_release upgrade check
ceph: add require_min_compat_client upgrade check
ceph: drop duplicate release-to-codename map in upgrade checks
PVE/CLI/pve8to9.pm | 203 ++----------------
PVE/CLI/pveceph.pm | 45 ++++
PVE/Ceph/Makefile | 1 +
PVE/Ceph/Releases.pm | 14 ++
PVE/Ceph/Tools.pm | 6 +
PVE/Ceph/UpgradeCheck.pm | 441 +++++++++++++++++++++++++++++++++++++++
6 files changed, 527 insertions(+), 183 deletions(-)
create mode 100644 PVE/Ceph/UpgradeCheck.pm
--
2.47.3
next reply other threads:[~2026-04-28 2:46 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-28 2:45 Kefu Chai [this message]
2026-04-28 2:45 ` [PATCH manager 1/5] pve8to9: extract ceph checks into PVE::Ceph::UpgradeCheck Kefu Chai
2026-04-28 2:45 ` [PATCH manager 2/5] ceph: add pveceph upgrade-check command Kefu Chai
2026-04-28 2:45 ` [PATCH manager 3/5] ceph: add require_osd_release upgrade check Kefu Chai
2026-04-28 2:45 ` [PATCH manager 4/5] ceph: add require_min_compat_client " Kefu Chai
2026-04-28 2:45 ` [PATCH manager 5/5] ceph: drop duplicate release-to-codename map in upgrade checks Kefu Chai
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260428024538.3559017-1-k.chai@proxmox.com \
--to=k.chai@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.