ZFS Replacing devices with larger capacity in mirrored pool

I have a server with four 4TB disks in a mirrored array:
    data       ONLINE       0     0     0
     mirror-0  ONLINE       0     0     0
       sda     ONLINE       0     0     0
       sdb     ONLINE       0     0     0
     mirror-1  ONLINE       0     0     0
       sdc     ONLINE       0     0     0
       sdd     ONLINE       0     0     0

As you might guess from the device names, this is actually ZFS on Linux but I'm in the process of preparing to convert the server to FreeBSD.

Anyway, whenever I find a good price on some 6TB or 8TB disks, I plan to replace my 4TB ones with them. I've been trying to figure out if it would be possible to do this in ZFS without losing data.

If I have some 8TB ready to put in place, what will I need to do to replace my 4TB disks with them?

First, you might want to consider going through the transition from Linux to FreeBSD before significantly changing your existing pool. Once that's done (or if you plan to just power forward), just replace one disk at a time, waiting for each to finish resilvering before moving on to the next. Then set the "autoexpand" property with zpool autoexpand=on (see the "autoexpand" section in zpool(8)). That will kick off another resilver that opens all the space up to you.

You should still have good backups before proceeding, though.