Citrix Provisioning – Update vDisk

Last Modified: Dec 21, 2023 @ 10:53 am

Navigation

This article applies to all 7.x versions of Citrix Provisioning, including 2311, LTSR 2203 CU4, LTSR 1912 CU8, and LTSR 7.15.45 (aka LTSR 7.15 CU9).

💡 = Recently Updated

Change Log

Updater Device

  1. Create a new Updater Target Device that is only used when you need to update a vDisk. You can create the Updater device manually or you can use the Citrix Virtual Desktops Setup Wizard.
  2. Put the Updater device in a new Device Collection. This is to avoid assigning the device to a Catalog in Studio. Users must not connect to an Updater device while it is powered on.
  3. Set the Updater device to boot from the Maintenance Type. This is used by the Versioning method of updating a vDisk.
  4. When adding the Updater device to Active Directory, be mindful of group policies. Sometimes it is helpful to apply the group policies to the Updater device so they are stored in the vDisk you are updating.
  5. An Updater device can only boot from one vDisk at a time but it can boot from any vDisk. If you need to do updates to multiple vDisks simultaneously, create more Updater devices.
  6. If you are using Enterprise Software Deployment tools (e.g., System Center Configuration Manager) to maintain a vDisk, keep the Updater device constantly booted to a Maintenance version so the ESD tool can push updates to it. This basically requires a separate Updater device for each vDisk.

Update a vDisk – Versioning Method

  1. In the Citrix Provisioning Console, right-click a Standard Mode vDisk, and click Versions.
  2. In the vDisk Versions window, click New.
  3. Notice that the Access is set to Maintenance. Click Done.
  4. If you look at the physical location where the vDisks are stored, you’ll see a new .avhdx file.
  5. Go to the properties of an Updater Target Device, and change the Type to Maintenance. You’ll use this Target Device to update the vDisk. Make sure this Target Device you are using for vDisk Updating is not in any Delivery Group so that users don’t accidentally connect to it when it is powered on.
  6. Of course this Target Device will need to be configured to use the vDisk you are updating.
  7. Power on the Updater Target Device.
  8. If you did not configure the DWORD registry value HKLM\Software\Citrix\ProvisioningServices\StreamProcess\SkipBootMenu to 1 on the Provisioning Servers, then you’ll see a boot menu.
  9. Login to your Updater Target Device. The Virtual Disk Status icon by the clock should indicate that the vDisk Mode is now Read/Write.
  10. Make any desired changes.
  11. The Citrix Provisioning Image Optimization tool disables Windows Update. To install Windows Updates, use the following script to enable Windows Update, install updates, then disable Windows Update – http://www.xenappblog.com/2013/prepare-a-provisioning-services-vdisk-for-standard-mode/
  12. Before powering off the target device, run your sealing tasks. Run antivirus sealing tasks. See VDA > Antivirus for links to antivirus vendor articles.
  13. Citrix Blog Post Sealing Steps After Updating a vDisk contains a list of commands to seal an image for Citrix Provisioning.
  14. Base Image Script Framework (BIS-F) automates many sealing tasks. The script is configurable using Group Policy.
  15. Power off the target device so the vDisk is no longer being used.
  16. Go back to the Versions window for the vDisk.
  17. Highlight the version you just updated, and click Promote.
  18. Best practice is to promote it to Test first. Or you can go directly to Production if you’re confident that your updates won’t cause any problems. Note: if you select Immediate, it won’t take effect until the Target Devices are rebooted. For scheduled promotion, the Target Devices must be rebooted after the scheduled date and time.
  19. The Replication icon should have a warning icon on it indicating that you need to copy the files to the other Provisioning server.
  20. Only copy the .avhdx and .pvp files. Do not copy the .lok file.

  21. Another method of copying the vDisk files is by using Robocopy:
    Robocopy D:\vDisks\ \\pvs2\d$\vDisks *.vhd *.avhd *.pvp *.vhdx *.avhdx /b /mir /xf *.lok /xd WriteCache /xo
  22. Citrix Blog Post The vDisk Replicator Utility is finally finished! has a GUI utility script that can replicate vDisks between Citrix Provisioning Sites and between Citrix Provisioning Farms.

  23. Then click the Refresh button, and the warning icon should go away.
  24. Configure a Target Device to boot the Test vDisk Type. Then boot it.
  25. Once testing is complete, promote the vDisk version again.
  26. Immediate means it will take effect only after Target Devices are rebooted, whether immediately or later. Scheduled means the Target Device has to be rebooted after the scheduled date and time before it takes effect; if the Target Device has been rebooted before the scheduled date, then the older version is still in effect. Click OK.
  27. If you need to Revert, you can use the Revert button, or the drop-down on top of the window.

Merge Versions

  1. Citrix recommends no more than five .avhd files in the snapshot chain. To collapse the chain of .avhd files, you can Merge the versions. Don’t Merge until the files on both Provisioning servers are replicated.
  2. You can merge (Merged Updates) multiple .avhdx files into a single new .avhdx file that is linked to the original base file. Or you can merge (Merged Base) the original base, plus all of the .avhdx files into a new base .vhdx file, without any linked .avhdx files.
  3. The Merged Base process creates a whole new .vhdx file that is the same size or larger than the original base. After merging, replicate the merged file to both Provisioning Servers.

  4. Make sure there is no warning icon on the Replication button.
  5. If your merged version is currently in Test mode, then you can promote it to Production.
  6. After merging, you can delete older versions if you don’t need to revert to them.

Citrix CTX207112 Managing Provisioning Services VDisk Versions with VhdUtil Tool: CLI tool that can do the following outside of Citrix Provisioning Console:

  • dump header/footer
  • merge chain
  • rename chain

Expand vDisk VHD

To expand a vDisk file, create a Merged Base. Then use normal VHD expansion tools/methods.

One method is described below: (Commands in fixed width font)

  1. Open cmd or powershell as administrator
  2. diskpart
  3. select vdisk file=“<path to your visk>” (e.g. V:\store\my.vhd)
  4. list vdisk (you should now see your vdisk and the path)
  5. expand vdisk maximum=60000 (This is the size in megabytes of the size you want to extend, so 60000 is 60Gb)
  6. attach vdisk
  7. list disk
  8. list volume (take note of the Volume number of the your vdisk, you should see the old size)
  9. select volume 5 (or whatever volume number from list volume command)
  10. extend
  11. list volume (you should now see the size you want for your disk. This should also be seen in the Citrix Provisioning console)
  12. detach vdisk
  13. exit

Reverse Image – BCDEDIT Method

If you want to upgrade the Citrix Provisioning Target Device Software on a vDisk, and if your current Target Devices Software installation is 7.6 Update 1 or newer then you can simply install the new Target Device Software. No special steps required. However, if your Target Device software is 7.6 or older then you’ll need to Reverse Image as detailed in this section.

If you want to update the NIC driver (e.g., VMware Tools), then you can’t use the normal vDisk versioning process since NIC interruptions will break the connection between Target Device and vDisk. Instead, you must reverse image, which essentially disconnects the vDisk from Citrix Provisioning.

One method of reverse imaging is to boot directly from the vDisk VHD. All you need to do is copy the vDisk VHD/VHDX to a Windows machine’s local C: drive, run bcdedit to configure booting to the VHD/VHDX, reboot into the VHD/VHDX, make your changes, reboot back into the original Windows OS, copy the VHD/VHDX back to Citrix Provisioning and import it. Details can be found later in this section.

Instead of the BCDEDIT method, you can try one of these alternative reverse image methods:

  • Citrix Image Portability Service can take a VHD from a Citrix Provisioning (PVS) store and recreate the original vSphere image. 
  • Aaron Silber How to update VMware Tools without Reverse Imaging – The gist is to add an E1000 NIC, boot from that, upgrade VMware Tools, and then remove the E1000 NIC. CTA Nishith Gupta has detailed this process in VMware Tools In PVS Image.
  • The traditional method of reverse imaging is to use Citrix Provisioning Imaging (P2PVS.exe), or similar, to copy a vDisk to a local disk, boot from the local disk, make changes, and then run the Imaging Wizard again to copy the local disk back to a new vDisk. Select Volume to Volume. On the next page, select C: as source, and local disk as Destination. If you don’t see the C: drive as an option, then make sure your vDisk is in read/write mode (Private Image or Maintenance Version).
  • George Spiers PVS Reverse Image with VMware vCenter Converter. This article has troubleshooting steps if the reverse image won’t boot.
  • Jan Hendriks Citrix PVS Reverse Imaging with Windows Backup.

To use bcdedit to boot from directly from vDisk VHD (Microsoft TechNet Add a Native-Boot Virtual Hard Disk to the Boot Menu):

  1. In Citrix Provisioning Console, if using versioning, create a merged base.
  2. Copy the merged based vDisk (VHDX file) to any supported Windows machine. Note: the C: drive of the virtual machine must be large enough to contain a fully expanded VHDX file.
  3. Run the following command to export the current BCD configuration:
    bcdedit /export c:\bcdbackup

  4. Run the following command to copy the default BCD entry to a new entry. This outputs a GUID that you will need later.
    bcdedit /copy {default} /d "vhd boot (locate)"

  5. Run the following commands to set the new BCD entry to boot from the VHD file. Replace {guid} with the GUID outputted from the previous command. Include the braces.
    bcdedit /set {guid} device vhd=[locate]\MyvDisk.vhd
    bcdedit /set {guid} osdevice vhd=[locate]\MyvDisk.vhd
    

  6. Make sure you are connected to the console of the virtual machine.
  7. Restart the virtual machine.
  8. When the boot menu appears, select the VHD option. Note: if you see a blue screen, then you might have to enlarge your C: drive so the VHD file can be unpacked.
  9. Login to the virtual machine.
  10. Perform updates:
    1. Uninstall the Citrix Provisioning Target Device software.
    2. Upgrade VMware Tools.
    3. Reinstall Citrix Provisioning Target Device software. The Target Device software must be installed after VMware Tools is updated.
  11. When you are done making changes, reboot back into the regular operating system.

  12. Rename the updated VHD file to make it unique.
  13. Copy the updated VHD file to your Citrix Provisioning Store.
  14. Copy an existing .pvp file and paste it with the same name as your newly updated VHD.

  15. In the Citrix Provisioning Console, right-click the store, and click Add or Import Existing vDisk.
  16. Click Search.
  17. It should find the new vDisk. Click Add. Click OK.

  18. You can now assign the newly updated vDisk to your Target Devices.

Automatic Scheduled vDisk Update – SCCM

You can use the vDisk Update Management node (and Hosts node) in Citrix Provisioning Console to schedule an updater machine to power on, receive updates from System Center Configuration Manager, and power off. The new vDisk version can then be automatically promoted to Production, or you can leave it in Maintenance or Test mode and promote it manually.

See the following Citrix links for instructions:

Related Topics

251 thoughts on “Citrix Provisioning – Update vDisk”

  1. Hi Ryan,

    I have the same issue,
    i’ve following the article with setting Citrix Imaging Wizard, after reboot the Virtual Machine, Master Image can’t boot up and stuck on the ‘Citrix Provisioning version’ and blue screen.

  2. Hi Carl
    Not sure why you don’t show an example of Centralized vDisk provisioning. This has been around for quite a while, this eliminates out of band replication routines in a production scenario.
    Centralized vDisk provisioning has been around for quite a while, storage challenges (SMB?), is a thing of the past. It eliminates manually touching these vdisk files.
    I normally have our vDisk on our UPM Server dedicated vDisk partition, and never have to do manual replication.
    PVS server will offload most of the IOPS from a storage. After all, PVS servers are loading disks from storage only once and serve them from memory.

    Please explain why you’re not recommending Centralized repository for vDisk files.

    I was hoping that you will raise the flag on Centralized vDisk, instead I see vDisk replicator.

    I only use local standalone PVS server for vDisk on isolated testing and cloning a vDisk for a different flavor implementation.

    Old Reference:
    https://citrixblogs.wpengine.com/2016/11/10/pvs-internals-3-designing-vdisk-stores/

    Thanks
    Edgar

    I’ve always depend on your updated docs and was hoping to see you providing an example of Centralized vDisk provisioning, and reference this to my Colleagues.

    1. My customers that have tried it reported performance problems. They also get better resilience when storing vDisks on local disks instead of remote file share.

      1. Hi Carl

        Can we be more specific performance problems related to?

        I’ve used Centralized vDisk for a Manufacturing environment accessed international, from CN, EUR, MEX, all Americas, never had an issue.
        Did the same for a US banking company prior to that, these are all past 7 years.

        It makes management simpler. Master Image vDisk implementation and management, should really be one and done. Avoid out of Band routines that will touch this critical vDisk files. (clone if needed – only for isolated test scenario or create an updated different flavor image – that I use local storage on one PVS server)
        This is what PVS is famous for managing the vDisk, and centralized vDisk provisioning is part of this optimal implementation.

        There’s lots of documentation related to Centralized vDisk.

        I think it would help us your dedicated followers if you can explain, explicitly the issues encountered with centralized vDisk provisioning.

        Thanks
        Edgar

        Note: I have an 8000 user environment that I am switching vDisk to centralized management, reason I am interested to know what are the issues encountered.
        Questions that are normally ask will this affect network I/O
        *PVS streams from Memory (Cache – one time load) PVS Server, not from Share, all happens on the BNIStack / MIO (Multi I/O)*
        reference: https://support.citrix.com/article/CTX136378/provisioning-services-boot-process-diagram

  3. Great article! Silly question probably, is it possible to use SCCM/MECM task sequences for the VDisk Update Management maintenance or not? I would like to have some control over the order of how things are executed. I believe there are some things that may be difficult to do before sealing image. For example, I believe that applications like Splunk and the MECM Client requires additional task to “sysprep” the application before sealing.

  4. Hi Carl,

    I am following the section
    Expand vDisk VHD
    on step 10 and get
    There is not enough usable free space on specified disk(s) to extend the
    volume.
    In the vdisk pool do we need to shutdown all the servers to release the lock to able to do this ?

    Thanks,

    1. The .vhd file needs to be not used. Are you sure that you added free space to the .vhd file before you tried to expand the partition?

      1. Hi Carl,

        The free space was added as we can see the free space in disk management just will not allow us to extend. Our citrix hosts are using version 47 of the vDisk and we have created a merged base (V48) that is in maintenance mode. Should we be able to extend the vhdx for version 48 without removing the locks on the vDisk.

        Thanks,

          1. This is standard VHD operations that has nothing to do with PVS. You can copy the VHDX file to a different machine and try to extend it there.

          2. Hi Mark,
            I have the same issue “there is not enough usable free space on the specified disk to extend the volume”, do you found a solution?

            my vdisk have a size =60GB and i want more place.
            here is the commands and result

            DISKPART> list vdisk

            VDisk ### Disk ### State Type File
            ——— ——– ——————– ——— —-
            * VDisk 0 Disk — Added Unknown F:\Provisioning\Store\XenApp2022-0923.18.vhdx

            DISKPART> expand vdisk maximum=100000

            100 percent completed

            DiskPart successfully expanded the virtual disk file.

            DISKPART> attach vdisk

            100 percent completed

            DiskPart successfully attached the virtual disk file.

            DISKPART> list disk

            Disk ### Status Size Free Dyn Gpt
            ——– ————- ——- ——- — —
            Disk 0 Online 60 GB 1024 KB *
            Disk 1 Online 24 GB 1024 KB *
            Disk 2 Online 400 GB 1024 KB *
            * Disk 3 Online 97 GB 37 GB *

            DISKPART> list volume

            Volume ### Ltr Label Fs Type Size Status Info
            ———- — ———– —– ———- ——- ——— ——–
            Volume 0 R DVD-ROM 0 B No Media
            Volume 1 C NTFS Partition 59 GB Healthy Boot
            Volume 2 FAT32 Partition 100 MB Healthy System
            Volume 3 NTFS Partition 524 MB Healthy Hidden
            Volume 4 E SWAP NTFS Partition 23 GB Healthy Pagefile
            Volume 5 F PVS NTFS Partition 399 GB Healthy
            Volume 6 NTFS Partition 59 GB Healthy
            Volume 7 FAT32 Partition 100 MB Healthy Hidden
            Volume 8 NTFS Partition 524 MB Healthy Hidden

            DISKPART> select volume 6

            Volume 6 is the selected volume.

            DISKPART> extend

            There is not enough usable free space on specified disk(s) to extend the
            volume.

          3. to solve my case “there is not enough usable free space on the specified disk to extend the volume”
            “Please note that you might see that there is unallocated space on the selected disk, but, this space is nonadjacent with the drive they wish to extend. This unallocated space should be right and behind the target drive”
            my vdisk have a size =60GB and i want more place.
            here is the commands and result

            DISKPART> list vdisk

            VDisk ### Disk ### State Type File
            ——— ——– ——————– ——— —-
            * VDisk 0 Disk — Added Unknown F:\Provisioning\Store\XenApp2022-0923.18.vhdx

            DISKPART> expand vdisk maximum=100000

            100 percent completed

            DiskPart successfully expanded the virtual disk file.

            DISKPART> attach vdisk

            100 percent completed

            DiskPart successfully attached the virtual disk file.

            DISKPART> list disk

            Disk ### Status Size Free Dyn Gpt
            ——– ————- ——- ——- — —
            Disk 0 Online 60 GB 1024 KB *
            Disk 1 Online 24 GB 1024 KB *
            Disk 2 Online 400 GB 1024 KB *
            * Disk 3 Online 97 GB 37 GB *

            DISKPART> list volume

            Volume ### Ltr Label Fs Type Size Status Info
            ———- — ———– —– ———- ——- ——— ——–
            Volume 0 R DVD-ROM 0 B No Media
            Volume 1 C NTFS Partition 59 GB Healthy Boot
            Volume 2 FAT32 Partition 100 MB Healthy System
            Volume 3 NTFS Partition 524 MB Healthy Hidden
            Volume 4 E SWAP NTFS Partition 23 GB Healthy Pagefile
            Volume 5 F PVS NTFS Partition 399 GB Healthy
            Volume 6 NTFS Partition 59 GB Healthy
            Volume 7 FAT32 Partition 100 MB Healthy Hidden
            Volume 8 NTFS Partition 524 MB Healthy Hidden

            DISKPART> select volume 6

            Volume 6 is the selected volume.

            DISKPART> extend

            There is not enough usable free space on specified disk(s) to extend the
            volume.

            Select volume 8
            List volume
            Delete volume 8 override
            List volume
            Select volume 6
            extend

            There is not enough usable free space on specified disk(s) to extend the
            volume.

            to solve :

            Select volume 8
            List volume
            Delete volume 8 override
            List volume
            Select volume 6
            extend
            list volume (you should now see the size you want for your disk. This should also be seen in the Citrix Provisioning console)
            detach vdisk
            exit

  5. Hi Carl:

    I’m trying to do a VMWare Tools update to a Windows 10 vdisk (and also a feature update) using Aaron Silber’s method (adding a second NIC) but I’m finding that it’s not working because we use BDM and not PXE/TFTP to boot our devices, so booting to the 2nd NIC doesn’t do anything. I’ve tried similar methods that seemed to work for other folks that use BDM (in the comments on this site: https://www.npbconsultants.com/archives/207) but they don’t work for me. It still fails after showing the PVS version and goes to a windows blue screen.

    Any suggestions, or do you think I’m stuck doing the dreaded reverse image method?

Leave a Reply

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