FSLogix -Concurrent access to O365 Containers VHDAccessMode Explained!

In an expansion to FSLogix documentation Concurrent Office 365 Container Access the following goes into more detail on the topic on allowing concurrent access to the Office365 Container using VHD Difference disks to achieve this frequent requirement especially in a citrix environment.

What is a difference disk?

differencing disk is a virtual hard disk (VHD) that stores changes made to another VHD. The purpose of differencing disks is to make it possible to maintain information about changes made so that they can be reversed or merged into parent VHD if necessary.

What is the Default Access mode?

The default configuration out of the box for FSLogix is normal direct access where is the a one to one relationship with User & VHD. Only one connection can be made to the VHD at any one time therefore it would be unsuitable for circumstances where multiple session could be established by one User. No difference disk is used in this method.

Default scenario is direct access stored on the network , below an overview:-

FSLOGIX_VHDA1

How can i allow multiple sessions for one user (i.e Citrix XenApp)?

There is three possible options to allow multiple sessions, they are as follows

Network:-

This scenario difference disk will be used and stored on the network , below an overview:-

FSLOGIX_VHDA2.PNG

During login if it detect for presence of difference disk on the VHD Location Share, it will successfully open and merge to parent disk and then remove the difference disk as well as any other difference disk on the users share. It will then create a difference disk in the format of %computername%_ODFC.VHD(X) and then mount that disk next to the Parent VHD on the share.

Network Share directory after logon:-

FSLOGIX_VHDA1-Disks.PNG
During logoff it will detach difference disk, attempts to rename it to merge.vhd(x) and then merge it into the parent VHD but only if all sessions are closed. It will then delete the difference disk.

Network Share directory after logoff:-FSLOGIX_VHDA1-Disks1

NOTE: Differences has been merged and parent VHD has increased in size.

Local:-

This scenario difference disk will be used and stored on the PC/Server , below an overview:-

FSLOGIX_VHDA3.PNG

At logon it detect any previous ODFC.VHD_%usersid%_(X) disk in the temp directory(C:\windows\temp) and remove it,  it will then create a new difference disk called %usersid%_ODFC.VHD(X) in the temp and attached the difference disk.

C:\windows\temp directory after logon:-

FSLOGIX_VHDA2-Disks1.PNG

During logoff it will detach difference disk, attempt to merge the difference disk with the Parent VHD in the network share and delete difference disk if all sessions are’s closed.

C:\windows\temp directory after logoff:-

FSLOGIX_VHDA2-Disks3

Network Share VHD after logoff:-

FSLOGIX_VHDA2-Disks2.PNG

NOTE: Differences has been merged and parent VHD has increased in size.

User Session:-

This scenario does not use difference disk but a  unique VHD(X) will be used for each concurrent session , below an overview:-

FSLOGIX_VHDA4.PNG

At logon it searches for a session VHD(X) not currently in use, if found it will attach the VHD(X) otherwise it will create one in format of ODFC-%username%-SESSION-<sessionnumber>.VHD(X)

Network Share directory after logon:-

FSLOGIX_VHDA4-disk1.PNG

At logoff, it detaches the VHD(X) and if marked for delete it will be removed otherwise the Session based VHD(X) will remain on network share available for the next session from the user

Network Share directory after logoff:-

FSLOGIX_VHDA4-disk1.PNG

NOTE: In this option each Session VHD is independent on each other and there is a maximum of 10 sessions.

This option has specific disadvantages as there is not a single merged copy/parent VHD, therefor depending on which session it attached (0-9) the data contained within the VHD maybe recent/may take some additional syn’ing to be fully up to date and require extra time along with x times more data storage depending on number of sessions required (although this can be limited).

How do i change the VHD Access Mode?

This can be adjusted by adding the following registry key on the device

HKEY_LOCAL_MACHINE\Software\Policies\FsLogix\ODFC
DWORD:  VHDAccessMode
  • A value of ‘0’ (default) means normal direct access behaviour
  • A value of ‘1’ means that a difference disk will be used and stored on the network.
  • A value of ‘2’ means that a difference disk will be used and stored on the local machine
  • A value of ‘3’ means that a unique VHD(X) will be used for each concurrent session. These VHD(X) files will typically persist so that they can be used the next time a user creates a session. To control the number of VHD(X) files that will persist, see the NumSessionVHDsToKeep setting.

There is currently no GPO setting to do this at the minute but hopefully this will come in future releases to ease the configuration on mass.

 

NOTE: A recent change to FSLogix recommendation is Mode ‘1’ (Network) should not be used if the O365 Container is being used with Outlook Cached Exchange mode. Use mode ‘0’ or ‘3’.

It was noted that the using VHDAccessMode introduces a significant increases in resource due to the merging of VHD’s during logoff/on process.

9 comments

  1. Doesn’t windows server have a shared vhdx feature or is it hyper-v?
    Can Microsoft create a shareable VHDX file format? or can anyone create a shareable file format that can attach to windows?

    1. Yes there is a shared volume feature in hyper-V. This is great in the context of say cluster volumes between 2 VM’s but for folder redirection/profiles to VHDX there is no automated way to create in manage this per user hence the work FSLogix has done to automated and use the same method of using difference disk.

  2. I see alot of users getting confused on concurrent session on profile containers and 0365 containers. The 0365 container work great. But the profile side is limted on this. If a current sessions in loaded the profile side will take forever to load a temp profile. Assuming it’s temp. Logs show another process is In use. Which at this point create a local profile. Then resulting in that machine not loading future profiles due to it having a local profile. I’m struggling with the concurrent part. I’m teaching myself so I bet I’m doing it wrong. One thing I see is a user will have a desktop up, then launch a published app. The published app will try to load the load the profile and it can’t

  3. Hi , Actually i am here to know about ODFC File size is very High is there is any way to reduce it.

Leave a Reply