Hi all,
I wanted to bring attention to a real-world usability issue with ZFS that recently affected my TrueNAS setup.
I accidentally added a dedup
vdev mirror to one of my production pools — intending to experiment on a separate pool — but never enabled dedup=on
on any datasets. After realizing the dedup vdev was completely unused, I discovered there’s no way to remove it without destroying and recreating the entire pool.
Even when the DDT is empty (zdb -DD
confirms this) and dedup=off
is set pool-wide, the dedup vdev is permanently part of the pool.
This kind of mistake feels far too easy to make (especially with the new vdev class support exposed in SCALE 24.10+), and the consequences are frustrating — especially for users with limited storage flexibility or long-lived pools. In my case, backing up and restoring isn’t an option as the accidental Dedup VDEV is now tied to my media zpool which is over 150 TB. Remediating this would be no trivial thing. I’d also like to not waste the expensive flash that was intended for another pool for VMs.
I’ve submitted a feature request upstream to OpenZFS: [GitHub Issue #17194 – Allow Safe Removal of Unused Dedup VDEVs]
I’m sharing it here in case others have run into the same issue, and to request that iXsystems consider supporting or advocating for this upstream — and potentially improving UX safeguards or rollback paths in the TrueNAS interface.
Thanks!