From be14818157abc53d0525d10e4a4110c1fed6a873 Mon Sep 17 00:00:00 2001 From: "azykov@mail.ru" Date: Sun, 23 Aug 2026 21:13:49 +0300 Subject: [PATCH] prepare immich for data volume split --- .../base/apps/immich/helmrelease-server.yaml | 56 ++++++++++++++++++- 1 file changed, 53 insertions(+), 3 deletions(-) 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