Promote a Linked Clone Virtual Machine to a Full Clone with PowerCli

Linked clone VirtualMachines share their base disks with their parent virtual machine. Only changes (delta) are stored in the childs virtual disks. These results in two major benefits:

  • Fast Provisioning time
  • Space savings

 

However, linked clones have some limitations:

  • Diskspace cannot be adjusted
  • Performance impact – Depending on storage cache

The following PowerCLI snippets will promote all virtual disks or a specific virtual disk of a linked clone to a full clone.

 

Prerequisites:

  • Linked Clone – PoweredOff or Suspended state
  • Enough free space on the Virtual Machine homedirectory
  • vCenter Server

The vSphere SDK allows the promotion of the disks. So here is the link to the promoteDisks method documentation

http://pubs.vmware.com/vsphere-55/topic/com.vmware.wssdk.apiref.doc/vim.VirtualMachine.html#promoteDisks

PowerCli lets you access SDK Methods using the get-view Cmdlet or extensiondata property.

1. Check method on VM Object.

#List availabe methods on VM View object:
$BaseVM.ExtensionData | gm -MemberType method
..
PromoteDisks
..

2. Create Linked clone based on snapshot “SnapBase” on source VM

#Create reference snapshot for linked clone
$BaseSnapshot = Get-Snapshot -vm $BaseVM -Name SnapBase
$LinkedVM = New-VM -Name HotzenplotzLC -LinkedClone -ReferenceSnapshot $BaseSnapshot -vm $BaseVM -VMHost $BaseVM.VMHost
$Disks = $LinkedVM | get-Harddisk

2a. Promote all disks

# Verify current Backing
$Disks[0].extensiondata.backing.Parent.Filename
...
FileName : [DS] Hotzenplotz/Hotzenplotz.vmdk
...
# Promote all disks
$LinkedVM.ExtensionData.PromoteDisks($true, $null);
$Disks = $LinkedVM| Get-Harddisk
$Disks[0].extensiondata.backing.Parent.Filename
# no parent disk anymore

2b. Promote individual disks:

# List Individual disk keys:
$Disks | % { $_.extensiondata.Key }
2000
2001
#datadisk
$Disk = $disks | ?{ $_.extensiondata.key -eq '2001'}
$LinkedVM.ExtensionData.PromoteDisks($true, $disk.extensionData );

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: