Please advise how I might proceed with migrating most, if not all, of my Apps given that ‘ix-applications’ and host path datasets are all on encrypted pools and datasets. The following is the response I get for all of my Apps when I run midclt call -job k8s_to_docker.migrate <POOL_NAME_REDACTED>
.
{"name": "plex", "error": "App is using encrypted ix-volumes which are not supported for migration", "successfully_migrated": false}
You will have to relocate your ix-applications
dataset to an unencrypted dataset.
Encrypted Root Dataset:
Applications do not migrate to 24.10 if the ix-applications
dataset is configured on a pool with an encrypted root dataset (see NAS-131561). Relocate installed applications to an unencrypted pool on 24.04 before attempting to upgrade to 24.10.
1 Like
Thank you for the information. I clearly should’ve started with the version notes before proceeding.
Aside from finding some other HDD to temporarily attach to TrueNAS to create a non-encrypted pool, what other options do I have to create a dataset (without encryption) so that I can complete the migration process?
I don’t know that there is one, unfortunately - because the creation of the ix-applications
dataset is programmatic, it will automatically inherit the root encryption setting from the pool.
I believe I have a solution for migrating Apps from an encrypted dataset. Feel free to offer any suggestions. Ensure you have enough space on your pool to hold two copies of ‘ix-applications’ before following this process.
- Rename the current ‘ix-applications’ dataset to something else.
- Drop to a shell and run the following code.
- Be sure to change variables to reflect your environment
- ‘dstDataset’ needs to be ‘ix-applications’ for the migration process to work
- If Apps is already setup on a pool, ‘dstPool’ needs to be the same pool or unset the pool before starting this process
srcPool=tank
dstPool=tank
srcDataset=ix-applications-bak
dstDataset=ix-applications
for dataset in $(zfs list -Hro name -s name ${srcPool}/${srcDataset}); do
echo "Working on '$dataset'..."
dest=${dataset##${srcPool}/${srcDataset}}
snapshots=$(zfs list -Ho name -s creation -t snapshot $dataset)
[ -z $snapshots ] && { zfs create -o encryption=off ${dstPool}/${dstDataset}${dest}; continue; }
snapshot=${snapshots%%$'\n'*}
zfs send ${snapshot} | zfs recv -o encryption=off -o canmount=off ${dstPool}/${dstDataset}${dest}@${snapshot##*@}
if [ $(wc -l <<< "$snapshots") -gt 1 ]; then
stream=''
while IFS= read -r snapshot; do
! [ -z "${stream}" ] && stream="${stream#-I }" && stream="${stream%% *}" && stream="-I @${stream##*@} "
stream+="${snapshot}"
done <<< "$snapshots"
eval zfs send ${stream} | zfs recv ${dstPool}/${dstDataset}${dest}
fi
zfs set canmount=on ${dstPool}/${dstDataset}${dest}
done
rsync -acX /mnt/${srcPool}/${srcDataset}/ /mnt/${dstPool}/${dstDataset}/
midclt call -job k8s_to_docker.migrate ${dstPool}