Luckily this is not the case.
Say we have following setup:
agg0 - 3TB
vol1 (inside agg0) - 2.5TB, thin
lun1 (inside vol0) - 2TB, thin
So initially the amount of consumed space in agg0 & vol1 is pretty much 0. Then we put ~2TB of data inside lun1, so agg0 has roughly 1TB free space & vol1 has ~0.5TB free space left. So far, so good.
When we run dedupe on vol1, ONTAP does not inspect the actual content of the lun1 (which is just a special file) - it looks for redundant blocks & when finds them, replaces with pointers. If dedupe ratio is 4:1, then lun1 space consumption will drop to 500GB on the storage side. Nothing changes on the ESX host side, so if the LUN was almost full, it will still look like almost full. Yet vol1 will now show ~2TB of free space & agg0 will show ~2.5TB of free space.
So now we have a choice how to use reclaimed space: a) put another LUN inside vol1 and/or b) create another volume inside agg0.
Does it make sense?
Regards,
Radek