Skip to content

nodes / ceph ​

43 operations.

GET /nodes/{node}/ceph ​

ts
proxmox.nodes.$(node).ceph.$get()

Directory index.

Returns an array of object.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node

GET /nodes/{node}/ceph/cfg ​

ts
proxmox.nodes.$(node).ceph.cfg.$get()

Directory index.

Returns an array of object.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node

GET /nodes/{node}/ceph/cfg/db ​

ts
proxmox.nodes.$(node).ceph.cfg.db.$get()

Get the Ceph configuration database.

Returns an array of object.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node

GET /nodes/{node}/ceph/cfg/raw ​

ts
proxmox.nodes.$(node).ceph.cfg.raw.$get()

Get the Ceph configuration file.

Returns string.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node

GET /nodes/{node}/ceph/cfg/value ​

ts
proxmox.nodes.$(node).ceph.cfg.value.$get()

Get configured values from either ceph.conf or the mon config DB. Underscores in section and key names are normalised to hyphens in the response, regardless of how they're written in the source.

Returns object.

ParameterTypeRequiredNotes
config-keysstringyesList of <section>:<config key> items separated by semicolon, comma or space. — ≤ 4096 chars
nodestringyesThe cluster node name. — format pve-node

GET /nodes/{node}/ceph/cmd-safety ​

ts
proxmox.nodes.$(node).ceph["cmd-safety"].$get()

Heuristical check if it is safe to perform an action.

Returns object.

ParameterTypeRequiredNotes
actionstop | destroyyesAction to check
idstringyesID of the service
nodestringyesThe cluster node name. — format pve-node
serviceosd | mon | mdsyesService type

GET /nodes/{node}/ceph/crush ​

ts
proxmox.nodes.$(node).ceph.crush.$get()

Get OSD crush map

Returns string.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node

GET /nodes/{node}/ceph/fs ​

ts
proxmox.nodes.$(node).ceph.fs.$get()

Directory index.

Returns an array of object.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node

POST /nodes/{node}/ceph/fs/{name} ​

ts
proxmox.nodes.$(node).ceph.fs.$(name).$post()

Create a Ceph filesystem

Returns string.

ParameterTypeRequiredNotes
add-storagebooleanConfigure the created CephFS as storage for this cluster. — default 0
namestringThe ceph filesystem name. — default "cephfs"
nodestringyesThe cluster node name. — format pve-node
pg_numnumberNumber of placement groups for the backing data pool. The metadata pool will use a quarter of this. — min 8, max 32768, default 128

DELETE /nodes/{node}/ceph/fs/{name} ​

ts
proxmox.nodes.$(node).ceph.fs.$(name).$delete()

Destroy a Ceph filesystem. Refuses if any PVE storage entry of type 'cephfs' still references the filesystem and is not disabled. Optionally also removes the storage entries and/or the underlying metadata and data pools.

Returns string.

ParameterTypeRequiredNotes
namestringyesThe Ceph filesystem name.
nodestringyesThe cluster node name. — format pve-node
remove-poolsbooleanRemove the metadata and data pools used by this filesystem. — default 0
remove-storagesbooleanRemove pveceph-managed storages configured for this filesystem. — default 0

POST /nodes/{node}/ceph/init ​

ts
proxmox.nodes.$(node).ceph.init.$post()

Create the initial Ceph default configuration and set up symlinks. Idempotent on re-call: if a [global] section already exists in ceph.conf, the existing fsid / auth / pool defaults are preserved and most parameters are silently ignored.

Returns nothing.

ParameterTypeRequiredNotes
cluster-networkstringDeclare a separate cluster network, OSDs will route heartbeat, object replication and recovery traffic over it — format CIDR, ≤ 128 chars
disable_cephxbooleanDisable cephx authentication. WARNING: cephx is a security feature protecting against man-in-the-middle attacks. Only consider disabling cephx if your network is private! — default 0
min_sizenumberMinimum number of available replicas per object to allow I/O — min 1, max 7, default 2
networkstringUse specific network for all ceph related traffic — format CIDR, ≤ 128 chars
nodestringyesThe cluster node name. — format pve-node
pg_bitsnumberPlacement group bits, used to specify the default number of placement groups. Depreacted. This setting was deprecated in recent Ceph versions. — min 6, max 14, default 6
sizenumberTargeted number of replicas per object — min 1, max 7, default 3

GET /nodes/{node}/ceph/log ​

ts
proxmox.nodes.$(node).ceph.log.$get()

Read ceph log

Returns an array of object.

ParameterTypeRequiredNotes
limitnumberMaximum number of log lines to return. Defaults to the dump_logfile limit (typically 50) when omitted. — min 0
nodestringyesThe cluster node name. — format pve-node
startnumberOffset of the first log line to return (0-based). — min 0

GET /nodes/{node}/ceph/mds ​

ts
proxmox.nodes.$(node).ceph.mds.$get()

MDS directory index.

Returns an array of object.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node

POST /nodes/{node}/ceph/mds/{name} ​

ts
proxmox.nodes.$(node).ceph.mds.$(name).$post()

Create Ceph Metadata Server (MDS)

Returns string.

ParameterTypeRequiredNotes
hotstandbybooleanDetermines whether a ceph-mds daemon should poll and replay the log of an active MDS. Faster switch on MDS failure, but needs more idle resources. Deprecated: the setting was removed in Ceph 14.1.1. — default 0
namestringThe ID for the mds, when omitted the same as the nodename — ≤ 200 chars, default "nodename"
nodestringyesThe cluster node name. — format pve-node

DELETE /nodes/{node}/ceph/mds/{name} ​

ts
proxmox.nodes.$(node).ceph.mds.$(name).$delete()

Destroy Ceph Metadata Server

Returns string.

ParameterTypeRequiredNotes
namestringyesThe name (ID) of the mds
nodestringyesThe cluster node name. — format pve-node

GET /nodes/{node}/ceph/mgr ​

ts
proxmox.nodes.$(node).ceph.mgr.$get()

MGR directory index.

Returns an array of object.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node

POST /nodes/{node}/ceph/mgr/{id} ​

ts
proxmox.nodes.$(node).ceph.mgr.$(id).$post()

Create Ceph Manager

Returns string.

ParameterTypeRequiredNotes
idstringThe ID for the manager, when omitted the same as the nodename. — ≤ 200 chars, default "nodename"
nodestringyesThe cluster node name. — format pve-node

DELETE /nodes/{node}/ceph/mgr/{id} ​

ts
proxmox.nodes.$(node).ceph.mgr.$(id).$delete()

Destroy Ceph Manager.

Returns string.

ParameterTypeRequiredNotes
idstringyesThe ID of the manager
nodestringyesThe cluster node name. — format pve-node

GET /nodes/{node}/ceph/mon ​

ts
proxmox.nodes.$(node).ceph.mon.$get()

Get Ceph monitor list.

Returns an array of object.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node

POST /nodes/{node}/ceph/mon/{monid} ​

ts
proxmox.nodes.$(node).ceph.mon.$(monid).$post()

Create a Ceph Monitor. Also auto-creates a Manager for the first monitor.

Returns string.

ParameterTypeRequiredNotes
mon-addressstringOverwrites autodetected monitor IP address(es). Must be in the public network(s) of Ceph. — format ip-list
monidstringThe ID for the monitor, when omitted the same as the nodename. — ≤ 200 chars, default "nodename"
nodestringyesThe cluster node name. — format pve-node

DELETE /nodes/{node}/ceph/mon/{monid} ​

ts
proxmox.nodes.$(node).ceph.mon.$(monid).$delete()

Destroy a Ceph Monitor. Refuses to remove the last monitor of the cluster. Does not destroy any Manager on the same node; use /nodes/{node}/ceph/mgr/{id} for that.

Returns string.

ParameterTypeRequiredNotes
monidstringyesMonitor ID
nodestringyesThe cluster node name. — format pve-node

GET /nodes/{node}/ceph/osd ​

ts
proxmox.nodes.$(node).ceph.osd.$get()

Get Ceph osd list/tree.

Returns object.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node

POST /nodes/{node}/ceph/osd ​

ts
proxmox.nodes.$(node).ceph.osd.$post()

Create OSD

Returns string.

ParameterTypeRequiredNotes
crush-device-classstringSet the device class of the OSD in crush.
db_devstringBlock device name for block.db.
db_dev_sizenumberSize in GiB for block.db. — min 1
devstringyesBlock device name.
encryptedbooleanEnables encryption of the OSD. — default 0
nodestringyesThe cluster node name. — format pve-node
osds-per-devicenumberOSD services per physical device. Only useful for fast NVMe devices to utilize their performance better. Mutually exclusive with 'db_dev' and 'wal_dev'. — min 1
wal_devstringBlock device name for block.wal.
wal_dev_sizenumberSize in GiB for block.wal. — min 0.5

GET /nodes/{node}/ceph/osd/{osdid} ​

ts
proxmox.nodes.$(node).ceph.osd.$(osdid).$get()

OSD index.

Returns an array of object.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node
osdidnumberyesOSD ID

DELETE /nodes/{node}/ceph/osd/{osdid} ​

ts
proxmox.nodes.$(node).ceph.osd.$(osdid).$delete()

Destroy OSD

Returns string.

ParameterTypeRequiredNotes
cleanupbooleanIf set, also destroy the underlying logical volumes via 'ceph-volume lvm zap --destroy', remove the volume group's physical volume with pvremove, and wipe any journal/block.db/block.wal partitions left over from filestore OSDs. Without this flag the LVs and partitions are left intact for inspection. — default 0
nodestringyesThe cluster node name. — format pve-node
osdidnumberyesOSD ID

POST /nodes/{node}/ceph/osd/{osdid}/in ​

ts
proxmox.nodes.$(node).ceph.osd.$(osdid).in.$post()

ceph osd in

Returns nothing.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node
osdidnumberyesOSD ID

GET /nodes/{node}/ceph/osd/{osdid}/lv-info ​

ts
proxmox.nodes.$(node).ceph.osd.$(osdid)["lv-info"].$get()

Get OSD volume details

Returns object.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node
osdidnumberyesOSD ID
typeblock | db | walOSD device type — default "block"

GET /nodes/{node}/ceph/osd/{osdid}/metadata ​

ts
proxmox.nodes.$(node).ceph.osd.$(osdid).metadata.$get()

Get OSD details

Returns object.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node
osdidnumberyesOSD ID

POST /nodes/{node}/ceph/osd/{osdid}/out ​

ts
proxmox.nodes.$(node).ceph.osd.$(osdid).out.$post()

ceph osd out

Returns nothing.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node
osdidnumberyesOSD ID

POST /nodes/{node}/ceph/osd/{osdid}/scrub ​

ts
proxmox.nodes.$(node).ceph.osd.$(osdid).scrub.$post()

Instruct the OSD to scrub.

Returns nothing.

ParameterTypeRequiredNotes
deepbooleanIf set, instructs a deep scrub instead of a normal one. — default 0
nodestringyesThe cluster node name. — format pve-node
osdidnumberyesOSD ID

GET /nodes/{node}/ceph/pool ​

ts
proxmox.nodes.$(node).ceph.pool.$get()

List all pools and their settings (which are settable by the POST/PUT endpoints).

Returns an array of object.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node

POST /nodes/{node}/ceph/pool ​

ts
proxmox.nodes.$(node).ceph.pool.$post()

Create Ceph pool

Returns string.

ParameterTypeRequiredNotes
add_storagesbooleanConfigure VM and CT storage using the new pool. Defaults to false for replicated pools and to true for erasure-coded pools (since EC pools are typically only useful when wired up to storage). — default 0
applicationrbd | cephfs | rgwThe application of the pool. — default "rbd"
crush_rulestringThe rule to use for mapping object placement in the cluster.
erasure-codingstringCreate an erasure coded pool for RBD with an accompaning replicated pool for metadata storage. With EC, the common ceph options 'size', 'min_size' and 'crush_rule' parameters will be applied to the metadata pool.
min_sizenumberMinimum number of replicas per object — min 1, max 7, default 2
namestringyesThe name of the pool. It must be unique.
nodestringyesThe cluster node name. — format pve-node
pg_autoscale_modeon | off | warnThe automatic PG scaling mode of the pool. — default "warn"
pg_numnumberNumber of placement groups. — min 1, max 32768, default 128
pg_num_minnumberMinimal number of placement groups. — max 32768
sizenumberNumber of replicas per object — min 1, max 7, default 3
target_sizestringThe estimated target size of the pool for the PG autoscaler.
target_size_rationumberThe estimated target ratio of the pool for the PG autoscaler.

GET /nodes/{node}/ceph/pool/{name} ​

ts
proxmox.nodes.$(node).ceph.pool.$(name).$get()

Pool index.

Returns an array of object.

ParameterTypeRequiredNotes
namestringyesThe name of the pool.
nodestringyesThe cluster node name. — format pve-node

PUT /nodes/{node}/ceph/pool/{name} ​

ts
proxmox.nodes.$(node).ceph.pool.$(name).$put()

Change POOL settings

Returns string.

ParameterTypeRequiredNotes
applicationrbd | cephfs | rgwThe application of the pool.
crush_rulestringThe rule to use for mapping object placement in the cluster.
min_sizenumberMinimum number of replicas per object — min 1, max 7
namestringyesThe name of the pool. It must be unique.
nodestringyesThe cluster node name. — format pve-node
pg_autoscale_modeon | off | warnThe automatic PG scaling mode of the pool.
pg_numnumberNumber of placement groups. — min 1, max 32768
pg_num_minnumberMinimal number of placement groups. — max 32768
sizenumberNumber of replicas per object — min 1, max 7
target_sizestringThe estimated target size of the pool for the PG autoscaler.
target_size_rationumberThe estimated target ratio of the pool for the PG autoscaler.

DELETE /nodes/{node}/ceph/pool/{name} ​

ts
proxmox.nodes.$(node).ceph.pool.$(name).$delete()

Destroy pool

Returns string.

ParameterTypeRequiredNotes
forcebooleanIf true, destroys pool even if in use — default 0
namestringyesThe name of the pool. It must be unique.
nodestringyesThe cluster node name. — format pve-node
remove_ecprofilebooleanRemove the erasure code profile. Defaults to true, if applicable. — default 1
remove_storagesbooleanRemove all pveceph-managed storages configured for this pool — default 0

GET /nodes/{node}/ceph/pool/{name}/status ​

ts
proxmox.nodes.$(node).ceph.pool.$(name).status.$get()

Show the current pool status.

Returns object.

ParameterTypeRequiredNotes
namestringyesThe name of the pool. It must be unique.
nodestringyesThe cluster node name. — format pve-node
verbosebooleanIf enabled, will display additional data(eg. statistics). — default 0

GET /nodes/{node}/ceph/releases ​

ts
proxmox.nodes.$(node).ceph.releases.$get()

List all known Ceph releases, marking which ones can be installed on this node.

Returns an array of object.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node

POST /nodes/{node}/ceph/restart ​

ts
proxmox.nodes.$(node).ceph.restart.$post()

Restart ceph services.

Returns string.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node
servicestringCeph service name. — default "ceph.target"

POST /nodes/{node}/ceph/restart-bulk ​

ts
proxmox.nodes.$(node).ceph["restart-bulk"].$post()

Rolling restart of all Ceph OSDs on this node. Each OSD is restarted only after Ceph reports the previous one is back up and the next one is safe to stop. For non-OSD Ceph daemons, use the cluster-wide endpoint at /cluster/ceph/restart-bulk. The 'noout' flag is applied only to the OSDs targeted by this run, so unrelated OSDs on other nodes that fail during the restart window still get out-marked normally. Aborting the resulting task (for example via 'pvesh task stop') triggers a SIGTERM handler that unsets the per-OSD 'noout' if this endpoint set it. Per-daemon progress is checkpointed in Ceph's config-key store ('pve/ceph-bulk-restart/node/<node>'), so an aborted run can be resumed by re-issuing this endpoint with 'resume=1'.

Returns string.

ParameterTypeRequiredNotes
dry-runbooleanLog the plan (which OSDs would be restarted, in what order) without actually doing anything. — default 0
forcebooleanProceed past a HEALTH_WARN with non-benign checks like PG_DEGRADED, SLOW_OPS, or MON_DOWN. A blocking HEALTH_ERR is fatal regardless of this flag. Checks that ceph reports as muted, and checks known to be harmless for a rolling restart, never block and are named in the task log. The cluster-wide OSD map flags are only ever evaluated for an OSD restart, since they govern nothing a mon, mgr or mds restart touches. The operator is responsible for confirming the cluster is stable enough to absorb a rolling restart. — default 0
nodestringyesThe cluster node name. — format pve-node
only-outdatedbooleanRestart only OSDs whose running version differs from the locally-installed ceph-osd binary. Useful for post-upgrade rolling restarts that should touch only daemons that need it. Refuses if the local binary version cannot be determined. Ignored on resume (the saved plan is used as-is). — default 0
resumebooleanResume an aborted bulk-restart from the checkpoint stored in Ceph's config-key store. The plan and noout decision from the prior run are honored; 'set-noout' is ignored. When false (default), the endpoint refuses to start if a checkpoint exists for this node, to avoid silently overwriting in-progress work. — default 0
service-typeosdyesCeph daemon type to restart. Only OSDs can be rolling-restarted on a per-node basis.
set-nooutbooleanSet the 'noout' flag on each OSD targeted by this run for the duration of the rolling restart, and unset it on completion. Per-OSD rather than cluster-wide so that unrelated OSDs failing on other nodes still trigger backfill normally. — default 1
timeoutnumberPer-OSD timeout (in seconds). Bounds both the wait for a restarted OSD to come back up and the wait for recovery to quiesce enough that Ceph reports the next OSD safe to stop. Default sized for busy clusters where multi-TB OSDs with many PGs can need several minutes to clear peering after a restart; bump higher for very large or heavily-loaded OSDs. — min 30, max 1800, default 600

GET /nodes/{node}/ceph/rules ​

ts
proxmox.nodes.$(node).ceph.rules.$get()

List ceph rules.

Returns an array of object.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node

POST /nodes/{node}/ceph/start ​

ts
proxmox.nodes.$(node).ceph.start.$post()

Start ceph services.

Returns string.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node
servicestringCeph service name. — default "ceph.target"

GET /nodes/{node}/ceph/status ​

ts
proxmox.nodes.$(node).ceph.status.$get()

Get the Ceph cluster status (raw 'ceph status' output). The response is cluster-wide and identical to /cluster/ceph/status; this node-level alias exists for operator convenience.

Returns object.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node

POST /nodes/{node}/ceph/stop ​

ts
proxmox.nodes.$(node).ceph.stop.$post()

Stop ceph services.

Returns string.

ParameterTypeRequiredNotes
nodestringyesThe cluster node name. — format pve-node
servicestringCeph service name. — default "ceph.target"