FSLogix is no longer exotic. Between the Microsoft acquisition, WVD production pools, and Citrix estates that standardized on containers, we now have enough production hours to speak in failures rather than hopes. This post is what breaks, what we tune, and the one metric we watch every Monday: profile load time under concurrency.
Container sizing
Dynamic VHDX growth is convenient until a user fills a share or fragments into pain. We set:
- Reasonable default size with headroom for Outlook OST behavior
- Monitoring for containers approaching full
- Quotas and user education for Desktop dumping grounds
- Separate Office container when search/OST dominates tickets
One size for task workers and power users is how power users punish the storage array.
Azure Files vs traditional file servers
Azure Files (appropriate tier for IOPS) works when network path and permissions are correct; under-tiered storage recreates 2015 roaming-profile horror in the cloud.
On-prem SMB still wins for some VDI farms colocated with session hosts — latency matters.
Cloud Cache features need a design, not a checkbox. We enable advanced options only after a pilot with failure injection (storage path loss).
Outlook and OneDrive
Outlook remains the boss fight. Office container, cached mode settings, and exclusion lists interact. OneDrive known-folder moves and large sync trees compete for logon time if you let them. Sequence: profile mounts healthy first; cloud sync second.
Exclusion lists
Exclude true trash; do not exclude something Office needs to feel fast. Document every exclusion with an owner. Random exclusions from internet threads become undebuggable folklore.
Antivirus
Scan-on-access against VHDX files without exclusions is a self-inflicted outage. Validate with the security team; write the exclusion into the standard build.
Concurrent logon storms
Monday 8:55 is the load test finance never funded. We:
- Stagger shift starts where business allows
- Autoscale session hosts before the spike
- Watch SMB latency and queue length, not only host CPU
- Alert on FSLogix event log patterns for mount failures
The metric
P95 time from logon start to shell usable (or FSLogix load duration + Explorer ready). Track weekly. Density changes that improve cost but destroy P95 are not improvements.
Ops procedures
- Profile reset runbook (detach, rename, rebuild)
- Locked VHDX handling for dual-session mistakes
- Permissions model for helpdesk without domain admin
- Backup/snapshot story for profile shares
Extended practice notes (2020)
The remaining gap between a short checklist and a usable field note is usually scenario detail. In practice, the same engagement type described above still requires explicit answers to: what is in scope this quarter, what is deferred with a date, who can halt a wave, and how success is measured in production — not in a lab.
We document those answers before the first production change. When stakeholders disagree, the disagreement is resolved in writing, not on the bridge at cutover. That habit is independent of whether the workload is mail, identity, virtualization, desktop delivery, or security hardening.
Repeatable detail also includes communication: who tells users what changes, when the freeze starts, where status is posted, and how exceptions are requested. Technical excellence without communication still produces an outage from the user's point of view.
If you're facing this
If VDI “feels slow” and hosts look idle, instrument profile load before you buy more CPUs. We tune FSLogix and profile storage for Citrix, RDS, and WVD — bring login duration samples and storage latency graphs.