/var/zylon. By default, this directory lives on the same disk as the operating system. As your deployment grows, you may need to move that data to a larger or dedicated disk.
This guide walks through relocating Zylon data to a separate disk or partition without reinstalling the platform.
When to use this guide
Use this procedure when:- The OS disk is running low on space but you have an additional disk available.
- You want to isolate Zylon data on dedicated storage for performance or operational reasons.
- You are preparing the server for a storage layout change (for example, before enabling disk encryption).
What gets moved
Zylon’s persistent state is stored under/var/zylon, including:
- Uploaded documents and knowledge-base content
- Databases
- Dependencies (drivers, binaries), stored in
artifacts - AI models
- Kubernetes persistent volumes managed by Zylon
/var/zylon to move based on what is consuming the most space on your server. The same bind-mount approach works for any path listed above.
Overview
This procedure moves selected data directories to a dedicated disk while keeping the rest of/var/zylon on the OS volume. Zylon continues to use the same paths (for example, /var/zylon/artifacts and /var/zylon/ai-models). Bind mounts in /etc/fstab redirect those paths to the new disk, so no application configuration changes are required.
At a high level, you will:
- Identify the target disk: find an unused disk or partition with enough space for current and future data.
- Prepare the disk: partition it (if needed), format it with ext4, and mount it at
/mnt/data. - Stop Zylon: shut down the Kubernetes cluster with
sudo k0s stopso files are not in use during the copy. - Migrate the data: copy the chosen directories from
/var/zylonto the new disk. - Configure bind mounts: add entries to
/etc/fstabso the new disk paths are mounted back at their original locations under/var/zylonon every boot. - Start Zylon and verify: bring the cluster back up and confirm Zylon is healthy.
- Remove old data: once verified, delete the original copies on the OS disk and remount the bind mounts.
Expect downtime during the migration. Zylon must be stopped while data is copied and mounts are reconfigured. The duration depends on how much data you are moving.
Step 1: Identify the target disk
Runlsblk to see which disks are attached to the server. You need a device that is not already in use (no mount points listed) and has enough space for your Zylon data:
nvme0n1 as the target. Replace /dev/nvme0n1 with your actual device in every command below.
Step 2: Prepare the target disk
Create a mount point and configure the target disk to mount automatically at boot. If the disk is already partitioned and formatted, skip the partitioning and formatting commands below and go straight to creating the mount point. If the disk is not already partitioned and formatted, run the following to set it up with ext4:/etc/fstab using your UUID (replace the value below with the one from your output):
Step 3: Stop Zylon
Stop the Kubernetes cluster so no processes are reading or writing the directories you are about to migrate:Step 4: Migrate data to the new disk
You can decide which directories under/var/zylon to move to the new disk. Choose the paths that are using the most space or that you want to keep separate from the OS volume. In this example, we move Zylon dependencies and AI models. Dependencies are stored in the artifacts directory.
Step 5: Point Zylon to the new location
Add bind mount entries to/etc/fstab. These make Linux present the data on the new disk at the original paths Zylon expects:
/mnt/data/zylon/....
Step 6: Start Zylon and verify
Start the cluster and confirm Zylon is working normally:Step 7: Remove old data
Once you have verified Zylon is healthy, remove the original copies from the OS disk to reclaim space. This step requires stopping Zylon again and temporarily unmounting the bind mounts. Stop Zylon:/mnt/data):
/etc/fstab: