That is a lot of work compared to just adding a disk and rebalancing. No need to replace every disk in a vdev just to increase disk utilization to the entire disk when using Swift. No fear of losing a pool when losing a vdev.
There is never any fear of losing a pool when losing a vdev, as ZFS will let one simulate the entire thing by letting one use files as disks:
% mkfile -v 128m /var/tmp/d0
/var/tmp/d0 134217728 bytes
% mkfile -v 128m /var/tmp/d1
/var/tmp/d1 134217728 bytes
% sudo zpool create testpool0 mirror /var/tmp/d0 /var/tmp/d1
Password:
% zpool status
pool: testpool0
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
testpool0 ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
/var/tmp/d0 ONLINE 0 0 0
/var/tmp/d1 ONLINE 0 0 0
errors: No known data errors
% zfs list
NAME USED AVAIL REFER MOUNTPOINT
testpool0 988K 79.0M 952K /Volumes/testpool0
% sudo zpool set autoexpand=on testpool0
% mkfile -v 192m /var/tmp/d2
/var/tmp/d2 201326592 bytes
% mkfile -v 192m /var/tmp/d3
/var/tmp/d3 201326592 bytes
% sudo zpool replace testpool0 /var/tmp/d0 /var/tmp/d2
% sudo zpool replace testpool0 /var/tmp/d1 /var/tmp/d3
% zfs list
NAME USED AVAIL REFER MOUNTPOINT
testpool0 1008K 143M 952K /Volumes/testpool0
% sudo zpool destroy testpool0
Running process: '/usr/sbin/diskutil' 'unmount' '/Volumes/testpool0'
Unmount successful for /Volumes/testpool0
% rm /var/tmp/d[0-9]It says "Fault tolerance / degraded performance
Be careful here. Keep in mind that if any single vdev fails, the entire pool fails with it. There is no fault tolerance at the pool level, only at the individual vdev level!"
Please do not assume that everyone here comes from GNU/Linux and knows next to nothing or half-true anecdotes about (Open)ZFS. For example, I learned what and how in ZFS directly from the ZFS development team at Sun Microsystems: Roch Burbonnais, Adam Leventhal, Eric Shrock, and Jeff Bonwick.
Swift is also how many orders of magnitude more complex?