You can also upgrade an entire raidz vdev if you replace each drive in the vdev with a larger one (one at a time) and enable "autoexpand" on the zpool. It's a manual and time consuming process, waiting for each drive to resilver. Still an pain, but at least possible.
> It does not support different sized drives in a raidz
% mkfile -v 64m /var/tmp/d0
/var/tmp/d0 67108864 bytes
% mkfile -v 96m /var/tmp/d1
/var/tmp/d1 100663296 bytes
% mkfile -v 128m /var/tmp/d2
/var/tmp/d2 134217728 bytes
% sudo zpool create -f pool0 raidz /var/tmp/d0 /var/tmp/d1 /var/tmp/d2
Password:
% zpool status
pool: pool0
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
pool0 ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
/var/tmp/d0 ONLINE 0 0 0
/var/tmp/d1 ONLINE 0 0 0
/var/tmp/d2 ONLINE 0 0 0
errors: No known data errors
Re:ZFS lands in Debian contrib
by stewartbutler on Tuesday May 17, 2016 @09:20PM
(#11719029)
You can build it, but it is limited to the smallest device in the vdev, so the array will appear to only have three devices of 64m available. Though you can replace all smaller disks and grow it.
That is not how RAIDZ works. Because every write is a dynamic width stripe, the capacity is an aggregate minus parity, not linear.
The smallest device capacity applies to RAID1+0, which is mirroring, but it does not apply to RAIDZ.
It does not support different sized drives in a raidz (equivalent to an mdadm array), as far as I know, but you can mix raidz and singular drives in a pool, though that is a bit silly. It also does not support adding disks to a raidz, which is equivalent to growing a raid5 or raid6 array, which is admittedly a pain in the ass.