Storage¶
The cluster uses three storage backends depending on the access pattern required by each app.
Storage Classes¶
| StorageClass | Backend | Reclaim | Used for |
|---|---|---|---|
syno-nfs-retain |
Synology NFS (SSD) | Retain | Primary app data |
syno-nfs |
Synology NFS (SSD) | Delete | Ephemeral shared volumes |
syno-nfs-hdd-retain |
Synology NFS (HDD) | Retain | Large media or cold storage |
syno-nfs-hdd |
Synology NFS (HDD) | Delete | — |
syno-iscsi-retain |
Synology iSCSI | Retain | Block storage (retain) |
syno-iscsi |
Synology iSCSI | Delete | Block storage (ephemeral) |
local-path |
Node-local disk | Delete | Fast local I/O (SQLite) |
Backends¶
Most app data is stored on the Synology NAS via NFS, provisioned by the CSI NFS driver and the Synology CSI driver.
NFS volumes use v4.1 with hard mounts. The SSD pool (/volume2/homelab/k8s/) is used for app config and databases; the HDD pool (/volume1/nfs/) for large or infrequently accessed data.
File ownership
The NAS NFS share is configured with Map root to admin, so containers must run as 1034:100 (the docker user on DSM) to access NFS-backed volumes. See NFS Permissions for details and common pitfalls.
Apps that need NAS-backed storage define a static PersistentVolume + PersistentVolumeClaim pair, binding explicitly to a named path on the NAS. This avoids the NFS driver's default behavior of generating a random directory name, making it easy to identify which folder belongs to which service:
The local-path provisioner allocates storage directly on the node's local disk at /var/mnt/local-path-provisioner. Unlike NFS, no manual PV definition is needed — just a PVC:
kind: PersistentVolumeClaim
spec:
storageClassName: local-path
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
Node affinity
local-path PVCs are bound to whichever node provisioned them and cannot be moved. Apps using local-path must be pinned to a specific node via nodeSelector.
Tip
Used for apps with SQLite databases, where NFS latency causes UI sluggishness. See SQLite + local-path pattern for the full pattern including NFS backup. To expand a local-path volume after resizing the node's disk in Proxmox, see Resizing a local-path Volume.
MinIO provides S3-compatible object storage and runs on the NAS as a cluster dependency — not inside Kubernetes. It is used for long-term storage by the monitoring stack (Thanos, Loki).
Buckets and credentials are managed with OpenTofu — see Provisioning.