Skip to main content
RunBook Academy

CephLXXXI · Proxmox IntegrationProxmox Integration

CephFS as Proxmox storage

Intermediate⏱ ~17 mincephpvesmmount

What you'll learn

  • Configure CephFS storage in Proxmox VE
  • Choose between CephFS and RBD per content type
  • Understand the sharing semantics
  • Diagnose CephFS mount problems

Prerequisites

None — start here.

Verified against Ceph Tentacle 20.2.x · Ceph Squid 19.2.x (supported previous) · cephadm matches the verified Ceph release · podman 4.x · csi-rbd and csi-cephfs current · RBD / CephFS / RGW current (matches Ceph release) · Linux kernel 5.15+ (5.10 minimum) · Ubuntu 24.04 LTS (Ceph host baseline) · Debian 12 (Bookworm) (Ceph host baseline) · Rocky Linux / RHEL / AlmaLinux 9.x (Ceph host baseline) · Proxmox VE 9.x (cross-course integration) · Kubernetes 1.31+ (cross-course integration) · 2026-08-18

Not yet marked complete on this device.

Why this matters in production

RBD gives each VM its own block device; CephFS gives every node the same filesystem. The distinction determines which content types belong where.

Configuring it

# on the Ceph side
ceph fs volume create pve-fs
ceph auth get-or-create client.pve-fs \
  mon 'allow r' \
  mds 'allow rw' \
  osd 'allow rw tag cephfs data=pve-fs'
# on the Proxmox side
pvesm add cephfs ceph-shared \
  --monhost '10.0.0.11,10.0.0.12,10.0.0.13' \
  --username pve-fs \
  --content backup,iso,vztmpl,snippets
# /etc/pve/storage.cfg
cephfs: ceph-shared
        monhost 10.0.0.11,10.0.0.12,10.0.0.13
        username pve-fs
        content backup,iso,vztmpl,snippets
        fs-name pve-fs

Choosing per content type

ContentStorageWhy
VM disk imagesRBDblock semantics, per-VM isolation
Container rootfsRBD with krbd 1block device required
ISO imagesCephFSshared, read by every node
Container templatesCephFSsame
BackupsCephFSshared, large sequential
Snippets and hook scriptsCephFSshared configuration

The pattern: anything every node needs to read is CephFS; anything one VM owns is RBD.

Sharing semantics

CephFS: every Proxmox node mounts the same filesystem
        a file written on node A is immediately visible on node B
        POSIX semantics including locking

This is what makes backups and ISO storage work: a backup taken on one node is restorable on any other, and an ISO uploaded once is available everywhere.

mount | grep ceph
df -h /mnt/pve/ceph-shared

Proxmox mounts CephFS storages under /mnt/pve/<storage-id> on every node.

Diagnosing mount problems

pvesm status
systemctl status mnt-pve-ceph\\x2dshared.mount
journalctl -u mnt-pve-ceph\\x2dshared.mount --since '1 hour ago'
dmesg -T | grep -i ceph | tail -20
SymptomCause
Mount fails, permission deniedMDS or OSD capability mismatch
Mount hangsmonitors unreachable, or MDS unavailable
Storage inactive on one node onlythat node’s network or keyring
Slow directory operationsMDS overloaded, or metadata pool on HDD
stale file handleclient blocklisted after a network interruption
ceph fs status pve-fs
ceph mds stat
ceph osd blocklist ls

Quiz

Knowledge check · 4 questions

  1. Q1. Which content types belong on CephFS rather than RBD in a Proxmox deployment?

  2. Q2. A blocklisted CephFS client reconnects automatically once the network recovers.

  3. Q3. Design storage layout for a Proxmox cluster.

    A four-node Proxmox cluster backed by Ceph needs storage for VM disks, container rootfs, ISO images, templates, and backups.

  4. Q4. Why does Proxmox performance benefit disproportionately from a fast CephFS metadata pool?

Passing score: 75%. Answers are checked in this browser.

Production discipline

Split by access pattern: RBD for anything one VM owns, CephFS for anything every node reads. Put the CephFS metadata pool on NVMe — Proxmox performs many metadata operations and their latency is what the interface feels like.

Cross-course references

  • Kubernetes: ReadWriteMany versus ReadWriteOnce volumes is the same distinction
  • Linux: shared filesystem versus block device selection follows identical reasoning