18.08.2013 Views

Virtual Disk API Programming Guide - Documentation - VMware

Virtual Disk API Programming Guide - Documentation - VMware

Virtual Disk API Programming Guide - Documentation - VMware

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Virtual</strong> <strong>Disk</strong> <strong>Programming</strong> <strong>Guide</strong><br />

// Extract the PropertyFilterUpdate set from the changeData<br />

PropertyFilterUpdate [] updateSet = changeData.getFilterSet();<br />

// There is one entry in the updateSet for each filter you registered with the PropertyCollector.<br />

// Since we currently have only one filter, the array length should be one.<br />

PropertyFilterUpdate myUpdate = updateSet[0];<br />

ObjectUpdate [] changes = myUpdate.getObjectSet();<br />

for (a = 0; a < changes.length; a++) {<br />

ObjectUpdate theObject = changes[a];<br />

String objName = theObject.getObj().getMoType().getName();<br />

// Must decide how to handle the value based on the name returned.<br />

// The only names returned are names found in the PropertySpec lists.<br />

// Get propertyName and value ...<br />

}<br />

Getting Specific Data<br />

From time to time, you might need to get data that is relevant to a single item. In that case you can create a<br />

simple ObjectSpec including the moRef for the item of interest. The PropertySpec can then be set to obtain<br />

the properties you want, and you can use RetrieveProperties to get the data. Hopefully you can deduce<br />

moRef from a general examination of the properties, by searching for information from the rootFolder.<br />

Identifying <strong>Virtual</strong> <strong>Disk</strong>s for Backup and Restore<br />

To back up a virtual machine, you first need to create a snapshot. Once the snapshot is created, you then need<br />

to identify the virtual disks associated with this snapshot. A virtual machine might have multiple snapshots<br />

associated with it. Each snapshot has a virtual “copy” of the virtual disks for the virtual machine. These copies<br />

are named with the base name of the disk, and a unique decimal number appended to the name. The format<br />

of the number is a hyphen character followed by a 6‐digit zero‐filled number. An example a disk copy name<br />

might be mydisk-NNNNNN.vmdk where NNNNNN would be some number like: 000032.<br />

The vSphere <strong>API</strong> identifies virtual disk files by prefixing the datastore name onto the file system pathname<br />

and the filename: [storageN] myvmname/mydisk-NNNNNN.vmdk. The name in square brackets corresponds<br />

to the short name of the datastore that contains this virtual disk, while the remainder of the path string<br />

represents the location relative to the root of this datastore.<br />

To get the name and characteristics of a virtual disk file, you use the PropertyCollector to select the<br />

property: config.hardware.device from a <strong>Virtual</strong>Machine managed object. This returns an array of virtual<br />

devices associated with a <strong>Virtual</strong>Machine or Snapshot. You must scan this list of devices to extract the list of<br />

virtual disks. All that is necessary is to see if each <strong>Virtual</strong>Device entry extends to <strong>Virtual</strong><strong>Disk</strong>. When you<br />

find such an entry, examine the BackingInfo property. You must extend the type of the backing property to<br />

one of the following, or a <strong>Virtual</strong>MachineSnapshot managed object:<br />

<strong>Virtual</strong><strong>Disk</strong>FlatVer1BackingInfo<br />

<strong>Virtual</strong><strong>Disk</strong>FlatVer2BackingInfo<br />

<strong>Virtual</strong><strong>Disk</strong>Raw<strong>Disk</strong>MappingVer1BackingInfo<br />

<strong>Virtual</strong><strong>Disk</strong>SparseVer1BackingInfo<br />

<strong>Virtual</strong><strong>Disk</strong>SparseVer2BackingInfo<br />

It is important to know which backing type is in use in order to be able to re‐create the <strong>Virtual</strong> <strong>Disk</strong>.It is also<br />

important to know that you cannot snapshot a disk of type <strong>Virtual</strong><strong>Disk</strong>Raw<strong>Disk</strong>MappingVer1BackingInfo,<br />

and therefore you cannot back up this type of <strong>Virtual</strong> <strong>Disk</strong>.<br />

The properties of interest are the backing fileName and the <strong>Virtual</strong><strong>Disk</strong> capacityInKB. Additionally, when<br />

change tracking is in place, you should also save the changeID.<br />

Creating a Snapshot<br />

Before performing a backup operation, you must create a snapshot of the target virtual machine. Both full and<br />

incremental backup rely on the snapshot in vSphere.<br />

With SAN transport on VMFS volumes, the virtual machine should not have any pre‐existing snapshots, so<br />

that reporting of in‐use disk sectors will work. For details see “About Changed Block Tracking” on page 83.<br />

68 <strong>VMware</strong>, Inc.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!