Skip to content

Migrate Longhorn volumes to V2 and retire node iSCSI #5582

Open
6 of 16 issues completed
Open

Description

@devantler

🤖 Generated by the Agentic Engineer

User story

As the platform owner, I want Longhorn storage to use Data Engine V2 and every platform node to run without iSCSI, so storage can benefit from the newer data path and avoid maintaining the legacy host dependency.

Current delivery priority

Maintainer direction on 2026-11-02: move the platform's production volumes to released V2 now, using necessary temporary platform workarounds, without waiting for upstream fixes. The migration is delivered only when the actual volumes run on V2 and application, replica-health and recovery checks pass. Source changes and queued PRs do not meet that outcome.

Retain the real iSCSI host package temporarily for Longhorn 1.13.0 compatibility. Its later removal and the upstream release dependencies are tracked on our side in #5781; they do not block the volume migration. #5782 checks whether unused temporary storage can provide a route that keeps the original data-bearing workers intact during cutover. The currently reviewed preparation route remains available until an alternative has its own proofs.

Delivery plan

  1. Verify V2 requirements against the installed Longhorn and Talos versions; inventory volumes, consumers, retained recovery claims, backup coverage and raw-disk capacity.
  2. Prepare raw block storage and V2 node prerequisites through the owning declarative configuration and protected deployment path. Preserve current V1 service until its data is migrated.
  3. Prove a V2 canary, including write/read persistence, reattachment, replica recovery and backup/restore. Capture a comparable baseline and benchmark without promising a fixed performance multiplier.
  4. Migrate each existing workload and retained volume with verified rollback data and application checks. Preserve database consistency and required redundancy.
  5. Set V2 provisioning defaults, disable V1 after its final consumer is retired, remove iSCSI from the node image and future-node configuration, and roll all node classes safely.
  6. Verify application health, backups, live node extensions and absence of V1 volumes and iSCSI sessions; update affected repository documentation and templates.

Acceptance criteria

  • Every existing Longhorn volume and retained recovery claim is accounted for and migrated or explicitly retired with preserved data and evidence.
  • All production Longhorn volumes run on V2 with the required replica health; persistence, reattachment and backup/restore are verified.
  • Existing applications and databases pass their functional checks after migration.
  • V2 is the provisioning default and V1 is disabled.
  • No current platform node has the iSCSI extension or an active iSCSI session; all future-node definitions omit it.
  • Configuration owners, reusable templates, recovery procedures and validation cover the final deployment.
  • Comparable benchmark results are reported accurately; an advertised upper bound is not treated as a measured result.

Safety and scope

Changing a StorageClass does not convert existing volumes. V1 filesystem disks cannot be relabeled as V2 block disks. Disk preparation, engine activation, data migration and host dependency removal are separate rollout stages; completion requires the observed final state, not a configuration-only change.

Requested directly by the maintainer on 2026-10-29. The maintainer approved rolling local disk rebuilds using temporary migration capacity. Disk-changing operations remain gated on the reviewed preparation and recovery proofs.

Longhorn 1.13.0 currently checks iscsiadm during startup and pre-upgrade. The V2-only proposal and implementation contributions are not released support; #5781 carries their status and the eventual all-node retirement acceptance. No additional upstream CI or hygiene work is part of this migration.

Activity

  1. moved this to 📥 Backlog in 🌊 Project Boardon Oct 29, 2026
  2. self-assigned this
    on Oct 29, 2026
  3. added 2 commits that reference this issue on Oct 29, 2026
  4. moved this from 📥 Backlog to 🏃🏻‍♂️ In Progress in 🌊 Project Boardon Oct 29, 2026
  5. devantler commented on Oct 31, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Decision on the end-state memory gap from #5596: an overflow worker stays available after the temporary workers retire. Requests are not being lowered to close it.

    • Reserved, not used. At about 22:40Z on 2026-10-31 the three permanent workers had about 32 GiB requested and about 16 GiB in use. That is one reading, not a history. The roughly 5 GiB shortfall on three workers is about reservations.
    • Why not lower requests. The Vertical Pod Autoscaler sets them from observed peaks, so manifest values would not last. The biggest gaps are scanner and backup workloads, which sit low between runs, so their requests appear to reflect those runs. Capping them would risk those workloads when they peak.
    • Why overflow. The cluster autoscaler already runs one overflow worker today, so this adds no new mechanism. The end state is today's fleet without the temporary workers, which costs less than today.
    • The limit on this decision. The migration's roster check still requires no overflow worker while the migration runs, so that worker must be gone during migration and may return only after the temporary workers retire. That is item 3 on feat(storage): add guarded preparation for Longhorn V2 #5596, which is still open. How to keep it away during migration is not settled here.

    Check when the temporary workers retire: no Pod stays Pending, and the autoscaler holds at one overflow worker. Reopen this decision if it needs more than one.

  6. 28 remaining items

  7. added 6 commits that reference this issue on Nov 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Fields

No fields configured for Performance.

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions