Steps i took to migrate my cache pool to ZFS (I am NOT responsible for any data lost this is strictly for educational use only)
disable docker and vm services
Set the following shares to cache yes. (Do NOT use prefer, only, or no this till not transfer data off.)
appdata
domains
system
Open a shell session (if you are familiar with screen or tmux I suggest using a session to run this in)
find /mnt/cache/ -depth | /usr/local/sbin/move -d 1
This will start the transfer of all data off the drive
***wait***
once that is done, verify ALL data you want is migrated off the cache.
If you use
du -shc /mnt/cache/*
it will show you how much disk space is being used by any directory and totals.
if there is any data left run the find command again.
Sometimes small files may be left behind or have duplicates. in MOST cases they are fine to delete, but just double check each one.
Running the following command will show all files left in your cache directory.
find /mnt/cache/ -type f
Once you have verified you are clear and no data you want to save is still on cache you can stop your array, and change your formatting to zfs, I feel like at this point i could tell it to delete the partition.
Check the maintenance mode box and then start the array.
You should now have the option to format the cache drives to zfs. do that and stop the array and start it normally.
(At this point i got a stale config error but a restart fixed it.)
Once you are back up change the shares you set to cache yes earlier to cache preferred.
Open a new shell session and do the following command
find /mnt/disk*/appdata -depth | /usr/local/sbin/move -d 1
***wait***
you will need to do this for every share you want on cache for me that is appdata, system and domains
find /mnt/disk*/system -depth | /usr/local/sbin/move -d 1
***wait***
find /mnt/disk*/domains -depth | /usr/local/sbin/move -d 1
***wait***
Once this is done you can restart the docker and vm services and you should be good to go.