all lists on lists.proxmox.com
 help / color / mirror / Atom feed
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





             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.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal