Provisioning Services High Availability with a Local vDisk Store

Share Button

When setting up high availability in a Provisioning Services environment there is always the question of where to put the vDisk store.  You have several different options for the location of the vDisk store.  You can place it on the local system, on a Windows CIFS share, Network Attached Storage, iSCSI SAN, or Fibre Channel SAN.  Each option has both its pros and cons.  For more information on the pros and cons of different vDisk store options see Citrix support article CTX119286 – Provisioning Server High Availability Considerations.  In this post we are going to focus on high availability with a local vDisk store. 

The steps for configuring high availability with a local vDisk store are pretty straight forward.  The main concern is the space needed on each Provisioning Server if you have multiple vDisk images.  The good side is that drives are cheap these days.  Using a local vDisk store for Provisioning Services high availability is also cheaper than purchasing Network Attached Storage and an iSCSI or Fibre Channel SAN.  It also offers more redundancy than a Windows CIFS share because having a vDisk store on each Provisioning Server eliminates a vDisk store on a Windows CIFS share on a file server from being a single point of failure.  You could also cluster the file server for the Windows CIFS share, but then you are still spending extra money on some type of shared storage for the cluster.  Another concern is the number of disks you can install in your servers.  If you have enough room to split the operating system and vDisk store on different RAID sets, then do so.  Having the RAID sets on different RAID controllers would be even better.  I strongly recommend this.  A good example would be a server with six disk drive bays.  Use two drive bays for your operating system in a mirror or RAID 1 set.  Then use the other four drives bays for your vDisk store in a RAID 5 set with a spare or RAID 10 set.  The more spindles, the better performance.  The only downside to using high availability with a local vDisk store is that you have manually copy the vDisk files to all of your Provisioning Servers in the farm.  I’m sure this can be automated with scripting or another process. 

So let’s go through the process of setting up Provisioning Services high availability with a local vDisk store.  Follow the steps below to configure high availablity with a local vdisk store:

1. Configure the vDisk store to be available on all Provisioning Servers in the farm with the same path to the vDisk store – example D:vDisks.

2. Setup a vDisk on one of the Provisioning Servers in the farm without load balancing or high availability enabled.  Make sure the vDisk is in Private Mode (single device, R/W access).

3. Create a Target Device and assign the vDisk to it.

4. Boot the Target Device to the vDisk and create your master image on the vDisk using XenConvert.

5. Shutdown the Target Device and make a copy for backup/updates.  Keep the backup/updates copy on this server.  Do not copy the backup/updates copy to the other Provisioning Servers.  Also do not enable load balancing and high availability on the backup/updates copy.

6. Put the vDisk in Standard Mode (multi-device, write-cache enabled).

7. Copy the vDisk (both .vhd and .pvp files) to the remaining Provisioning Servers in the farm to the same path you created the original vDisk at in step 1 – example D:vDisks.

8.Once the vDisk is copied over (.vhd and .pvp files) to the remaining Provisioning Servers in the farm, enable load balancing and high availability on the vDisk.

9. Create the remaining Target Devices and assign the vDisk to them.

10. Now you can boot Target Devices to the vDisk. 

Note: When you need to update your image, use the backup/updates copy.  Make sure the backup/updates copy is in Private Mode (single device, R/W access) and assign it to one Target Device.  Make your changes/updates to the image and start with step 5 to update all of your Provisioning Servers with highly available load balanced vDisk using a local vDisk store.  Another thing to be aware of is that copying large vDisk files during the day between Provisioning Servers can cause performance issues and put unecessary load on your Provisioning Server network cards.  Copying vDisk updates between Provisioining Servers should be done during non production hours.

You should now see the Target Devices get load balanced across the Provisioning Servers in the farm.  The Target Devices will also fail over between Provisioning Servers if one goes down since high availability is also enabled.  When the downed Provisioning Server comes back up, you can right click on the Provisioning Servers and click rebalance devices to distribute Target Devices evenly in your Provisioning Services farm.

If you have found this article interesting or if you have any other insights, please feel free to leave comments on this article.

Share Button
  1. Jarian GibsonJarian Gibson11-13-2009

    PVS will handle HA/LB with multiple PVS servers in the bootstrap as long as the vDisk has HA and load balancing enabled.

    Your setup should be fine.

  2. Cristian DiazCristian Diaz11-13-2009

    Thanks Jarian….I had that configuration, but a Citrix instructor was telling me that they found better performance with having the PVS handling the load balancing and failover. I have set up both PVS (Physical servers) in that fashion. This is my setup. 4 NICS… 2 NICS team for OS/File and 2 NICS for streaming purposes going to 2 different switches. What do you think?


  3. Jarian GibsonJarian Gibson11-13-2009

    @Cristian – Thanks for your comment.

    If you are going to use both nics for streaming then team at the OS level if the PVS server is physcial. If the PVS is virtual then bond/team the nics at the hypervisor level.

    For the bootstrap add both PVS servers to the list. You can add up to 4.

    • JohnJohn10-11-2010

      Jarian – can you clarify something for me regarding this – I have read in the documentation “Load balancing is not supported in the NIC failover implementation.” – and have seen conflicting posts about this over in the Citrix forums. Is this regarding active/passive NIC failover to different switches with regards to physical PVS servers? I am assuming that teamed physical NICs using LACP/LAG, on physical PVS servers, working in tandem with other PVS servers leveraging an HA/LB configuration is fine, correct? Thanks.

  4. Jarian GibsonJarian Gibson11-13-2009

    @Rich – Do you want to share your script?

    • Rich NicklesRich Nickles01-29-2010

      Absolutely. It’s just a simple xcopy that distrubutes the vDisk image after I’ve put it back into standard mode. Thanks again for great articles! Well written and very timely.

      @Echo on

      SET FILE1=vDisk_01_01_2010.pvp
      SET FILE2=vDisk_01_01_2010.vhd

      ‘Copy vDisk to file server for backup to tape

      XCOPY E:vDisk%FILE1% \stanfordcitriximages$PVSvDiskImages /D
      XCOPY E:vDisk%FILE2% \stanfordcitriximages$PVSvDiskImages /D

      ‘Distrubute vDisk image to other PVS servers local disk

      XCOPY E:vDisk%FILE1% \PVS2E$vDisk /D
      XCOPY E:vDisk%FILE2% \PVS2E$vDisk /D

      XCOPY E:vDisk%FILE1% \PVS3E$vDisk /D
      XCOPY E:vDisk%FILE2% \PVS3E$vDisk /D

      XCOPY E:vDisk%FILE1% \PVS4E$vDisk /D
      XCOPY E:vDisk%FILE2% \PVS4E$vDisk /D

      • Dan EDan E01-29-2010

        @ Rich


  5. Cristian DiazCristian Diaz11-13-2009


    Great article. I’m trying to do the same, but have a question for you.
    1. I have 2 nics for the sole purpose of streaming, do I team the nics at the os level or should I just assing those 2 nics to the streaming and let pvs handle the load balancing?
    2. For the bootstrap file configuration. Do I add both servers to the server list? or what is the best setup?


Leave a Reply