HomeTechOps

Backups & Storage

TrueNAS Fangtooth/Goldeye upgrade: VM + PCI loss

Pre-upgrade runbook and post-upgrade troubleshooting for TrueNAS Scale 24.10 → 25.04 (Fangtooth) and → 25.10 (Goldeye, current stable). libvirt → Incus VM migration breaks, kernel 6.12 + Intel IOMMU regression on LSI HBAs / NVMe pools, boot-environment rollback path. Covers both the 24.10 → 25.04 path and the 24.10 → 25.10 direct jump.

The actual menu split: 24.10 ElectricEel vs 25.10.3.1 Goldeye

Reference images and diagrams. Click any image to view full resolution.

TrueNAS SCALE 24.10.2 ElectricEel dashboard captured pre-upgrade. System Information panel shows Platform: Generic, Version: ElectricEel-24.10.2, Hostname: truenas, Uptime: 7 minutes 19 seconds. The left sidebar has a SINGLE Virtualization item (libvirt-era) between Credentials and Apps. Memory panel shows 15.6 GiB total. Footer reads TrueNAS SCALE ® © 2025.
**BEFORE: TrueNAS SCALE 24.10.2 ElectricEel dashboard.** The headline architectural detail to look at is the left sidebar: a single **Virtualization** menu item (between Credentials and Apps) — this is the libvirt-era VM management page. The brand reads 'TrueNAS SCALE' with the SCALE subtitle. Footer year 2025. After the upgrade this sidebar restructures completely.
TrueNAS 25.10.3.1 Goldeye dashboard captured after upgrade. System Information panel shows Edition: Community, Version: 25.10.3.1 - Goldeye, Hostname: truenas, Uptime: 4 minutes 41 seconds (just rebooted from upgrade). The left sidebar now has TWO separate menu items: 'Containers' and 'Virtual Machines' (replacing the single Virtualization item from 24.10). CPU Model now visible: AMD Ryzen 7 9800X3D 8-Core Processor. Memory: 15.6 GiB. COMMUNITY EDITION badge bottom-left. Footer reads TrueNAS Community Edition © 2026 iXsystems, Inc. dba TrueNAS.
**AFTER: TrueNAS 25.10.3.1 Goldeye dashboard.** Same VM, immediately after the 24.10.2 → 25.10.3.1 upgrade ran via the System → Update flow (download + install + reboot completed in ~4 minutes on this lab box; uptime 4m 41s proves the recency). The architectural changes documented in this runbook are all visible: (1) the **single 'Virtualization' sidebar item is gone**, replaced by **two separate items: 'Containers' (Incus-managed) and 'Virtual Machines' (Incus-managed KVM)**; (2) brand dropped the 'SCALE' subtitle (Goldeye rebrand); (3) 'Edition: Community' badge added (Bronze / Community tier); (4) 'Network' sidebar item moved off the top level (now under System); (5) iXsystems re-incorporated as 'iXsystems, Inc. dba TrueNAS' in the 2026 footer. This is the exact UI an operator faces on the other side of the upgrade — and where the libvirt → Incus VM migration is supposed to land. (Note: this lab VM runs inside Hyper-V-using Windows, so nested KVM isn't passed through — the 'Virtualization is not supported' placeholder still shows on the Virtual Machines page. The menu split itself, the version proof, and the rebrand are the evidence.)

Problem summary

TrueNAS Scale 25.04 (Fangtooth) replaced libvirt VMs with Incus (LXC + QEMU/KVM) and shipped kernel 6.12 with an Intel IOMMU regression that takes LSI SAS3008 HBAs and NVMe pools offline post-upgrade. The 25.04.0 / 25.04.1 releases also had multiple VM migration failures (ghost rows, 'Block volumes cannot be shrunk' errors). **25.10 Goldeye is the current stable** (25.10.2 since February 2026, 25.10.3.1 since May 2026), and iX supports the direct 24.10 → 25.10 path. If you're on 24.10 today, the question isn't 'should I upgrade to Fangtooth' — it's 'do I land on 25.04.2+ as a stepping stone, or jump directly to 25.10 Goldeye?' This page covers both paths and the failure modes that apply to either.

Operator snapshotEvidence first
First proof

On 24.10.2.4 (latest 24.10 maintenance).

Screen to open

System > Info Center > General

Expected signal

System > Info Center shows TrueNAS Scale 24.10.2.4.

Stop boundary

Stop before applying 25.04.0 / 25.04.1 — both had VM-loss bugs.

Layer path

1TrueNAS Scale 25.04 Fangtooth replaced libvirt VMs with Incus and shipped kernel 6.12 with an Intel IOMMU regression. 25.10 Goldeye (current stable as of May 2026, 25.10.3.1) is the recommended target — but the same regressions apply to the 24.10 → 25.10 direct path because both 25.04 and early 25.10 ship the same kernel 6.12 family.
2VM migration: 25.04.0 and 25.04.1 had ghost-row bugs and 'block volumes cannot be shrunk' errors that made VMs disappear. 25.04.2+ restored the classic Virtualization UI alongside Incus; 25.10 inherits the same Incus stack. Both auto-migrate 24.10 VMs.
3PCI passthrough: kernel 6.12 IOMMU regression on Intel platforms takes LSI SAS3008 HBAs and NVMe pools offline. Persists into 25.04.2.6 and early 25.10 builds. Workaround is `intel_iommu=off` kernel cmdline — at the cost of losing IOMMU benefits for security/isolation.
4Two valid upgrade paths from 24.10: direct → 25.10 Goldeye (faster, single window, harder to isolate failures) OR step → 25.04.2+ → 25.10 (smaller blast radius, two windows). Both supported by iX.
Runbook

Step-by-step runbook

Start here. Do each check in order, compare it to the expected result, and stop when the evidence explains the failure or the safe stop point applies.

1

Land on 24.10.2.4 latest

Check: System > Update > apply current 24.10.x updates.

Expected result: TrueNAS Info Center shows 24.10.2.4 or newer 24.10 build.

If not: Older 24.10 builds can't jump directly to 25.04.2+ — must update through the train.

2

Pre-upgrade documentation + backups

Check: Export config (with password secret seed); document VMs + PCI passthrough + app dataset paths; recursively snapshot every dataset as `pre-fangtooth-<date>`; replicate off-box if possible; install virtio-win in Windows VMs; remove SMB aux parameters; note current BE name.

Expected result: All documentation saved off-box; snapshots exist; Windows VMs have virtio drivers; aux params removed.

If not: Stop here if you can't replicate snapshots off-box and your only copy of irreplaceable data is on this NAS.

3

Upgrade directly to 25.04.2+ (or 25.10.x stable)

Check: System > Update > select 25.04.2+ train (or 25.10 Goldeye). **Do not** apply 25.04.0 or 25.04.1 first.

Expected result: System reboots; new BE active; old 24.10.2.4 BE still listed.

If not: If the upgrade fails to download, check internet + iX update servers; retry.

Safe stop: Stop before applying 25.04.0 / 25.04.1 — both had VM-loss bugs.

4

Post-reboot verification

Check: Ctrl+F5 the UI; verify dashboard healthy; pools online; network up; re-add SMB aux parameters; check Virtualization screen (VMs auto-migrated to classic UI); check Apps; verify PCI passthrough.

Expected result: All services green; no offline pools; VMs visible and startable.

If not: If pools offline → IOMMU regression; apply intel_iommu=off OR roll back BE.

5

Start VMs one at a time; verify each

Check: Virtualization > each VM > Start > console in.

Expected result: Each VM boots and reaches login. Windows guests: network works (virtio-net loaded).

If not: If VM fails to start: ghost row (delete + recreate), or zvol shrink error (detach zvol + recreate VM).

6

Defer zpool upgrade for at least 2 weeks

Check: Storage > Pools > leave at current ZFS version. **Do not** run `zpool upgrade`.

Expected result: Pool feature flags unchanged from 24.10.

If not: Upgrading the pool now removes BE rollback ability. Run for 2+ weeks first, validate everything, then upgrade pool flags individually.

Safe stop: Stop if you're tempted to `zpool upgrade` to enable new flags immediately — wait.

Decision tree

Decision tree

If: On 24.10.2.4, simple setup (no VMs, no PCI passthrough).

Then: Low-risk upgrade. Target Goldeye directly.

Action: Update directly to 25.10.2+ (current stable). Single upgrade window. Rollback path is the BE switch.

If: On 24.10.2.4 with VMs + PCI passthrough.

Then: Higher-risk upgrade; community has documented multiple regression patterns.

Action: Document everything per the runbook; take snapshots; step via 25.04.2+ (skip 25.04.0/.1), settle 2 weeks, then go to 25.10.2+. Two windows = smaller blast radius per upgrade.

If: Already on 25.04 Fangtooth and considering 25.10 Goldeye.

Then: Much smaller hop than 24.10 → 25.04 was; both use Incus.

Action: Same pre-upgrade discipline (snapshots, BE name, document VMs). Apply 25.10.2+ via System > Update. Mostly inheriting bug fixes; no further VM migration required.

If: Post-upgrade: pools offline / drives missing.

Then: Kernel 6.12 IOMMU regression.

Action: Edit GRUB to add `intel_iommu=off` to cmdline; reboot. Or roll back BE if you didn't `zpool upgrade`.

If: Post-upgrade: VM shows 'ENOENT' / ghost row in Virtualization tab.

Then: libvirt → Incus migration record orphaned.

Action: Delete the ghost row. Recreate the VM from documented specs. Attach existing zvol as disk.

If: Post-upgrade: VM disk 'cannot be shrunk' error.

Then: Block volume mismatch between old and new VM record.

Action: Detach zvol, delete VM, recreate VM with correct root disk size, reattach data zvol.

If: Post-upgrade: Windows VM has no network.

Then: Missing virtio-net inside guest.

Action: Boot recovery ISO with virtio drivers; install virtio-net inside the guest.

Evidence

Evidence table

SymptomEvidence to collectLikely layerNext action
TrueNAS dashboard shows 'Offline Vdevs' on the pool widget after upgrade.Storage > Pools shows specific drives offline; Logs show `multipathd` or `mpt3sas` errors.Kernel 6.12 IOMMU regressionAdd `intel_iommu=off` to GRUB cmdline + reboot. Or roll back BE.
Virtualization tab shows VM with no power status / ENOENT error on start.Per-VM detail panel shows the row but actions fail.libvirt → Incus migration orphaned the recordDelete the ghost record; recreate VM from documented specs.
SMB shares fail to come up after upgrade.Sharing > SMB shows shares but clients can't connect.SMB auxiliary parameters not migrated cleanlyRemove + re-add aux parameters per share.
Apps showed Running on 24.10 but show NotReady or restart-looping on 25.04.Apps tab; check pod logs.App migration data path issue or missing custom configRe-pull image; restore from `pre-fangtooth-<date>` snapshot if needed.
Reference

Commands and settings paths

Capture current version pre-upgrade

System > Info Center > General

Where: DSM web UI.

Expected: Reports TrueNAS Scale 24.10.2.4 or later 24.10 build.

Failure means: Older 24.10 builds need to update first before going to Fangtooth.

Safe next step: Update via System > Update to current 24.10 latest before proceeding.

Export config + password secret seed

System > General > Manage Configuration > Download File (tick 'Export Password Secret Seed')

Where: DSM web UI.

Expected: Config file downloaded; saved off-box.

Failure means: Without this, fresh-install rollback can't restore state.

Safe next step: Copy to NAS / cloud / USB before proceeding.

Capture PCI device mapping

Shell > `lspci -nn > /tmp/pci-pre-fangtooth.txt`

Where: Via SSH or System > Shell.

Expected: File contains the full PCI device list with IDs and IOMMU groups.

Failure means: Without this, kernel 6.12 regression triage means manually rebuilding the device list.

Safe next step: Save off-box.

Snapshot every dataset recursively

Datasets > select pool > More > Snapshot > Recursive; name `pre-fangtooth-<date>`

Where: DSM web UI.

Expected: All datasets show a snapshot with the matching name.

Failure means: Without snapshots, corrupted app data after upgrade is unrecoverable except via off-box backup.

Safe next step: Hold all snapshots; disable replication retention for these specific snapshots.

Note current boot environment name

System > Boot > note the active BE name (e.g. `24.10.2.4`)

Where: DSM web UI.

Expected: BE name captured.

Failure means: This is your rollback target. If BE name changes during upgrade, rollback path is lost.

Safe next step: Don't delete the old BE post-upgrade until you've validated Fangtooth for a week+.

Hardware boundary

Hardware and platform boundary

Change only when

  • Upgrade from Electric Eel to Fangtooth (or Goldeye) when iX positions the target as production-ready AND your specific hardware combination is reported clean in the forum AND you have working off-box snapshot replication.

Evidence that matters

  • Target 25.04.2.6+ for Fangtooth or 25.10.2+ for Goldeye. Verify your HBA model + IOMMU behavior post-upgrade. Confirm VM passthrough still works.

Evidence that does not matter

  • Newer hardware doesn't change the upgrade path risks — the regressions are software, not hardware.

Avoid

  • Don't apply 25.04.0 or 25.04.1 — both shipped with VM-loss bugs. Don't `zpool upgrade` immediately after the OS upgrade. Don't activate a FreeBSD/Core BE from Scale — bricks the system.

Related tool/checklist

Use the linked tool when you need a guided plan from your exact symptoms instead of a static checklist.

NAS storage and backup planner

Related problems

Last reviewed

2026-05-18 · Reviewed by HomeTechOps. Reviewed against iX Systems' official TrueNAS Scale 25.04 (Fangtooth) and 25.10 (Goldeye) release notes, the forums.truenas.com VM-migration and PCI-device threads (39965, 44042, 50379, 47668, 39359), and the TrueNAS software status page. Boot-environment rollback procedure verified against truenas.com/docs/scale/25.04/scaletutorials/systemsettings/managebootenvironscale/.

Sources/assumptions

  • Page state reflects TrueNAS Scale Fangtooth 25.04.2+ and Goldeye 25.10.2 (stable as of February 2026). Earlier Fangtooth releases (25.04.0, 25.04.1) had multiple known VM-loss bugs documented in TrueNAS Community threads.
  • Kernel 6.12 IOMMU regression is hardware-specific — LSI SAS3008 HBAs and certain NVMe-pool configurations. Other PCI passthrough may not be affected.
  • BE rollback only protects the boot pool (TrueNAS OS). Storage pool data integrity depends on the dataset snapshots taken pre-upgrade, not the BE.

Source-backed checks

HomeTechOps turns official docs and conservative safety rules into a shorter runbook. These links are the source trail for the page direction.