Storage

The cluster uses a layered storage architecture to match workload requirements with the right storage backend. Distributed block storage, node-local volumes, and NAS-backed NFS mounts each serve a distinct purpose.

Architecture

flowchart TD
    Apps[Applications] -->|PersistentVolumeClaim| SC{StorageClass}

    SC -->|ceph-block| RC[(Rook Ceph\n3x ~500GB SATA SSD\nReplicated Block)]
    SC -->|openebs-hostpath| OE[(OpenEBS\nLocal PV\nNode-Local Disk)]
    SC -->|openebs-hostpath-fast / -runners / -media| ZFS[(worker-07 ZFS\nfast: SSD mirrors\nhdd: SAS raidz1)]
    SC -->|openebs-hostpath-models| AI[(worker-ai-01\nNVMe)]
    Apps -->|inline nfs volume| SYN[(Synology NAS\n4-Bay 8TB\nNFS server data)]

    RC -->|CephBlockPool| OSD1[worker-01\nSSD OSD]
    RC -->|CephBlockPool| OSD2[worker-02\nSSD OSD]
    RC -->|CephBlockPool| OSD3[worker-03\nSSD OSD]

    subgraph Backup
        KOP[kopiur] -->|Kopia snapshots| GAR[(Garage S3\non worker-07)]
        SNAP[Snapshot Controller] -->|CSI Snapshots| RC
    end

Storage Classes

StorageClassProviderReplicatedUse Case
ceph-block (default)Rook CephYes (3x)General-purpose workloads requiring high availability
openebs-hostpathOpenEBSNoDatabases and workloads needing low-latency local disk (every node except worker-07)
openebs-hostpath-fastOpenEBS on worker-07 fast/extraZFS mirrorsWorkloads pinned to worker-07 (monitoring TSDBs, media apps)
openebs-hostpath-runnersOpenEBS on worker-07 fast/runnersZFS mirrorsamd64 CI runner scratch, quota-bounded together
openebs-hostpath-mediaOpenEBS on worker-07 hdd/mediaZFS raidz1Immich photo library (Retain)
openebs-hostpath-modelsOpenEBS on worker-ai-01 NVMeNoLLM weights and AI scratch
none (inline type: nfs)Synology NAS (data)RAIDMedia library (/volume1/media) and Frigate recordings (/volume1/cctv)

When to Use Each

Components

ComponentNamespacePurpose
Rook Cephrook-cephDistributed block storage on SATA SSDs
OpenEBSopenebsLocal PV provisioner for node-local storage
kopiurkopiur-systemPVC snapshots (Kopia) to Garage
Snapshot ControllersystemCSI volume snapshots
Garage S3systemS3-compatible object store on worker-07's ZFS pools

Sections

PageDescription
Rook CephDistributed Ceph cluster -- operator, CSI drivers, cluster config, storage classes
OpenEBSLocal PV provisioner and the hostpath storage classes
Garage S3S3-compatible object store (backup target for kopiur and CNPG) -- setup, usage, and operations
Backup & Restorekopiur and CNPG backups to Garage, CSI snapshots, restore procedures, what is not backed up