TrueNAS SCALE 25.10 – What Actually Happens When You Use “Migrate Apps Pool


I just went through migrating my apps from an HDD pool (bulk) to an NVMe pool (flashy) using the new Migrate Apps Pool feature in TrueNAS SCALE 25.10. The process worked fine, but there’s a catch that’s not super clear even in the updated docs, so I figured I’d write up what actually happens.


My setup

Old pool: bulk (HDDs)
New pool: flashy (NVMe)
Running both TrueNAS Apps and Dockge containers.
Most of my configs and data live in host-mounted datasets like /mnt/bulk/Apps/jellyfin/config, not inside .ix-apps.


What really happens

When you run Migrate Apps Pool, it only moves the .ix-apps dataset.
That’s it.

Anything you’ve got mounted directly from your pool—like /mnt/bulk/Apps/...—stays right where it is. So if you’re using Dockge or any custom Compose stacks with host mounts, none of that data moves automatically.

It’s easy to assume “apps” means all app data, but it doesn’t. The migration only cares about the TrueNAS Apps system data under .ix-apps.


What I did

  1. Stopped all apps so nothing was writing.

  2. Created a recursive snapshot of my Apps dataset.

  3. Sent it over manually:

    zfs send -R bulk/Apps@auto-2025-11-02_00-00 | zfs recv -F flashy/Apps
    
    
  4. Changed mount paths in the app configurations to point from bulk to flashy.

  5. Checked everything—dataset structure, mounts, and sizes.

  6. Turned the apps back on.

They all pulled new images (expected), but the configs, databases, and metadata were all there. No corruption, no rebuilds.


Takeaways

  • Migrate Apps Pool only moves .ix-apps, not your custom host-mounted datasets.

  • If you’ve got Dockge or manual stacks, move your data manually with zfs send/recv.

  • Update your mount paths before restarting containers.

  • Expect new image pulls when you start things back up—that’s normal.


Note: The docs look like they’ve been updated recently, which helps, but I still think it’s worth spelling this out. If you’re running anything outside the default Apps setup, the migration tool won’t touch it—you’ll need to handle that part yourself.

1 Like

I have been going through a similar exercise using both hdd and nvme pools. General advice is:

  1. Set your apps pool to nvme (largest performance gain)
  2. Make datasets on nvme for your high IOPS (config, db)
  3. Make datasets on hdd for your low IOPS (sequential data)

Details for 25.10 update
I attempted to setup the apps pool on my nvme in 25.04, which created ix-apps on my nvme pool. When I attempted the migration from hdd to nvme, it failed because it wouldn’t overwrite the directories on the nvme. I had to go to the shell and run rm -rf /mnt/nvme/ix-apps and then sudo zfs destroy -r nvme/ix-apps. Check that the directories and datasets are not on nvme with zfs grep | list ix-apps.

Note: The commands above are destructive, so make sure your paths are correct. My setup only had a copy of the apps catalog on the nvme pool, so I didn’t delete any apps. If your setup has actual apps installed on the nvme pool, you’ll need to either move them via commands to the hdd pool and then use the migrate tool or manually move your apps from the hdd pool to the nvme pool.