Notice

This document is for a development version of Ceph.

Minimum OSD Release

The require_osd_release field of the OSDMap is the cluster-wide declaration that every OSD is running at least the named release. It is set by the operator at the tail of a cluster upgrade, once all OSDs have been upgraded to the new binary. Raising it unlocks features that would otherwise be rejected as unsafe, and it bounds how far ahead of the cluster a new OSD release is allowed to boot.

Unlike Minimum Compatible Client, which can be lowered when features in use permit, require_osd_release can only move forward.

Setting the flag

ceph osd require-osd-release <release>

For example, after finishing an upgrade to tentacle:

ceph osd require-osd-release tentacle

Monitors only accept a small set of recent release names. The current accepted targets are squid, tentacle, and umbrella; any older release name is rejected with not supported for this release. The accepted set slides forward as new Ceph releases are added.

The target release must be in the accepted set and must not be older than the current value; setting it to the current value is a no-op. Additionally, the Monitors verify that every Monitor in the quorum and every up OSD advertises the target release’s feature bits. The Monitor feature check has no bypass; the OSD feature check can be overridden with --yes-i-really-mean-it, but any OSD that lacks the feature will still be refused when it tries to boot (see OSD boot window).

Checking the current value

ceph osd dump | grep require_osd_release

What raising the flag enables

Raising require_osd_release unlocks a set of commands and features that the monitor refuses while the flag is below the required level.

Required release

Commands or features unlocked

luminous

ceph osd crush set-device-class, ceph osd crush rm-device-class

nautilus

pg_autoscale_mode, target_size_bytes, target_size_ratio, new-format pg_num changes

tentacle

allow_ec_optimizations pool flag

The gates are cumulative: a cluster whose require_osd_release is at squid or higher satisfies the luminous and nautilus gates automatically. Because the current accepted-target set does not include releases older than squid, the luminous and nautilus rows are historical on modern clusters and are listed for completeness.

OSD boot window

An OSD refuses to boot if it is running a release that is more than two ahead of require_osd_release. For example, with require_osd_release set to reef:

OSD release

Boots?

Notes

reef

yes

Same release.

squid

yes

One release ahead.

tentacle

yes

Two releases ahead (at the edge of the window).

umbrella

no

disallowing boot of umbrella+ OSD ... because require_osd_release < squid

This sliding window forces operators to raise require_osd_release roughly every two releases, keeping the cluster’s OSD code span bounded.

Health warning: OSD_UPGRADE_FINISHED

If all up OSDs advertise the SERVER_<RELEASE> feature but require_osd_release is still below that release, the Monitors emit a HEALTH_WARN check OSD_UPGRADE_FINISHED with the message:

all OSDs are running <release> or later but require_osd_release < <release>

The appearance of this warning is the normal cue to run ceph osd require-osd-release <release>; the warning clears once the flag has been raised.

Initial value on new clusters

New clusters start with require_osd_release set to the newest release the Monitor code knows about. On this release that is umbrella. Two developer options adjust the initial value for testing; neither should be used in production.

mon_debug_no_require_umbrella

Do not require the Umbrella feature for new Monitor clusters

type:

bool

runtime updatable:

false

default:

false

mon_debug_no_require_tentacle

Do not require the Tentacle feature for new Monitor clusters

type:

bool

runtime updatable:

false

default:

false

Setting mon_debug_no_require_umbrella alone downshifts the initial value to tentacle; setting both flags downshifts it further to squid. The tentacle flag has no effect unless the umbrella flag is also set.

Brought to you by the Ceph Foundation

The Ceph Documentation is a community resource funded and hosted by the non-profit Ceph Foundation. If you would like to support this and our other efforts, please consider joining now.