From 3a279d2dcdc655d9ab8fbc92fd1baa8d3a03336f Mon Sep 17 00:00:00 2001 From: Claude Bot Date: Thu, 20 Aug 2026 07:44:07 +0200 Subject: [PATCH] feat(paperless): repoint data volume to RBD (phase 3) Switches the Deployment's `data` volume from paperless-data (RWX, ceph-filesystem) to paperless-data-block (RWO, ceph-block). `consume` and `media` stay on CephFS -- the ftp-scanner writes to those from another node, so they genuinely need RWX. The copy is already done and verified byte-for-byte with paperless stopped: src files: 75 dst files: 75 IDENTICAL: name, size and mtime match for every file index segments: src 3, dst 3 mtime parity matters specifically because the Whoosh index segments carry their own consistency expectations; `cp -a` preserved them. (The "can't preserve" lines in the copy log were for the mount root /dst/. itself, not the files.) Why: only this Deployment ever mounted the volume, and its contents are single-writer state. Being on CephFS meant every access crossed the MDS -- measured with zero CI running, 22 requests/sec sustained and ~15 journal events/sec against 2 directory commits per 180s, i.e. cap/inode churn rather than file writes. That accounted for most of the constant 7-8 GB/day on cephfs-metadata, which is a size 3 pool. cephfs-metadata stays at size 3 deliberately: losing it destroys the entire filesystem rather than the objects on one OSD, and the 275 GiB in cephfs-data0 depends on it. paperless-data is retained (prune: disabled) as the rollback. It must NOT be deleted until search has been confirmed returning results -- that is what proves the index survived, not merely that paperless starts. Refs #434 Co-Authored-By: Claude Bot --- kubernetes/apps/paperless/paperless.yaml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/kubernetes/apps/paperless/paperless.yaml b/kubernetes/apps/paperless/paperless.yaml index 762d2e29..32de58cb 100644 --- a/kubernetes/apps/paperless/paperless.yaml +++ b/kubernetes/apps/paperless/paperless.yaml @@ -208,9 +208,25 @@ spec: seccompProfile: type: RuntimeDefault volumes: + # paperless-data-block (RWO, ceph-block), NOT paperless-data + # (RWX, ceph-filesystem). Only this Deployment ever mounted the volume, + # and its contents are single-writer state — the Whoosh index, + # classification model, celerybeat schedule, logs. Being on CephFS meant + # every access went through the MDS: 22 requests/sec sustained with zero + # CI running, ~15 journal events/sec against 2 directory commits per + # 180s, i.e. cap/inode churn rather than file writes. That was most of + # the constant 7-8 GB/day on cephfs-metadata, and that pool is size 3. + # + # `consume` and `media` below STAY on CephFS: the ftp-scanner writes to + # those from another node, so they genuinely need RWX. + # + # paperless-data is retained (prune: disabled) as the rollback. Do not + # delete it until search has been confirmed working — that is what + # proves the Whoosh index survived the copy, not merely that paperless + # starts. Migration record: MIGRATION-data-to-block.md. - name: data persistentVolumeClaim: - claimName: paperless-data + claimName: paperless-data-block - name: media persistentVolumeClaim: claimName: paperless-media