diff --git a/clusters/base/apps/immich/helmrelease-server.yaml b/clusters/base/apps/immich/helmrelease-server.yaml index 6446224..2e7dca1 100644 --- a/clusters/base/apps/immich/helmrelease-server.yaml +++ b/clusters/base/apps/immich/helmrelease-server.yaml @@ -14,6 +14,11 @@ spec: controllers: server: strategy: Recreate + # temporarily disabled while /data is being split into separate + # per-purpose Longhorn volumes (encoded-video, thumbs, backups, + # data) and the old combined "other" volume is preserved untouched + # as a fallback, remounted at /data-old. + replicas: 0 podDisruptionBudget: maxUnavailable: "0" initContainers: @@ -189,8 +194,53 @@ spec: server: mergerfs: - path: /dev/fuse - # everything immich keeps outside "library" (backups, encoded-video, - # profile, thumbs, upload) - plain volume, no mergerfs involved. + # split out of the old combined "other" volume below: each of these + # purposes now gets its own Longhorn volume instead of sharing one + # 200Gi disk, so a single hot subtree (e.g. thumbs) doesn't force + # replica rebuilds/relocation to drag the whole 200Gi with it. + data: + type: persistentVolumeClaim + accessMode: ReadWriteOnce + size: 20Gi + storageClass: longhorn + retain: true + advancedMounts: + server: + app: + - path: /data + encoded-video: + type: persistentVolumeClaim + accessMode: ReadWriteOnce + size: 100Gi + storageClass: longhorn + retain: true + advancedMounts: + server: + app: + - path: /data/encoded-video + thumbs: + type: persistentVolumeClaim + accessMode: ReadWriteOnce + size: 100Gi + storageClass: longhorn + retain: true + advancedMounts: + server: + app: + - path: /data/thumbs + backups: + type: persistentVolumeClaim + accessMode: ReadWriteOnce + size: 30Gi + storageClass: longhorn + retain: true + advancedMounts: + server: + app: + - path: /data/backups + # old combined volume (backups, encoded-video, profile, thumbs, + # upload) - kept mounted read-write as a fallback/reference copy at + # /data-old, untouched, until the split above is confirmed good. other: type: persistentVolumeClaim accessMode: ReadWriteOnce @@ -200,4 +250,4 @@ spec: advancedMounts: server: app: - - path: /data + - path: /data-old