Zpool-remove or create new pool (to go from 2 to 1 vdev)?

Hello !

Here is my current setup: I have 2 2-disks vdevs in my pool:

tank
  mirror-0
    disk-6TB-0
    disk-6TB-1
  mirror-1
    disk-3TB-0
    disk-3TB-1

I want to switch to a 2 disks setup (i.e. a single mirror of 2 disks).
The 2 disks will be new ones (18TB each).

Hence, I want the final setup to look like this:

tank
  mirror-0
    new-disk-18TB-0
    new-disk-18TB-1

Note: none of the old disks are present in the new setup.

My question: How to get from the current setup to the new one ?

I see 2 options:

  • Option A1: As the total used space is currently < 6TB:
    • zpool remove tank mirror-1
    • Replace the 6TB disks of mirror-0 one by one with the new 18TB disks
  • Option A2: (similar to A1, just the other way around. I don’t know if it is better, worse or same.)
    • Replace the 6TB disks of mirror-0 one by one with the new 18TB disks
    • zpool remove tank mirror-1
  • Option B:
    • Create a separate new pool with a single mirror vdev containing the two new 18TB disks
    • “Migrate”/“copy”/“clone” the old pool to the new one. (With something like zfs send | zfs receive)

What are the pros and cons of both solutions ?
Have I missed something ?

Thank you in advance for your help !

If you have the spare SATA ports, I would always use zfs send | zfs receive . This is one of the exact use-cases it’s designed for, and it will write the data nice and evenly on the receiving end.