Data ONTAP PowerShell Toolkit 1.7 Released (962 Cmdlets)

We had previously talked about the next release being 2.0.  Well we’re not quite done with our Cluster-Mode cmdlets.   The 2.0 release of the Toolkit will be a complete Cluster-Mode implementation.  That’s not to say we didn’t make any progress.  1.7 brings our Cluster-Mode content to a very respectable place with 375 cmdlets, but we’re still only 80% done with the Cluster-Mode ZAPI coverage.  Therefore the question remains why the interim release?  Well, we’ve been busy bees in the bowels of our RTP facility, and have developed a couple cmdlets that we just couldn’t rightfully keep to ourselves any longer.  We’ve quietly been showing off some of these capabilities to select customers for a couple months now, and if their excitement is any indication I think you’ll be pleased we decided to ship!

First and foremost, we cracked particularly un-crackable nut. 1.7 introduced a new and improved Invoke-NaHostVolumeSpaceReclaim cmdlet that supports CSVs!  We had to take a totally unique approach with CSVs.  The NTFS API’s that we use with traditional LUNs aren’t supported on CSVs, but our engineering team just went back to the drawing board.  The result is the ability to perform ONLINE space-reclamation of any CSV in direct I/O mode!  No need to take the CSV offline or even enter redirected mode.

Honestly that ability alone would have been sufficient for us to ship, but it wasn’t the only one.  As the industry gets its collective head around Windows 8, we’ve noticed an increased interest in Hyper-V.  This got us thinking, and with a little experimentation we developed a pair of V2V cmdlets. There are already various tools available to convert disk images between the VHD and VMDK formats.  But performance can be vastly improved if the data blocks are cloned in-place on the storage controller rather than copied via a Windows host.  Toolkit 1.7 adds two cmdlets, ConvertTo-NaVhd and ConvertTo-NaVmdk, that can convert between these formats in a matter of seconds.  These measurements were taken on the same Windows 2008 R2 server using the same source VMDK file under identical conditions:

Convert a 32 GB flat VMDK file to fixed VHD using a popular commercial tool46 Minutes
Convert a 32 GB flat VMDK file to fixed VHD using ConvertTo-NaVhd63 Seconds

Now these two cmdlets in particular have a couple caveats we’ll handle in a follow on post.  While we were cracking open VHDs we took a stab at solving alignment. Virtual Disk Alignment has been the bane of all storage since the inception of Virtualization.  In fact it had gotten so bad that NetApp developed MBRScan and MBRAlign to address the problem.  We’ve received countess requests for a Hyper-V/PowerShell version of those popular tools.  In true NetApp fashion we didn’t just convert the existing tools, we improved them!

Get-NaVirtualDiskAlignment reads the first sector of a fixed VHD file to determine if any of the partitions on the VHD are misaligned.

PS C:\Toolkit\1.7.0> Get-NaVirtualDiskAlignment M:\linux.vhd

   VirtualDisk: M:\linux.vhd

IsBootable    AbsoluteStartingLba             Size       IsExtendedBootRecord  IsAligned
----------    -------------------             ----       --------------------  ---------
True                           64           102 MB                      False       True
False                      208848            15 GB                      False       True

Repair-NaVirtualDiskAlignment will correct misalignments in fixed VHD files that are formatted as MBR-style disks.  Unlike some other Toolkit cmdlets such as Copy-NaHostFile or ConvertTo-NaVhd, correcting alignment issues is not possible using WAFL block cloning (because the cloned blocks would also be misaligned), so a data copy is required.  For data in LUNs, Data ONTAP 7.3.5+ performs this operation rapidly by offloading the copy operation to the storage controller.  Data ONTAP 8 does not yet provide this capability, so this cmdlet falls back to a slower host-based copy as needed.  For CIFS shares, copy offload is used by this cmdlet for all versions of Data ONTAP.

In our judgment these new enhancements more than warranted a release, as did the other 232 cmdlets!

New cmdlets

Data ONTAP PowerShell Toolkit 1.7, not including the Cluster-Mode set:

  • ConvertTo-NaVhd
  • ConvertTo-NaVmdk
  • Get-NaVirtualDiskAlignment
  • Repair-NaVirtualDiskAlignment
  • Enable-NaStorageAdapter
  • Get-NaStorageAdapter
  • Get-NaStorageAdapterInfo
  • Get-NaControllerError
  • ConvertTo-SerializedString
  • ConvertFrom-SerializedString

Ccategories of new cmdlets in the Cluster-Mode set:

  • Cifs (32 cmdlets)
  • Clone (1 cmdlet)
  • Cluster peer (6 cmdlets)
  • Disk (10 cmdlets)
  • Exports (9 cmdlets)
  • Fc (4 cmdlets)
  • Fcp (20 cmdlets)
  • File (9 cmdlets)
  • Igroup (10 cmdlets)
  • Iscsi (30 cmdlets)
  • Net (27 cmdlets)
  • Nfs (13 cmdlets)
  • Portset (5 cmdlets)
  • Quota (9 cmdlets)
  • Security (13 cmdlets)
  • Sis (10 cmdlets)
  • Snapmirror (16 cmdlets)
  • Storage adapter (3 cmdlets)

Issues fixed in Toolkit 1.7

  • Fixed null handling in 7-Mode cmdlet wildcard patterns.
  • Fixed error handling in Get-NaVol.
  • Fixed Invoke-NaHostVolumeSpaceReclaim to support LUNs larger than 4 TB.

If you haven’t already, jump on over and check out the new release, over the coming weeks we’ll do our best to familiarize you with some of the exciting new capabilities.  As always if you have any feedback  on the toolkit head on over to the communities!


Will the NaVirtualDiskAlignment CmdLets be usable for VMware?

+1 - would be great if we could use PowerShell to sort VMWare alignment. The latest MBRAlign provided with VSC 4 makes the process much less painful with copyoffload but its still a very manual task

I have a vmdk and am trying to convert this to VHD. Can you help me know what am i missing in the 2 trial commands below (cmd+output is listed below)

PS F:\folder2> ConvertTo-NaVhd \\myserver\folder2\folder2.vmdk

ConvertTo-NaVhd : Could not establish connection to controller containing file.

At line:1 char:16

+ ConvertTo-NaVhd <<<<  \\myserver\folder2\folder2.vmdk

    + CategoryInfo          : NotSpecified: (Smiley Happy [ConvertTo-NaVhd], Exception

    + FullyQualifiedErrorId : System.Exception,DataONTAP.PowerShell.SDK.Cmdlets.HyperV.ConvertToNaVhd

PS F:\folder2> ConvertTo-NaVhd F:\folder2\folder2.vmdk

ConvertTo-NaVhd : Non-negative number required.

Parameter name: byteCount

At line:1 char:16

+ ConvertTo-NaVhd <<<<  F:\folder2\folder2.vmdk

    + CategoryInfo          : NotSpecified: (Smiley Happy [ConvertTo-NaVhd], ArgumentOutOfRangeException

    + FullyQualifiedErrorId : System.ArgumentOutOfRangeException,DataONTAP.PowerShell.SDK.Cmdlets.HyperV.ConvertToNaVhd