Recently I have added a new pool with new disks and I want to move my current deployed Apps (ElectricEel 24.10-RC.2) to the new pool because is new and faster.
My workflow tod do it is go to Apps->Configuration->Choose Pool and select destination pool marking: “Migrate applications to the new pool” and nothing happen: no jobs, no logs, … and after show a dialog saying: stoping Docker an ddisappear I don’t see any app in Applications, checking it seems like current pool is the pool I have choosed as destination so it’s seems ok except because applications are not there. If I do the same in the opposite way, choosing now as destination the old pool then Applications are there … So apparenty Apps are not migrating even marking the choice.
Honestly I don’t know how to proceed, I also tried with the shell doing a snapshot and after doing send and receive and same result … no error but nothing happens, it’s weird.
As additional information originally my Apps were installed in TrueNAS SCALE 24.04 (with k3s).
Now Apps are working without issues in the source pool so it’s not a big issue because I can continue working.
I’m thinking maybe is an issue in RC2 or something like that but not sure, I’m not an expert.
I’m in the same boat. I added an NVME pool and wanted to move all my apps over to it. My problem is that the apps all stopped on the previous pool and now won’t start.
For what it’s worth I started my TrueNAS from scratch with ElectricEel beta. I’m now on RC.2 and hitting the same issue. I’m digging, I’ll post back if I find anything useful in terms of workarounds to migrate.
Unfortunately the new docker applications framework was found not to support migration of the apps pool in the way we had it implemented with kubernetes in 24.04. This checkbox has been removed for 24.10.0 and we are looking into a method to replace the functionality in a future release.
In the meantime, if you want to change the apps pool location, you can either delete the existing apps (with the delete ix-apps checkbox selected) to clear the existing app data and then reinstall applications on the new pool. Or you can change your pool and accept that some apps will continue to remain on the old pool for now.
I am using the apps as they were migrated from kubernetes. I had just finally re-deployed my apps as Truenas versions from the Truecharts ones I had. I recently added an NVME pool so I thought I’d run my apps from it, but didn’t want to have to fully reinstall them all again.
Is there a third party method of backing up all the containers and re-deploying into the new pool. Something like Portainer?
Stop all apps and copy .ix-apps to another location, rsync -acX /mnt/.ix-apps/ /mnt/apps_temp/.ix-apps
Unmount apps pool. Apps - Unset Pool
Chang to new pool. Apps - Choose Pool
Copy temp .ix-apps to new pool. rsync -acX /mnt/apps_temp/.ix-apps/ /mnt/.ix-apps
Check applications and they should now be on new pool, may want to remount the pool just be sure.
This looks like a possible way to at least get all the apps into the new pool.
Couldn’t one just go through and fix any “Host Path” settings to point to the new apps folder? For my situation, I’m trying to move all my apps to a new dataset altogether.
I have the following dataset currently:
-Storage
-apps
-ix-applications
-plex_config
and I want to replicate the subdirectories to a new dataset on some NVME drives so it will be
-NVME_Storage
-apps
-ix-applications
-plex_config
Could I just follow the workaround after doing my replication and then go through the apps to change anything that had “Host Path = mnt/Storage/xxx” to be “Host Path = mnt/NVME_Storage/xxx”. I would hope than anything using ixVolume would be loading from the current apps pool which was replicated over to the new dataset and should just work after having set the new pool to the dataset that was replicated to.
Ix-volumes create datasets inside the hidden ix-apps dataset.
It should be possible (but I have not tested) to unset an apps pool, then manually recursively replicate the ix-apps dataset to another pool, then select that pool.
It depends if the apps use absolute paths for anything, rather than referencing via /mnt/.ix-apps
I did try to unset the pool and performed a replication. Upon choosing my new NVME_Storage pool I had no apps. Would references to /mnt/.ix-apps be different than the references in the app to ixVolume, or is it the same? Wouldn’t /mnt/.ix-apps move with the replication, or is it stored somewhere other than the selected pool dataset?
So I was looking at it as /mnt/.ix-apps where /mnt/ was my dataset for the pool, not the /mnt/ folder in the terminal/shell. I tried using replication task, but it cannot find /mnt/.ix-apps so instead I unset my pool, performed a replication of the old dataset used in the pool to the new dataset I want to use and did
cp -r /mnt/.ix-apps /mnt/Storage/temp/
then I set the pool to my new NVME pool and did
cp -r /mnt/Storage/temp/.ix-apps /mnt/
Unsetting the pool and resetting to my NVME again now shows all my apps, and they are even running, but I stopped them all and changed any Host Paths from my old Storage pool to the new NVME pool. Then I restarted all my apps. I thought I was golden, but when I opened the web interface to many of my apps they prompted me with first time setup wizards, big fail.
Guess I will have to do it the old way of exporting the config in any apps that support it, and screenshots of settings for apps that don’t. Then I will set the pool to my new NVME storage and setup the apps anew, importing the configs where possible. Maybe when I do my new setup I will avoid the ixVolume option and set host paths for the app configs which will hopefully allow me to remove/add apps in the future will less fuss.
I just created an account to share my experience with this process.
So far, I’ve found that using rsync, cp, unset, and set cant help with migrating apps to another pool or, in my case, to a new server entirely. I also attempted to use Docker’s export and import commands, but while these methods allowed the apps to show up in the GUI using rsync and cp, I found that all the configuration settings were missing. Unfortunately, I realized this only after hours of migrating large amounts of data. I’d recommend saving yourself the trouble and wait for an official tool or some magic user to come up with a good solution.
Thanks, this worked for me as well but with a small issue, I ensured first that I had changed all storage mount points for each app before starting any app but it was failing anyway every time, after doing some research I ended up doing a SSH into my machine to try a docker restart and this fixed all issues:
Actually I was celebrating too fast, it messed up with some of my apps, hopefully we will get an update for this truenas scale version to make this proccess easier.
Apps that worked without any issues and everything was as before: Filebrowser, Pihole, Nextcloud and Tailscale.
Same boat, found a better solution that the rsync one below, this uses zfs to make snapshots and copies them 1:1, preserves ZFS attributes and also copies faster as it uses zfs blocks.
Creating Snapshots Recursively
Here, Storage is the old/slow HDD based Pool and ssd_storage is the new nvme based pool.
Then to verify that the migration has been successful and no changes have been made you can run this zfs list command to verify the snapshot and the newly created datasets
zfs list -t snapshot | grep -E '^(Storage|ssd_storage)/.*@(moveixapplications|moveixapps)'