I know that this is a frequent topic. However, I have not seen one taking into account the more recent iterations of Goldeye, which have, the way I understand it, made the process easier.
Still, it is not obvious to me how to go about changing my 2-drive mirror pool to a 4-drive RAIDZ2 pool with twice the usable storage. I want to retain the two drives I have currently and add two like drives for the conversion.
Edit:
You could break the mirror, create a raidz2 with 3 disks, sync your data over and add the 4th disk to the raidz2, but you’d still have the space reporting bug after expansion…
Backup, destroy, recreate, restore. There is no process to change a mirror into a RAIDZ2.
You could of course add the two new disks as another mirror VDEV to the same pool. Plus points:
seamless, no copying/moving of data
same capacity/redundancy ratio
pool will be slightly faster in terms of IOPS
faster resilver in case of an exchange of a failed disk
Minus point:
less resilient to failure - two disks can fail but they have to be the right two disks
And then if you have more than 50% free capacity there is of course the method to
create two sparse ZVOLs the size of the new disks on the old pool
create a RAIDZ2 pool with the two new disks and the two ZVOLs
copy the data from the old pool to the new pool
offline one disk of the old pool
replace one of the ZVOLs with the offlined disk and let the new pool resilver
offline the second ZVOL leading to a degraded new pool
destroy the old pool
replace the offlined ZVOL with the last old disk and let the new pool resilver
If you need a copy and paste recipe for that you are not qualified to do it and it seems to be consensus among the regulars that nobody wants to take the responsibility for you losing all your data should anything be wrong with the hypothetical copy & paste instructions.
So either
backup, destroy, recreate, restore
add a mirror VDEV instead of creating a RAIDZ2 pool