I see the following new feature outlined in the Powershell ToolKit 1.6:
Copy-NaHostFile can clone individual files within (or between) NTFS-formatted Data ONTAP LUNs. The LUN(s) must be mounted on the local host, but the cmdlet uses Data ONTAP's SIS-clone feature to clone the files rapidly.
What is the SIS-Clone feature in ONTAP exactly? I'd like to do a little reading on it if I can find some documentation. Thanks!
SIS clone is a capability withing Data ONTAP to run the dedupe engine in reverse to clone a file. Instead of copying all the block, and then removing the duplicate blockd at a later date. Instead we create a sparse file (non-allocated) and then SIS clone manipulates the WAFL pointers in the destination file to point to the blocks for the source file. The end result is an exact copy of the source file that is pre-deduped. The benefit of SIS-Clone is we can manipulate WAFL pointers even faster than we can write block, so the copy operation is an order of magnitude quicker.
If you want to deep dive into SIS-Clone sometime refered to as "FlexClone for Files" check out TR-3742. I also did a blog post a couple weeks ago that explaines how Copy-NaHostFile works in depth here.
If you're familiar with Data ONTAP's A-SIS (advanced single instance storage) deduplication technology that is integral to WAFL, then you're already there. SIS-clone (which may not be the official term) uses the same engine to clone files or LUNs rapidly by merely copying the block pointers.
The same mechanism can also clone block ranges, so Copy-NaHostFile in Toolkit 1.6 uses NTFS APIs to determine the block ranges for a file within a LUN mounted on the local host. It then clones only those ranges into a new file, so you get a near-instantaneous read/write clone without any data being copied on either the host or the storage controller or any additional space consumed within the Data ONTAP volume. It's a great way to clone VHD files, etc.
If you want to use the same mechanism to clone entire LUNs or files in CIFS shares, you can do that using the Toolkit cmdlets in the clone category: