It's not clear whether you wiped the VM between the attempts, but machine.install section is only used at the initial install time. Moreover, on OpenStack you're using a disk image, so there's no install process at all, and Talos system disk is the one OpenStack puts the disk image to.

Result: A partition is created but not assigned to anything.

Not sure what you mean, it is mounted to the path you specified.

Based on the information I found on the doucmentation I am not sure if we can set a second disk (/dev/vdb) for EPHEMERAL

See https://www.talos.dev/v1.8/talos-guides/configuration/disk-management/#machine-configuration

You can simply add the document by splitting it with --- (YAML document separator) or use it as a config patch.

Keep in mind, it should be present in the initial configuration, otherwise Talos will create default EPHEMERAL.

🌐
Talos Linux
talos.dev › v1.10 › kubernetes-guides › configuration › storage
Storage - Sidero Documentation
4 weeks ago - If you are running on a major public cloud, use their block storage. It is easy and automatic. Sidero Labs recommends having separate disks (separate from the Talos install disk) dedicated for storage. Redundancy, scaling capabilities, reliability, speed, maintenance load, and ease of use are all factors you must consider when managing your own storage.
🌐
Reddit
reddit.com › r/kubernetes › need advice on storage provider for talos os kubernetes cluster
r/kubernetes on Reddit: Need advice on storage provider for Talos OS Kubernetes Cluster
June 20, 2024 -

Hello all!

I'm have a a small homelab Kubernetes cluster using Talos OS and would appreciate some advice on which storage provider to use. My current hardware setup is as follows:

1x Raspberry Pi 4B 8GB
1x Raspberry Pi 4B 4GB
1x Intel NUC i7 with 24GB RAM and 500GB NVMe
1x Intel NUC i5 with 24GB RAM and 500GB NVMe

I'm currently doubting between using Longhorn and Rook/Ceph for storage. A requirement for me is the ability to make backups. Given my hardware configuration, which solution do you think would be more suitable? Any insights on performance, ease of setup, maintenance, and backup capabilities would be greatly appreciated.

Additionally, I'm open to switching to a different kubernetes setup if it would make things easier.

Thanks in advance for your help!

EDIT: spelling

People also ask

Does Talos Linux reduce storage complexity by itself?
Talos removes host-layer drift and prevents ad-hoc storage workarounds, which indirectly improves storage discipline. But it does not design replication policy, StorageClass tiers, or recovery workflows for teams. Storage architecture for stateful workloads still requires explicit planning regardless of the host OS.
🌐
simplyblock.io
simplyblock.io › home › blog › talos linux storage kubernetes
Talos Linux Storage for Kubernetes | simplyblock
What observability setup do teams need for storage on Talos?
Since Talos does not permit direct host-level tooling, storage observability must come from the CSI driver's metrics endpoint, the storage backend's native monitoring, and application-level latency instrumentation. Teams should deploy node-exporter as a DaemonSet for host-level IO metrics, and choose a storage backend that exposes per-volume latency percentiles — not just aggregate throughput.
🌐
simplyblock.io
simplyblock.io › home › blog › talos linux storage kubernetes
Talos Linux Storage for Kubernetes | simplyblock
How should teams handle node-local NVMe volumes on Talos during upgrades?
For workloads using node-local volumes, upgrades require the pod to remain on its node until the node returns from the upgrade reboot. A better pattern is to use a storage backend with cross-node replication — pods reschedule to a surviving node and resume against a volume replica, and the upgraded node rebalances storage automatically when it returns to the cluster.
🌐
simplyblock.io
simplyblock.io › home › blog › talos linux storage kubernetes
Talos Linux Storage for Kubernetes | simplyblock
🌐
Reddit
reddit.com › r/taloslinux › new to talos and need help setting up storage
r/TalosLinux on Reddit: New to talos and need help setting up storage
November 16, 2025 -

Im finding it very hard to find a step by step guide on how to setup hostpath volumes in docker, i opened a discussion in which i explain my problem in details here:https://github.com/siderolabs/talos/discussions/12235

any help would be much appreciated, i thought it would have been easy like in minikube where volumes are setup automatically. bit unfortunately not.

Top answer
1 of 2
5
I just went through this yesterday. To start you'll likely need to reinstall the cluster. What's going on is that when you installed talos it assummed a traditional setup where the OS's hard drive is separate from workloads, doubly so given that the standard k8s configuration is to keep the control plane independent from the worker nodes. So, us in the "self-hosted on my laptop" mindset have to figure out non-standard approaches.  When you installed talos you told it to claim the entirety of the hard drive. You need some extra manifests in the controlplane.yaml file that tells it to only use up so much of it for the temporary logs/metrics/... These things are stored in a partition of type EPHEMERAL. apiVersion: v1alpha1 kind: VolumeConfig name: EPHEMERAL provisioning: maxSize: 100GiB Tack this onto the end of your controlplane.yaml file. But don't install just yet, we're not done Next I'll explain Local Path Provisioner. Kubernetes has an abstract concept for a StorageClass, so it can provision Persistent Disks, and attach them to Persistent Disk Claims. This Local Path Provisioner implements this StorageClass abstraction and does so by making folders on some local path on the machine. Obviously if you join a worker node to the cluster then that other machine won't have the same local files as the tainted single-node control plane that you started off with. You'll need to adopt some fancy solution like Rook. But I take it you're just going for "I want a single node, just give me k8s already!!!" You need to add onto the controlplane.yaml file the following apiVersion: v1alpha1 kind: UserVolumeConfig name: local-path-provisioner provisioning: diskSelector: match: system_disk minSize: 200GB If you install talos with those 2 things above then your disk will be partitioned into the volumes that talos needs (base OS, Ephemeral storage...) and your User Volume. When you create pods k8s allows you to specify a host path, trusting that you know the Persistent Volume can be attached to pods on that specific machine. What this UserVolumeConfig does is create a volume and mount it to /var/mnt/, which for the above config would be /var/mnt/local-path-provisioner. This is what is meant by the end of this section https://docs.siderolabs.com/kubernetes-guides/csi/local-storage#local-path-provisioner The thing their docs fail to explain is that most people reading the local-path-provisioner are doing this on a single node cluster and will likely only have a single drive and will need the above manifests to squish the ephemeral storage and allocate the UserVolumeConfig. They just sort of leave that to be discovered on their own. With the above in place you can do that kustomize build | kubectl apply -f - command in those docs which install the local path provisioner. This will install the pods/configmaps/services/StorageClass... and in that ConfigMap you see it point to that path /var/mnt/local-path-provisioner. That is the value that gets routed down into this storage class where it asks kubernetes if it can directly write to it, and talos has that mounted and, because it is a UserVolumeConfig, grants it permission to be written to.
2 of 2
1
Just want to add for posterity, Talos exposes many other configuration APIs that can be used by passing additional configuration documents along with the primary v1alpha1.Config (what you get from talosctl gen config). One of these is the UserVolumeConfig, but there are others that you may need to use to configure your Talos machines. A few useful details: Talos refers to the collection of all these API documents as the "machine configuration", but it also refers to the v1alpha1.Config as the "machine configuration document". Additionally, the "machine:" block within v1alpha1.Config is named "MachineConfig". This can be a bit confusing as to what a particular piece of documentation is actually talking about. Pay attention to the language and context used when reading the docs. Additional API documents like UserVolumeConfig can be applied by patching your cluster machines after an apply-configuration occurs. When applying patches, the documentation details the process: When patching a multi-document machine configuration , following rules apply: - for each document in the patch, the document is merged with the respective document in the machine configuration (matching by kind, apiVersion and name for named documents) - if the patch document doesn’t exist in the machine configuration, it is appended to the machine configuration I believe you were missing the "@" when referencing your patch file, as someone pointed out on Github. Should be: talosctl --nodes 10.5.0.3 patch mc --patch @./scripts/local-storage.yaml 3. Patching works fine, but they can also be bundled in your main configuration file (not document) by using the Yaml syntax for including multiple documents within the same file. For example: # worker.yaml --- version: v1alpha1 machine: ... # MachineConfig block goes here cluster: ... # ClusterConfig block goes here debug: false persist: true --- apiVersion: v1alpha1 kind: UserVolumeConfig name: local-storage provisioning: diskSelector: match: "!system_disk" minSize: 2GB maxSize: 2GB Here v1alpha1.Config has been separated from the v1alpha1.UserVolumeConfig using three dashes, "---". This way you don't have to perform the extra step of applying a patch to your machines. References: Machine Configuration Overview: https://docs.siderolabs.com/talos/v1.11/reference/configuration/overview Patching Configs Documentation: https://docs.siderolabs.com/talos/v1.11/configure-your-talos-cluster/system-configuration/patching v1alpha1.Config Specification: https://docs.siderolabs.com/talos/v1.11/reference/configuration/v1alpha1/config v1alpha1.UserVolumeConfig Specification: https://docs.siderolabs.com/talos/v1.11/reference/configuration/block/uservolumeconfig Yaml Documents Info: https://www.yaml.info/learn/document.html
🌐
OneUptime
oneuptime.com › home › blog › how to understand talos linux ephemeral storage model
How to Understand Talos Linux Ephemeral Storage Model
March 3, 2026 - Talos allows you to configure additional disks in the machine config. # Configure additional disks for workload storage machine: disks: - device: /dev/sdb partitions: - mountpoint: /var/mnt/data size: 0 # Use the entire disk
🌐
OneUptime
oneuptime.com › home › blog › how to set up home lab storage with talos linux
How to Set Up Home Lab Storage with Talos Linux
March 3, 2026 - A comprehensive guide to setting up persistent storage for a Talos Linux home lab cluster using Longhorn, Rook-Ceph, NFS, and local-path provisioner.
🌐
Simplyblock
simplyblock.io › home › blog › talos linux storage kubernetes
Talos Linux Storage for Kubernetes | simplyblock
March 31, 2026 - A practical guide to Talos Linux storage design for Kubernetes, including NVMe-first architecture and day-2 operations for stateful workloads.
Find elsewhere
🌐
Simplyblock
simplyblock.io › home › supported environments › talos
Immutable Storage for Talos and Lean Kubernetes Platforms | simplyblock
May 6, 2026 - Keep storage aligned with Kubernetes-native provisioning, snapshots, and clones without pushing more operational complexity back into the immutable node image. ... Give Talos clusters a stronger low-latency block-storage path without undermining ...
🌐
Rug
docs.gcc.rug.nl › talos › storage
Keep - What is stored where on Talos - Talos HPC cluster
Split your work in batches / experiments that can be completed in a reasonable amount of time: weeks rather than months. Completed means the results were QC-ed and documented, the data that needs to be kept for the long term was migrated to prm storage and the rest was deleted from tmp to make room for new batches / experiments.
🌐
Josh Noll
joshrnoll.com › installing-longhorn-on-talos-with-helm
Installing Longhorn on Talos With Helm — Josh Noll
The short answer is — with Persistent Volumes. But what is the best way to run your persistent volumes? Well, there are an overwhelming amount of options. From hostPath, to NFS/SMB shares, or even cloud storage.
🌐
Reddit
reddit.com › r/taloslinux › storage question
r/TalosLinux on Reddit: Storage question
September 30, 2024 -

I'm struggling with the Talos documentation around storage. https://www.talos.dev/v1.8/kubernetes-guides/configuration/replicated-local-storage-with-openebs/ I'm currently trying to set up Mayastor (now named OpenEBS replicated storage) but after getting the pods running in the openebs privileged namespace with the helm chart and creating a PVC using openebs-single-replica storage class it's stuck pending. It works fine using localpv-hostpath.

On a side note, I got democratic-csi working using an external TrueNAS instance with NFS. I got close with nvmeof but after provisioning a PV, it fails attaching to a node when spinning up a pod. The democratic-csi project has been totally inactive for a few months now so...

Based on the Talos docs they strongly recommend against iscsi and nfs which is why I'm pushing to get nvmeof working even though it's less battle tested.

Any ideas what I can do to get help? If I can get this working I will contribute public documentation with step by step instructions and troubleshooting info.

UPDATE: I'm almost done writing up how I solved this, but decided to write a more detailed how-to using current versions of Talos and OpenEBS: https://blog.dalydays.com/post/kubernetes-storage-with-openebs/

At this point I still need to show how to modify the storage class and test a PVC, but the setup process is pretty much done.

🌐
Ianpreston
blog.ianpreston.ca › posts › 2025-04-20-k8s-storage.html
My first k8s build log - persistent storage – Ian’s blog
April 20, 2025 - apiVersion: v1 kind: PersistentVolume metadata: name: nfs-pv spec: capacity: storage: 10Gi # Size is arbitrary for NFS, adjust as needed accessModes: - ReadWriteMany # RWX for multiple pods persistentVolumeReclaimPolicy: Retain # Keeps data after PVC deletion storageClassName: nfs # Optional, define if using dynamic provisioning later mountOptions: - hard - nfsvers=4.1 # Adjust NFS version as needed nfs: server: 192.168.10.3 # Your NFS server IP or hostname path: /volume1/storagetesting # Specific folder in the NFS share ... ================== = Dbench Summary = ================== Random Read/
🌐
Reclaim-the-stack
reclaim-the-stack.com › docs › platform-components › persistent-storage
Persistent Storage - Reclaim the Stack Documentation
Seemed to be the most talked about option for networked storage. Common story is “really challenging to set up but solid once you succeed”. Comes with both block storage and object storage (ie. S3) out of the box. Not as performant as more modern solutions. Recommended by Talos team for more complicated storage needs.
🌐
Hacker News
news.ycombinator.com › item
>What does your persistent storage layer look like on Talos? Well, for its own s... | Hacker News
July 27, 2025 - Well, for its own storage: it's an immutable OS that you can configure via a single YAML file, it automatically provisions appropriate partitions for you, or you can even install the ZFS extension and have it use ZFS (no zfs on root though) · For application/data storage there's a myriad of ...