Home > Blogs > VMware PowerCLI Blog


VMware Instant Clone is now at your fingertips with the updated PowerCLI Extensions fling!

 

FLINGS.png

At VMware we are pleased to announce the publishing of a new fling:  PowerCLI Extensions! PowerCLI Extensions gives PowerCLI users access to early access functionality by extending the core PowerCLI cmdlets to include new experimental features and gives PowerCLI customers the ability to provide early feedback. So what is included in this fling? Read on…

Instant Clone

Extensions

‘Instant Clone’ also known as VM Fork or Project Fargo, gives admins the ability to rapidly clone and deploy virtual machines, as much as 10x faster than what is currently possible today. Instant Clone uses rapid in-memory cloning of running virtual machines and copy-on-write to quickly deploy clones of a parent virtual machine.

Because Instant Clone uses a private API, PowerCLI is currently the only way Instant Clone can be accessed and leveraged.

What is actually happening?

The Instant Clone capability allows admins to ‘fork’ a running virtual machine, meaning, it is not a full clone. The parent virtual machine is brought to a state where the admin will Instant Clone it, at which time the parent virtual machine is quiesced and placed in a state of a ‘parent VM’. This allows the admins to create as many “child VMs” as they please. These child VMs are created in mere seconds (or less) depending on the environment (I’ve seen child VMs created in .6 seconds). The reason these child VMs can be created so quickly is because they leverage the memory and disk of the parent VM. Once the child VM is created, any writes are placed in delta disks.

When the parent virtual machine is quiesced, a prequiesce script cleans up certain aspects of the parent VM while placing it in its parent state, allowing the child VMs to receive unique MAC addresses, UUID, and other information when they are instantiated. When spinning up the child VMs a post clone script can be used to set properties such as the network information of the VM, and/or kick off additional scripts or actions within the child VM.

Specific information can be passed to the child VM for the post clone script to use to quickly perform actions on the virtual machine as it powers on (I use the term power-on because when the VM is cloned it is shown in vSphere as ‘Powered-Off’ however, when you “Power-On” the VM, it is already in its fully running state, there is no boot up). If you assigned a -PostCloneScript to the child VM, when it is Powered-On, the script will execute. Values such as network properties, can be passed to the Child VM through configuration parameters stored in the VMX file. These can be set with an array where the left-side is the name of the property and the right-side is the value:

$configSettings = @{
‘ipaddress’ = “10.134.14.75”;
‘netmask’ = ‘255.255.255.0’;
‘gateway’ = ‘10.134.14.253’;
}

When included in the  New-InstantCloneVM cmdlet’s -ConfigParams, they will be added to it’s VMX file:

$childForkVm = New-InstantCloneVM -ParentVM $parentforkVm -Name “2012ChildClone$_” -ConfigParams $configSettings

Because of VM Tools,  these values can then be retrieved from within the Child VM using the VMware Tools RPCTool, which can read guest information from the VMX file (using the example configparameters above):

  • “%programfiles%\vmware\vmware tools\rpctool” “info-get guestinfo.fork.ipaddress”
  • “%programfiles%\vmware\vmware tools\rpctool” “info-get guestinfo.fork.netmask”
  • “%programfiles%\vmware\vmware tools\rpctool” “info-get guestinfo.fork.gateway”

In the demo below you will see a walkthrough of verifying the intended-parent VM’s network settings, and that the VM is in the desired state to instant clone. It then walks through the PowerCLI commands to create 9 child VMs off of the parent VM.


On my equipment it took me 15 seconds to create 9 Instant Clone child VMs of a Windows Server 2012 Parent VM. Times will vary based on a number of factors including the number of configuration parameters saved to each virtual machine, hardware, etc.

Get PowerCLI Extensions

You can download the user guide and PowerCLI Extensions module from the VMware Flings site HERE. I strongly recommend reading the user guide and following the step-by-step instructions for getting started.

VSAN cmdlets removed

Originally the PowerCLI Extensions module included VSAN cmdlets. As of PowerCLI 6.0 R1 those cmdlets have been removed from PowerCLI Extensions and added into PowerCLI.

Stay tuned for the next post. which will be a tutorial of how to use the Instant Clone functionality

 

This entry was posted in Extensions, Learning, Performance, vCenter and tagged , , , , , on by .
Brian Graf

About Brian Graf

Brian Graf is a Senior Product Manager - Distributed Resource Management (DRS/HA/DPM) at VMware. Previous to Product Management, Brian worked as a Senior Technical Marketing Manager at VMware, focused on PowerCLI Automation and ESXi Lifecycle technologies. Previous roles also include: Consultant for EMC Consulting. His main focus was Data center migration methodologies and implementations. His background previous to VMware includes Operations Engineering, Virtualization, Business Intelligence, and Exchange/Blackberry Engineering. Get notification of new blog postings and more by following Brian on Twitter: @vBrianGraf

26 thoughts on “VMware Instant Clone is now at your fingertips with the updated PowerCLI Extensions fling!

  1. Alberto

    I am getting error trying to create an instant clone:

    PowerCLI C:\> New-InstantCloneVM -ParentVM “testvm” -Name “testvm01”
    New-InstantCloneVM : 8/4/2015 4:04:58 PM New-InstantCloneVM The Vm ‘testvm’ is not instantclone parent.

    Reply
      1. Andrew Badley

        I found that you need to have the In-Guest Customization script (as per https://blogs.vmware.com/PowerCLI/2015/08/using-vmware-instant-clone-via-powercli-extensions-fling.html) and specifiy the

        $parentForkVM = Enable-InstantCloneVM -VM $parentVM -guestUser “administrator” -GuestPassword “VMw@re123” -PostCloneScript C:\temp\WindowsPostScript.bat

        Varibale as part of the “New-InstantCloneVM” command

        i.e.
        $parentForkVM = Enable-InstantCloneVM -VM $parentVM -guestUser “administrator” -GuestPassword “****123” -PostCloneScript “c:\Scripts\WindowsPostScript.bat

        $childForkVm = New-InstantCloneVM -ParentVM $parentForkvm -Name “2012ChildClone$_” -ConfigParams $configSettings ; $childForkVm | Start-vm

        (Rather then specifiying the parentVM name directly).

        To get around this issue

        Reply
  2. Pingback: VMware Labs: Top 5 Flings - VIRTUALIZATION IS LIFE!

  3. Ben

    Question about a Windows Guest after it’s been cloned and gets a new IP adress… What about the computer name, the secure computer account with the domain controller, Dynamic DNS, etc? Is it up to the administrator to fix all those potential issues after the instant clone is instantiated?

    Ben

    Reply
  4. Pingback: VMware Labs Fling – Instant Clone via PowerCLI Extensions | The Virtual Unknown

  5. Sascha Schuenemann

    Does anybody now what happens if I want to change the disk space of an “instant-clone(d)” VM?
    Is it right to assume that I then need to invest a lot of time transforming it into a fully-cloned VM?

    Reply
    1. kb

      So my understanding (from reading the 2009 SnowFlock paper) is that at least in-principle this doesn’t need to be a problem. Conceptually Instant Clone is an extension to Link Cloning (it’s that same + COW memory deltas), since Linked Cloning supports VMDK re-sizes I’d expect Instant Clones to support it as well. Whether or not the concept matches reality is not something I know.

      Reply
  6. Pingback: Containers for the vSphere Admin | VMtoCloud.com

  7. Pingback: latoga labs | VMworld 2015 Recap

  8. Pingback: Using VMware Instant Clone with Big Data Extensions

  9. Pingback: How Wrecking Crew Inc. leveraged vSphere’s Instant Clone to instantly provision hundreds of VMs | virtuallyGhetto

  10. Pingback: vSphere Integrated Containers - Technology Walkthrough - VMware vSphere Blog - VMware Blogs

  11. Pingback: Last Day of VMworld Europe | IT Should Just Work

  12. Pingback: VMware announces Horizon Air Hybrid Mode, Horizon 7, and AppVolumes 3.0. Here's our full analysis: – Brian Madden (blog)

  13. Pingback: Instant Clone. VMFork, Project Fargo – VM Man | VMware ,vsphere esxi ,VMware Course ,VCP Course ,Cloud ,VDI ,Hyperv ,Citrix ,شرح كورسات.

  14. Pingback: VMware Horizon View 7 – Complete-Geek Labs

  15. simluck4.snappages.com

    Neuere Erkenntnisse zeigen, dass Bewegung nicht unbedingt intensiv
    sein muss, um die Gesundheit zu stärken.

    Reply
  16. SteveR

    Hi, excellent stuff here. In testing I’m getting the following error in Power CLI. (Extensions are installed etc)
    I get an error that “the operation is not supported on the object”. Any thoughts?
    Thanks

    Reply
  17. Sukrit

    My VM is a Cisco Virtualized router that does not have the ability to have VMWare Tools installed. So in other words, its an ‘Other’ type of VM. I cant get InstantClone to work and get this error. Any thoughts? Workaround?

    Enable-InstantCloneVM : 5/27/2016 12:36:46 PM Enable-InstantCloneVM The Vm ‘IOS-Clone’ is not powered on or
    VMware tools are not running.
    At line:1 char:17
    + $parentforkVm = Enable-InstantCloneVM -VM $parentVm
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [Enable-InstantCloneVM], VimException
    + FullyQualifiedErrorId : Core_BaseCmdlet_UnknownError,VMware.VimAutomation.Extensions.InstantClone.Commands.Enabl
    eInstantCloneVM

    Reply
    1. Brian Graf

      Instant Clone requires VMware Tools. If your VM does not have VMware Tools installed, IC will not work.

      Reply
  18. Pingback: Cost Reduction for Home Lab… Instant clone ESXi for vSAN testing :) | What's Next...?

  19. albert

    is this working on vsphere 6.5? Why the instantclone cmdlets are not included in PowerCLI 6.5? I am running 6.5 and downloaded the extension (VMware.VimAutomation.Extensions_for_PCLI_65R1) but fails with this error:

    PowerCLI C:\> Enable-InstantCloneVM -vm $a -GuestUser administrator -GuestPassword password -PostCloneScript C:\pscript.bat

    Enable-InstantCloneVM : 1/9/2017 2:36:45 AM Enable-InstantCloneVM A general system error occurred: vix error codes =
    (1, 0).

    At line:1 char:1
    + Enable-InstantCloneVM -vm $a -GuestUser administrator -GuestPassword …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [Enable-InstantCloneVM], SystemError
    + FullyQualifiedErrorId : Client20_VmGuestServiceImpl_RunScriptInGuest_ViError,VMware.VimAutomation.Extensions.Ins
    tantClone.Commands.EnableInstantCloneVM

    Enable-InstantCloneVM : 1/9/2017 2:36:45 AM Enable-InstantCloneVM Object reference not set to an instance of an
    object.
    At line:1 char:1
    + Enable-InstantCloneVM -vm $a -GuestUser administrator -GuestPassword …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [Enable-InstantCloneVM], VimException
    + FullyQualifiedErrorId : Core_BaseCmdlet_UnknownError,VMware.VimAutomation.Extensions.InstantClone.Commands.Enabl
    eInstantCloneVM

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *


*