homelab/deployment/storage/ha-pvs/pvs.yaml
Dan V 12b62bea00 storage: rename ZFS datasets — jellyfin→media, immich→photos, games children restructured
- media-pool/jellyfin renamed to media-pool/media (mountpoint /data/media unchanged)
- media-pool/immich renamed to media-pool/photos (mountpoint /data/photos unchanged)
- media-pool/minecraft → media-pool/games/minecraft (child of games)
- media-pool/factorio → media-pool/games/factorio (child of games)
- media-pool/openttd → media-pool/games/openttd (child of games)
- Individual game quotas removed; single 1T quota set on media-pool/games
- Removed stale legacy /media-pool/jellyfin etc. from HP /etc/exports
- Updated pvs.yaml section headers to reflect new ZFS dataset names

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-27 22:30:27 +01:00

351 lines
7.4 KiB
YAML

---
# HA Persistent Volumes — Dell NFS primary via keepalived VIP 192.168.2.252
# On Dell failure, VIP moves to HP which serves identical paths via rsync mirror
# All PVs use reclaimPolicy: Retain to protect data
# ==================== MEDIA (Jellyfin) — ZFS: media-pool/media ====================
apiVersion: v1
kind: PersistentVolume
metadata:
name: jellyfin-media-pv
spec:
capacity:
storage: 650Gi
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
server: 192.168.2.252
path: /data/media/media
claimRef:
namespace: media
name: jellyfin-media-v2-pvc
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: jellyfin-config-pv
spec:
capacity:
storage: 10Gi
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
server: 192.168.2.252
path: /data/media/jellyfin-config
claimRef:
namespace: media
name: jellyfin-config-v2-pvc
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: jellyfin-cache-pv
spec:
capacity:
storage: 10Gi
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
server: 192.168.2.252
path: /data/media/jellyfin-cache
claimRef:
namespace: media
name: jellyfin-cache-v2-pvc
---
# ==================== PHOTOS (Immich) — ZFS: media-pool/photos ====================
apiVersion: v1
kind: PersistentVolume
metadata:
name: immich-library-pv
spec:
capacity:
storage: 290Gi
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
server: 192.168.2.252
path: /data/photos/immich-library
claimRef:
namespace: media
name: immich-library-v2-pvc
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: immich-db-pv
spec:
capacity:
storage: 20Gi
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
server: 192.168.2.252
path: /data/photos/immich-db
claimRef:
namespace: media
name: immich-db-v2-pvc
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: immich-ml-cache-pv
spec:
capacity:
storage: 20Gi
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
server: 192.168.2.252
path: /data/photos/immich-ml-cache
claimRef:
namespace: media
name: immich-ml-cache-v2-pvc
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: immich-valkey-pv
spec:
capacity:
storage: 1Gi
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
server: 192.168.2.252
path: /data/photos/immich-valkey
claimRef:
namespace: media
name: immich-valkey-v2-pvc
---
# ==================== STORAGE (OwnCloud) ====================
apiVersion: v1
kind: PersistentVolume
metadata:
name: owncloud-files-pv
spec:
capacity:
storage: 190Gi
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
server: 192.168.2.252
path: /data/owncloud/owncloud-files
claimRef:
namespace: storage
name: owncloud-files-v2-pvc
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: owncloud-mariadb-pv
spec:
capacity:
storage: 5Gi
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
server: 192.168.2.252
path: /data/owncloud/mariadb
claimRef:
namespace: storage
name: owncloud-mariadb-v2-pvc
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: owncloud-redis-pv
spec:
capacity:
storage: 1Gi
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
server: 192.168.2.252
path: /data/owncloud/redis
claimRef:
namespace: storage
name: owncloud-redis-v2-pvc
---
# ==================== GAMES (Minecraft) ====================
apiVersion: v1
kind: PersistentVolume
metadata:
name: minecraft-home-pv
spec:
capacity:
storage: 10Gi
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
server: 192.168.2.252
path: /data/games/minecraft/home
claimRef:
namespace: games
name: minecraft-home-v2-pvc
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: minecraft-cheats-pv
spec:
capacity:
storage: 10Gi
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
server: 192.168.2.252
path: /data/games/minecraft/cheats
claimRef:
namespace: games
name: minecraft-cheats-v2-pvc
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: minecraft-creative-pv
spec:
capacity:
storage: 10Gi
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
server: 192.168.2.252
path: /data/games/minecraft/creative
claimRef:
namespace: games
name: minecraft-creative-v2-pvc
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: minecraft-johannes-pv
spec:
capacity:
storage: 10Gi
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
server: 192.168.2.252
path: /data/games/minecraft/johannes
claimRef:
namespace: games
name: minecraft-johannes-v2-pvc
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: minecraft-noah-pv
spec:
capacity:
storage: 10Gi
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
server: 192.168.2.252
path: /data/games/minecraft/noah
claimRef:
namespace: games
name: minecraft-noah-v2-pvc
---
# ==================== GAMES (Factorio / OpenTTD) ====================
apiVersion: v1
kind: PersistentVolume
metadata:
name: factorio-alone-pv
spec:
capacity:
storage: 5Gi
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
server: 192.168.2.252
path: /data/games/factorio/alone
claimRef:
namespace: games
name: factorio-alone-v2-pvc
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: openttd-pv
spec:
capacity:
storage: 2Gi
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
server: 192.168.2.252
path: /data/games/openttd/main
claimRef:
namespace: games
name: openttd-v2-pvc
---
# ==================== INFRASTRUCTURE ====================
apiVersion: v1
kind: PersistentVolume
metadata:
name: general-db-pv
spec:
capacity:
storage: 10Gi
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
server: 192.168.2.252
path: /data/infra/general-db
claimRef:
namespace: infrastructure
name: general-db-v2-pvc
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: speedtest-tracker-pv
spec:
capacity:
storage: 1Gi
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
server: 192.168.2.252
path: /data/infra/speedtest
claimRef:
namespace: infrastructure
name: speedtest-tracker-v2-pvc
---
# ==================== IOT ====================
apiVersion: v1
kind: PersistentVolume
metadata:
name: iot-db-pv
spec:
capacity:
storage: 10Gi
accessModes: [ReadWriteOnce]
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
server: 192.168.2.252
path: /data/infra/iot-db
claimRef:
namespace: iot
name: iot-db-v2-pvc