Skip to content

Ceph Management

Monitor and manage Ceph storage directly from PegaProx. Compatible with PVE 7, 8, and 9 (including Ceph Squid 19.2.x via multi-node fallback and cluster metadata endpoint).

  • Cluster health status and IOPS metrics
  • OSD status and management
  • Pool management (list, create, modify)
  • Usage statistics per pool
  • Integration with VM storage selection

RBD Mirroring

PegaProx supports Ceph RBD mirroring for replicating block device images between clusters:

  • Pool mode - All images in the pool are mirrored automatically
  • Image mode - Select individual RBD images to mirror
  • View mirror sync status and health per pool
  • Peer management (add/remove mirror peers)

RBD mirroring requires the rbd-mirror daemon on both clusters and a pool configured with rbd mirror pool enable. PegaProx manages the configuration but the daemon must be installed separately.

API Endpoints

Method Endpoint Description
GET /api/clusters/{id}/datacenter/ceph Cluster-wide aggregate: health, OSD/MON/MDS/MGR
GET /api/clusters/{id}/nodes/{node}/ceph/status Per-node Ceph status
GET POST /api/clusters/{id}/nodes/{node}/ceph/osd List / create OSDs
DELETE /api/clusters/{id}/nodes/{node}/ceph/osd/{osdid} Remove an OSD
POST /api/clusters/{id}/nodes/{node}/ceph/osd/{osdid}/{action} OSD action (in / out / up / down)
GET POST DELETE /api/clusters/{id}/nodes/{node}/ceph/mon[/{monid}] List / create / remove monitors
GET POST /api/clusters/{id}/nodes/{node}/ceph/pool List / create pools
PUT DELETE /api/clusters/{id}/nodes/{node}/ceph/pool/{name} Modify / delete a pool
GET POST DELETE /api/clusters/{id}/nodes/{node}/ceph/fs[/{name}] List / create / remove CephFS
GET /api/clusters/{id}/nodes/{node}/ceph/mds Metadata servers
GET /api/clusters/{id}/nodes/{node}/ceph/mgr Managers
GET /api/clusters/{id}/nodes/{node}/ceph/rules CRUSH rules
GET /api/clusters/{id}/ceph/mirror/overview RBD mirroring overview
POST /api/clusters/{id}/ceph/mirror/pool/{pool}/enable\|disable Enable / disable pool mirroring
POST /api/clusters/{id}/ceph/mirror/pool/{pool}/peer Add a mirror peer
DELETE /api/clusters/{id}/ceph/mirror/pool/{pool}/peer/{uuid} Remove a mirror peer
POST /api/clusters/{id}/ceph/mirror/pool/{pool}/image/{image}/enable\|disable\|promote\|demote\|resync Per-image mirroring actions
GET POST /api/clusters/{id}/ceph/mirror/pool/{pool}/schedule Mirror snapshot schedule

CRUSH Tree: Proxmox returns OSD data as nested CRUSH tree. PegaProx flattens it into a simple OSD list, annotated with host and CRUSH location.

Creating a Pool via API

bash

curl -X POST https://pegaprox.local:5000/api/clusters/{id}/ceph/pools \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "vm-pool", "size": 3, "pg_num": 128}'

size = replication factor (3 copies). Adjust pg_num based on OSD count (~100 PGs per OSD per pool).

RBD Mirroring Setup

Enable Mirroring

Select pool, choose mode: pool (mirrors all) or image (opt-in per image).

Add Peer

Provide remote Ceph monitor addresses and credentials.

Verify Sync

Check sync state, last sync time, and replication lag in dashboard.