Creating a ZFS mirror pool is a bloody brilliant thing to do. Alternatively, you could use rsync, but that's sometimes a big headache. Instead of redundancy, you could expand a HDD with a HDD, so 18 + 18 = 36 TB; however, if one disk fails then that striped setup entirely fails. IPFS can be used as a pin-and/or-MFS-based solution for redundancy. A mirrored zpool protects against single-disk failure, but not crappy hardware. DO NOT use crappy HDDs (described above ITT and elsewhere), as single-disk failure and multi-disk failure is much more common with those. Mirrored zpool also does not protect against multi-disk failure or other bad events. How-to ( https://desuarchive.org/g/thread/103132108/fglt-friendly-gnulinux-thread#103133594 ):
1. Initialize two empty/partitionless ZFSless as a mirror pool: "sudo zpool create zm0 mirror /dev/sdx1 /dev/sdy1"
2. Take an existing ZFS pool and make a different HDD mirror it now and into the future: "sudo zpool attach zm1 /dev/existingPartition /devnewParition". The new partition should be a completely empty one in a HDD of the same size as the HDD with the existing partition. Info from https://blog.fosketts.net/2017/12/11/add-mirror-existing-zfs-drive/ - took like 2.4 days for ZFS to resilver ~15TB for the mirror in my case recently.
3. This should create a mirror pool out of two existing pool: "sudo zpool add zeepool mirror c2t1d0 c2t2d0" (3 pools seen in this command) --https://docs.oracle.com/cd/E19253-01/819-5461/gazgw/index.html
Image: mirror pool used to create redundant Pinkie Pies.