Skip to main content

Optimizing FSLogix storage costs in Azure

This guide provides technical, actionable steps to reduce profile bloat and minimize monthly Azure spend without compromising user performance.

Carisa Stringer | December 15, 2025

Introduction

Optimizing FSLogix storage costs in Azure is a critical discipline for enterprise IT professionals managing Azure Virtual Desktop (AVD). As user profiles expand—driven largely by Microsoft 365 caches, Teams data, and web content—storage expenses can scale unpredictably. 

Effective cost control requires a multi-layered strategy: enforcing precise profile exclusions, implementing automated VHDX compaction to reclaim "white space," and selecting the correct Azure storage tier.

Why are my FSLogix storage costs increasing in Azure?

Storage costs in Azure Virtual Desktop environments often spiral due to the "bloat" factor inherent in modern applications. While FSLogix is critical for ensuring a consistent user experience by roaming profiles in non-persistent environments, its containers (VHD/VHDX files) often capture far more data than is necessary.

  • The "Bloat" Factor: Modern apps like Microsoft Teams, OneDrive, and Google Chrome aggressively cache data. By default, this data is written to %AppData% or %LocalAppData%, which FSLogix captures. A single user’s Teams cache can easily grow to 2-4GB+ within weeks, multiplied across thousands of users.
  • Dynamic Disk Growth: FSLogix typically uses dynamic VHDX files. These files expand as data is written but do not automatically shrink when data is deleted. If a user downloads a 5GB file and then deletes it, the VHDX file remains 5GB larger, effectively trapping "white space" that you pay for indefinitely.
  • The Performance Tax: High-performance storage (like Azure Files Premium) is expensive. You are often billed for "provisioned" capacity, meaning you pay for the peak size of your storage share, not just the data currently in use. Calculating the comprehensive AVD total cost of ownership means looking well beyond just VM pricing, as storage, networking, and management all contribute to the final cost.
  • Orphaned Profiles: In high-turnover environments, profiles for users who have left the organization often persist unnoticed, consuming expensive premium storage tiers.

Visualizing the "Cost Stack"

As the chart above illustrates, your monthly bill is rarely driven by essential user data alone. Instead, it is a stack of compounded inefficiencies:

  1. Bloat: The green layer represents the massive volume of temporary cache data that shouldn't be there in the first place.
  2. White Space: The orange layer highlights the "invisible tax" of VHDX files that have grown large and stayed large, even after data was deleted.
  3. Tier Pricing: The red bar demonstrates how storing this waste on Premium storage multiplies the financial impact.

The following sections of this guide will detail exactly how to dismantle this stack—layer by layer—to achieve the optimized state shown on the right.

How can I configure FSLogix to reduce profile size?

The most effective way to lower costs is to prevent data from entering the profile container in the first place. You can achieve this by configuring a Redirections.xml file to force specific folders to be stored on the local temporary disk rather than the persistent network profile.

  • Implement Redirections.xml: This configuration file tells FSLogix which folders to exclude from the profile container. Excluded data is discarded at logoff, keeping the profile lean.
  • Critical Exclusions List: To immediately reduce profile size, exclude these high-impact folders:
    • Teams Cache: %AppData%\Microsoft\Teams\Cache (and related Service Worker folders)
    • Browser Caches: %LocalAppData%\Google\Chrome\User Data\Default\Cache and %LocalAppData%\Microsoft\Edge\User Data\Default\Cache
    • Temp Folders: %TEMP% and %TMP%
    • OneDrive Cache: %LocalAppData%\Microsoft\OneDrive\cache
  • Multimedia Redirection (MMR): For Teams, enables SlimCore media optimization with WebRTC fallback. For Zoom and other WebRTC-based calling apps, offloads audio processing to the local client. Note: MMR is still in experimental stages for non-Microsoft platforms.
  • ODFC vs. Full Profile: Consider splitting Office data (Outlook OSTs) into a separate ODFC container. This allows you to place critical profile data on Premium storage while potentially moving the larger, less latency-sensitive ODFC containers to a more cost-effective storage tier.

How do I remove unused data and shrink FSLogix containers?

Preventing growth is step one; reclaiming existing space is step two. Since VHDX files do not shrink automatically on their own, you must actively manage "white space."

  • Understanding VHDX White Space: When a user deletes files inside their desktop session, the file system marks the space as free, but the underlying VHDX container on the storage array does not release that space back to Azure.
  • VHD Disk Compaction: FSLogix includes a setting called VHDCompactDisk. When enabled, it attempts to compact the disk during user sign-out.
    • Note: This process relies on the "defragsvc" service and requires the user session to have enough time during logoff to complete the operation. If a host shuts down too quickly, compaction may fail.
  • Pruning Stale Profiles: Implement a lifecycle policy to delete profiles that haven't been accessed in 30–60 days. This is often a manual process in native Azure but can be automated with scripts or management tools.
  • PowerShell Maintenance: The industry-standard method for deep cleaning is to run the Invoke-FslShrinkDisk PowerShell script. This script mounts the VHDX, defragments it, and removes zeroed blocks to physically reduce the file size on the storage array.

Which Azure storage solution offers the best value for FSLogix?

Selecting the right storage backend is a balance between IOPS performance (User Experience) and cost per GiB.

  • Azure Files Premium:
    • Best for: Most standard enterprise deployments requiring low latency.
    • Cost Model: You pay for provisioned capacity using Provisioned v1 billing. If you provision 100TB but only use 50TB, you still pay for 100TB. For Standard tier, Microsoft now offers Provisioned v2, which allows independent configuration of capacity, IOPS, and throughput. This makes "white space" management critical.
  • Azure NetApp Files (ANF):
    • Best for: Best for high-performance requirements and large-scale deployments where IOPS demands exceed Azure Files Premium capabilities, or where cost per GiB at scale becomes favorable. Sizing recommendations should be based on actual workload analysis rather than user count alone.
    • Hidden Value: While often perceived as expensive, ANF can be cheaper than Azure Files Premium at scale because of its Standard and Cool access tiers. You can set policies to move cold profile blocks (data not accessed recently) to the Cool tier, significantly lowering the blended cost per GiB.
  • Azure Files Standard:
    • Best for: Archive data or very small, non-production environments.
    • Warning: Generally discouraged for FSLogix profiles due to IOPS throttling, which causes slow logons and black screens during boot storms.

Note: As of 2025, Microsoft has released Premium Plus tier and enhanced Provisioned v2 billing for greater flexibility in capacity and IOPS provisioning.

How can I automate FSLogix storage optimization at scale?

Manual optimization is unsustainable in enterprise environments. Automation is the key to maintaining a "clean" storage environment without constant administrative overhead. Automating the right-sizing of AVD images is the process of using real-world performance data to ensure session host virtual machines are provisioned with the optimal amount of resources, eliminating wasted spending on oversized VMs.

  • Automation Frameworks: Use Azure Automation Accounts or Logic Apps to schedule maintenance scripts (like Invoke-FslShrinkDisk) to run during off-peak hours (e.g., weekends).
  • Auto-Scaling Storage: Instead of statically provisioning 100TB of storage "just in case," the ability to autoscale Azure volumes and capacity pools dynamically is the key to ensuring you rarely pay for empty buffer space.Scripts can check your current usage every hour and increase the quota only when you near the limit, ensuring you rarely pay for empty buffer space.
  • Risks of Manual Scripts: Relying on custom PowerShell scripts requires constant maintenance. If the script fails or hangs, you risk storage filling up, leading to user downtime.

Know the TCO

This step-by-step wizard tool gives you the total cost of ownership for AVD in your organization.

How does Nerdio assist with FSLogix cost optimization?

Nerdio Manager for Enterprise replaces manual PowerShell maintenance with purpose-built automation designed specifically for AVD and FSLogix.

Understanding the Automated Workflow 

As illustrated in the diagram above, Nerdio approaches cost optimization as a continuous, three-stage lifecycle rather than a one-time fix:

  1. Prevention: First, it applies Redirections.xml configurations to block "bloat" (like Teams and browser caches) from entering the profile container.
  2. Remediation: It then acts as an orchestration engine, automatically mounting and compacting VHDX files to reclaim "white space" that accumulates over time.
  3. Infrastructure Efficiency: Finally, it optimizes the underlying storage layer by auto-scaling quotas and managing tiers, ensuring you pay the lowest possible rate for the remaining data.

This automated architecture delivers the following capabilities:

  • Automated Profile Shrinking (Scripted Actions): Nerdio provides a pre-built, managed Scripted Action called "Shrink FSLogix Profiles." Unlike manual methods, this automation spins up a temporary VM, mounts your VHDX files in bulk, removes the white space, and then shuts down.
  • Storage Auto-Scaling: Nerdio natively auto-scales Azure Files and Azure NetApp Files. It actively monitors your storage latency and free space, automatically increasing the quota during demand spikes and—crucially—shrinking the quota back down when space is freed up.
  • Stale Profile Cleanup: You can configure rules within Nerdio to automatically detect and delete profiles that haven't been touched in a set number of days (e.g., 60 days).
  • Simplified Configuration: Nerdio’s UI allows you to manage Redirections.xml and registry settings (like VHDCompactDisk) visually, ensuring best-practice exclusions are applied consistently across all host pools.

 

This video provides a practical walkthrough of cost-reduction strategies in Azure Virtual Desktop, including a specific demonstration of the "Shrink FSLogix Profiles" automation referenced in the guide.

See this demo to learn how you can optimize processes, improve security, increase reliability, and save up to 70% on Microsoft Azure costs.

Optimize and save

See how you can optimize processes, improve security, increase reliability, and save up to 70% on Microsoft Azure costs.

Frequently asked questions


About the author

Photo of Carisa Stinger

Carisa Stringer

Head of Product Marketing

Carisa Stringer is the Head of Product Marketing at Nerdio, where she leads the strategy and execution of go-to-market plans for the company’s enterprise and managed service provider solutions. She joined Nerdio in 2025, bringing 20+ years of experience in end user computing, desktops-as-a-service, and Microsoft technologies. Prior to her current role, Carisa held key product marketing positions at Citrix and Anthology, where she contributed to innovative go-to-market initiatives. Her career reflects a strong track record in driving growth and adoption in the enterprise technology sector. Carisa holds a Bachelor of Science in Industrial Engineering from the Georgia Institute of Technology.

Ready to get started?