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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Location of Log Files<br />

<strong>Virtual</strong> <strong>Disk</strong> <strong>API</strong> Functions<br />

On Linux, log messages appear under /var/log by default. On Windows, they appear in a temporary folder,<br />

whose location can change from time to time. Early Windows systems used C:\Windows\Temp. Windows XP<br />

and Server 2003 use C:\Documents and Settings\\Local Settings\Temp\vmware-. Vista,<br />

Windows 7, and Server 2008 use C:\Users\AppData\Local\Temp\vmware-.<br />

On all versions of Windows the user’s TEMP environment setting overrides the default Temp folder location.<br />

Temporary is something of a misnomer because files are never deleted from the Temp folder, unless the user<br />

or an application deletes them. If the TEMP or Windows default Temp folder is not found, VDDK (and other<br />

<strong>VMware</strong> software) have a fallback to \Temp.<br />

Alternatively, your software can set a custom temporary directory, as shown in Example 4‐1.<br />

List Available Transport Methods<br />

The Vix<strong>Disk</strong>Lib_ListTransportModes() function returns the currently supported transport methods as a<br />

colon‐separated string value, currently “file:san:hotadd:nbd” where nbd indicates LAN transport. When<br />

available, SSL encrypted NBD transport is shown as nbdssl.<br />

printf("Transport methods: %s\n", Vix<strong>Disk</strong>Lib_ListTransportModes());<br />

The default transport priority over the network is san:hotadd:nbdssl:nbd assuming all are available.<br />

SAN Mode on Linux Uses Direct Mode<br />

With SAN transport on Linux, read and write operations are performed in “direct” mode (O_DIRECT),<br />

meaning that no read or write buffering is done. Direct mode prevents other processes from accessing the<br />

latest data, and avoids loss of information if the process dies before committing its write buffers. In direct<br />

mode, the most time efficient performance can be achieved if applications follow these guidelines when<br />

performing reads and writes:<br />

The offset into the SAN where the operation is performed should be an even multiple of page size, 4096.<br />

The buffer used for data transfer should be aligned on a page boundary.<br />

The transfer length should be an even multiple of the page size.<br />

Connect to <strong>VMware</strong> vSphere<br />

Vix<strong>Disk</strong>Lib_ConnectEx() connects the library to managed disk on a remote ESX/ESXi host or through<br />

<strong>VMware</strong> vCenter Server. For hosted disk on the local system, it works the same as Vix<strong>Disk</strong>Lib_Connect().<br />

Vix<strong>Disk</strong>Lib_ConnectEx() takes three additional parameters:<br />

Boolean indicating TRUE for read‐only access, often faster, or FALSE for read/write access. If connecting<br />

read‐only, later calls to Vix<strong>Disk</strong>Lib_Open() are always read‐only regardless of the openFlags setting.<br />

Managed object reference (MoRef) of the snapshot to access with this connection. This is required for most<br />

transport methods (SAN, HotAdd, NBDSSL) and to access a powered‐on virtual machine. You must also<br />

specify the associated vmxSpec property in connectParams. When connecting directly to an ESX/ESXi<br />

host, provide the ESX/ESXi MoRef. When connecting through vCenter Server, pass the vSphere MoRef,<br />

which differs.<br />

Preferred transport method, or NULL to accept defaults. If you specify SAN as the only transport, and SAN<br />

is not available, Vix<strong>Disk</strong>Lib_ConnectEx() does not fail, but the first Vix<strong>Disk</strong>Lib_Open() call will fail.<br />

Vix<strong>Disk</strong>LibConnectParams cnxParams = {0};<br />

if (appGlobals.isRemote) {<br />

cnxParams.vmName = vmxSpec;<br />

cnxParams.serverName = hostName;<br />

cnxParams.credType = VIXDISKLIB_CRED_UID;<br />

cnxParams.creds.uid.userName = userName;<br />

cnxParams.creds.uid.password = password;<br />

cnxParams.port = port;<br />

}<br />

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

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

Saved successfully!

Ooh no, something went wrong!