How can I migrate my data from 1 zpool to another

I have a 3 old hard drives that I need to replace since they are of questionable quality and some are about 7 years old. They are setup in a raid 5 setup on zfs (2 drives + 1 parity). I am replacing them with 5 drives in raid 6 with a cache (2 drives + 2 parity + 1 cache).

The problem comes that I only have 6 sata ports on my motherboard, and even if I don’t connect the cache and add it later, that still requires 3+4=7 sata ports. Assuming I run the OS on the M.2 or a USB.

So obviously I cannot mount all the drives inside my computer and just move them over. I can only think of two potential solutions but im sure you guys can think of more.

  1. I have a second computer, I could have the old zpool on the old PC, and mount the new zpool on the good PC. Connect them via ethernet and send the data over. (Though I only know how to do this with rsync and samba is there a better way?). The biggest issue is I don’t have a 2nd case to properly secure the drives. Only another mobo, power supply and everything I need to get it going.

  2. The data totals to a bit less than 500GB without compression. I could copy all the data to a spare drive or if I can find another spare drives for raid 1. Then plug in the new drives with the new pool and copy over the data.

The main thing im concerned about is that the data makes it 100% intact. None is lost or corrupted. Any advice on how I can migrate my data?

I think before you do anything, have at least 3 copies of the data with one at least off site (like in a cloud/VPS). So… spend some money on a VPS provider (as Level1Tech people if they have affiliate links to help them as well).

Mark drives with connection to mainboard (just incase you need to rollback).
Copy data to external HD.
Build new zfs array.
Copy from external drive to new array.
Retire old drives to a draw for safe keeping.


If you have a Spare PCI-e slot, I’d suggest getting a HBA card (doesn’t have to be an over the top expensive one) and just run all of the new drives off of that while you copy the data over.

You can create the second pool with the cache and one of the two parity drives missing. While you send your data to it the original pool will retain redundancy. After the data is sent you’ll have two pools with your data. Export the old pool and remove the disks, then you can add the two missing drives to the new pool. If anything goes wrong at this stage you’ll still have the original pool. When the pool finishes resilvering you’re in business.


Add/Use a single large drive that can fit all the data.
Create it as it’s own zpool.
Copy data.
Power down, remove old drives, and add new drives.
Create your new pool.
Copy over data to it’s new home.

This topic was automatically closed 273 days after the last reply. New replies are no longer allowed.