You can use the Space Reclamation features in VMFS6 (It's very important for your datastore to be VMFS 6 to achieve this). Space Reclamation Requests from VMFS Datastores
Also, you may want to enable Unmap: Configurable UNMAP | vSphere 6.7 Core Storage | VMware
Here is more information about how to enable TRIM / UNMAP from the Guest OS level - UNMAP/TRIM Space Reclamation on vSAN | vSAN Space Efficiency Technologies | VMware
Please consider that the VM used space is a sum between VMDK used space + Swap + VM Home (Metadata). Also if your previous storage had deduplication and compression enabled, it may affect the VM used space.
If you don't want to do all this trouble, you can use VMware vCenter Converter Standalone to only copy the used blocks of the VM to a new virtual machine. But take in considerations that VM ID will change, and some applications are sentives about this kind of migrations if you are not careful enough. Also it is a very slow process.
Thanks much for response. I can understand we can do space reclamation.
There is no compression and deduplication option(in old storage zfs nfs)however these options are in my new nimble(compression and deduplication).
I don't know how the vm shows the used space is 15 tb? After nimble storage (with deduplication and compression).
When the vm was in zfs nfs storage, it was showing only 10 tb used space(there no deduplication and compression available).
That's the confusion.
However, in this current scenario, I should run vmkfstools command from datastore?