With Citrix Provisioning Services (PVS) the content of a disk can be streamed to a (virtual / physical) machine via the network. A (virtual) machine that boots needs a bootstrap to locate a PVS server (that has a vDisk available) and the ability to stream the disk to the machine.

The bootstrap, the Boot Device Manager (BDM), needs to be delivered to the machine. It is common to deliver the BDM bootstrap via a Pre Execution Environment (PXE) network boot, but it’s not required. Although the PXE method seems the most straight forward method (and most advocated), it it  difficult to make it resilient.

The PXE method

PXE processThe Pre Execution Environment (PXE) method depends on a DHCP request, a PXE and a Trivial File Transfer Protocol (TFTP) server. After the machine sends a DHCP request it receives a DHCP response that contains the PXE server to contact. The PXE server streams the Boot Device Manager (BDM) to the machine via TFTP. After the machine has loaded the Boot Device Manager (BDM) the actual streaming of the vDisk via PVS starts.

vDisk via PXEImage from Citrix eDocs

Achieving resilience, making the PXE and TFTP server high available, is a rather complex task and requires additional components like a NetScaler (or other load balancer) and (optionally) a third party TFTP server (to prevent streaming the vDisk through the NetScaler) and as a result two additional virtual machines per site. As described in Load Balancing TFTP – Anything But Trivial

Deliver directly

It is possible to deliver the Boot Device Manager (BDM) bootstrap directly to the machine, without using PXE and TFTP.

Boot Device ManagementProvisioning Services Boot Device ManagerWith the ‘Provisioning Services Boot Device Manager’ tool you can easily create an ISO image (of 300K) which you can mount to your virtual machines. Especially in a virtual environment it is very easy to mount a ISO to a virtual machine. By mounting the ISO in the virtual machine template used in XenDesktop the correct boot image is always used. Alternatively the BDM bootstrap can be burned on a CD that you’ll leave in a physical machine or store the bootstrap on the physical disk.

It is even possible for OEMs to embed the bootstrap file on the target device, but I haven’t seen a device that has it embedded yet.vDisk withouth PXE

Image from Citrix eDocs

The best thing is that if there is an unforeseen circumstance and the machine is unable to boot, it can failover to the next boot device. This means you can use PXE as a failover method, where resiliency is less required. But to be honest, I don’t think you should have to solutions in place ‘just in case something goes wrong’. Built it right and keep it right Knipogende emoticon

 

What are the benefits?

There are mainly two big benefits;

  1. The environment can be build with resiliency (or high available) with common off-the-shelf (COTS) products
  2. The complexity is reduced
    • There are no PXE and TFTP servers required
    • DHCP scope configuration doesn’t have to be changed
    • IP helpers (for PXE boot across subnets) are not required
    • Less broadcasts packages over the network

 

Remarks

The BDM bootstrap is run in a limited environment and therefore has a limited support for Network Interface Cards (NIC). There are some compatibility issues with certain virtual adapters in common hypervisors (Hyper-V 2.0 requires legacy NIC adapter, vSphere requires VMXNet3, etc.).

So mounting the BDM via an ISO, instead of providing via PXE, does not make it easier to use it on Hyper-V 2.0. Sorry Remko!

 

Automation

After releasing this article a few people on Twitter suggested it would be very nice if a PowerShell script existed that could  mount the ISO (containing the Boot Device Manager) to a virtual machine. The much appreciated and fellow blogger Andrew Morgan (LinkedIn, Twitter, Website) picked up the glove and accepted the challenge! Andrew wrote a PowerShell script that automatically mounts the ISO to a specified list of virtual machines. You can download the script here:  VMWare- MountIsoToVMs.ps1 .

windows-update-shieldThe use of this script is at your own risk. Nor the author (Ingmar Verheij) or the creator (Andrew Morgan) take any responsibility for the consequences if the script is run incorrectly.

Before you can use the script you need to change the following settings:

  • $vms – A list of virtual machines where you want to mount the ISO (typically the PVS target list)
  • $viserver – The FQDN of the VMware Infrastructure server
  • $datastorepath – The location of the ISO containing the Boot Device Manager (BDM) on the VMware datastore
  • $silent – If set to $true the script will be run silently, no input is required

 

The decisional tree of the script

  1. Can i connect to the VMware Infrastructure server ($viserver)?
    • Yes > Continue
    • No > Error out
  2. Does the virtual machine ($vms) have cd drive?
    • Yes > Continue
    • No > Offer to power off the virtual machine, add a cd drive and then boot again
  3. Is the virtual machine ($vms) powered on?
    • Yes > Continue
    • No > Offer to power on the virtual machine
  4. Map the CD drive to the ISO on the datastore ($datastorepath)

 

Andrew wrote the script for a VMware Infrastructure (VI) environment. If you created a similar script for a different hypervisor (XenServer / Hyper-V) and want to share it here, contact me.

 

.

One Comment

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

en_USEnglish