From 8c920bd4961e604f4df7f84ef2f58be9829d92d9 Mon Sep 17 00:00:00 2001 From: Viktor Barzin Date: Wed, 11 Mar 2026 23:23:37 +0000 Subject: [PATCH] migrate Nextcloud data volume from NFS to iSCSI for fsync support SQLite on NFS caused persistent 500 errors on WebDAV PROPFIND due to missing fsync guarantees and database locking under concurrent access. iSCSI (ext4) provides proper fsync and block-level I/O. - Replace nfs_volume module with iscsi-truenas PVC (20Gi) - Update Helm chart to use nextcloud-data-iscsi claim - Excluded 12.5GB nextcloud.log and corrupted DB from migration Co-Authored-By: Claude Opus 4.6 (1M context) --- stacks/nextcloud/chart_values.yaml | 4 ++-- stacks/nextcloud/main.tf | 21 ++++++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/stacks/nextcloud/chart_values.yaml b/stacks/nextcloud/chart_values.yaml index 0c6c78b2..ff6d4183 100644 --- a/stacks/nextcloud/chart_values.yaml +++ b/stacks/nextcloud/chart_values.yaml @@ -58,10 +58,10 @@ externalDatabase: persistence: enabled: true - existingClaim: nextcloud-data + existingClaim: nextcloud-data-iscsi accessMode: ReadWriteOnce - size: 100Gi + size: 20Gi startupProbe: enabled: true diff --git a/stacks/nextcloud/main.tf b/stacks/nextcloud/main.tf index cf5604e7..a85ca60c 100644 --- a/stacks/nextcloud/main.tf +++ b/stacks/nextcloud/main.tf @@ -122,13 +122,20 @@ resource "kubernetes_config_map" "apache_tuning" { # } # } -module "nfs_nextcloud_data" { - source = "../../modules/kubernetes/nfs_volume" - name = "nextcloud-data" - namespace = kubernetes_namespace.nextcloud.metadata[0].name - nfs_server = var.nfs_server - nfs_path = "/mnt/main/nextcloud" - storage = "100Gi" +resource "kubernetes_persistent_volume_claim" "nextcloud_data_iscsi" { + metadata { + name = "nextcloud-data-iscsi" + namespace = kubernetes_namespace.nextcloud.metadata[0].name + } + spec { + access_modes = ["ReadWriteOnce"] + storage_class_name = "iscsi-truenas" + resources { + requests = { + storage = "20Gi" + } + } + } } module "nfs_nextcloud_backup" {