This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can trysigning in orchanging directories.
Access to this page requires authorization. You can trychanging directories.
Dev Drive is a new form of storage volume available to improve performance for key developer workloads.
Dev Drive builds onReFS technology to employ targeted file system optimizations and provide more control over storage volume settings and security, including trust designation, antivirus configuration, and administrative control over what filters are attached.
See the blog post:Dev Drive for Performance Improvements in Visual Studio and Dev Boxes for some average improvement measurements across common dev operations.
To set up a new Dev Drive, open WindowsSettings and navigate toSystem >Storage >Advanced Storage Settings >Disks & volumes. SelectCreate dev drive. Existing storage volumes cannot be converted to be a Dev Drive. The Dev Drive designation happens only at the original format time.
Before setting up a Dev Drive,ensure that the prerequisites are met.
When updating to the latest Windows 11 release, you may need an additional reboot before the Dev Drive feature becomes available. If you are working in a business enterprise environment, your security administrator will need toConfigure Dev Drive security policy in order to enable Dev Drive.
Warning
Dev Drive is intended only forkey developer scenarios and any custom settings will still be covered byGroup Policy settings in Business or Enterprise work environments. Learn more about how toConfigure Dev Drive security policy.
You will be given three options:
There are advantages and trade-offs to consider when choosing whether tocreate a disk partition orcreate a new VHD to store your Dev Drive.
Create a disk partition: Storing your Dev Drive on a disk partition will generally offer faster performance because it directly uses the physical disk without any additional layers. The trade-offs are that using a partitioned disk will be less flexible, since resizing partitions can be more complex and risky, and less portability, since the partition is tied to the physical disk.
Create a new VHD: Storing your Dev Drive in a Virtual Hard Disk (VHD) may have slightly lower performance due to the overhead of managing the virtual disk layer. The trade-offs are that VHDs offer more flexibility for dynamic resizing (if you need to manage disk space efficiently), moving, or backing up data. VHDs are also highly portable,allowing the VHD file to be transferred to another machine or backup location. However, keep in mind that when a VHD is hosted on a fixed disk (HDD or SSD), it is not recommended to copy the VHD, move it to a different machine, and then continue using it as a Dev Drive.
When choosing theCreate new VHD option to set up a Dev Drive, you will then need to determine the following:
C:\
, unless creating a Dev Drive usingDev Home, in which case the default location is%userprofile%\DevDrives
. We recommend using a per-user directory path location to store your Dev Drive to avoid any unintentional sharing.Once you complete the process of selecting between these options, your Dev Drive will be created.
ToResize an existing volume:
Choose a volume to resize.
Choose a new size for the volume. You will need to have at least 50 GB of unallocated space available, the minimum size needed for a Dev Drive. Once the size is set, selectNext.
To format a Dev Drive on the new free space, specify theLabel (drive name),Drive Letter, andSize allocation. The maximum size will be the amount of free space you allocated in the previous step, the minimum size for a Dev Drive is 50 GB.
Congratulations! You've now resized your Dev Drive.
To find anduse unallocated space on an existing drive, you can openSystem >Storage >Disks & volumes, look through the page to see whether any storage space is listed as "Unallocated". SelectCreate volume and you will be given the choices toCreate Simple Volume (a standard NTFS storage volume) orCreate Dev Drive. To create a Dev Drive, the steps are the same as above, you will need to add aLabel (drive name),Drive Letter, and confirm theSize allocation.
As an alternative to using Windows Settings, there are two options for creating Dev Drive storage volumes from the command line. Both options require that you open the command line as an Administrator. You must be a member of the Admin group to format a hard drive. These command line formatting methods may be preferred when creating multiple Dev Drives or as an admin for multiple machines.
Format D: /DevDrv /Q
Format-Volume -DriveLetter D -DevDrive
These code samples require that you replaceD:
with the drive location you wish to target. See the links for more options and command parameters.
AStorage Volume specifies how data is stored on the file system, via directories and files, in a particular format. Windows uses NTFS for the system drive and, by default, for most non-removable drives. TheResilient File System (ReFS) is a newer Microsoft file system format, designed to maximize data availability, scale efficiently to large data sets across diverse workloads, and provide data integrity with resiliency to corruption. It seeks to address an expanding set of storage scenarios and establish a foundation for future innovations.
TheDev Drive utilizes ReFS enabling you to initialize a storage volume specifically for development workloads, providing faster performance, and customizable settings that are optimized for development scenarios. ReFS contains several file system specific optimizations to improve the performance of key developer scenarios.
Learn more abouthow Dev Drive handles security.
The Dev Drive is intended for:
Considerations for Installing Developer Tools and SDKs on Dev Drive: Developer tools and SDKs are typically placed in either an administrator or per-user location. These locations provide specific security and isolation guarantees on Windows and impact Microsoft Defender behavior. However, many tools provide the flexibility to choose the installation location, including a Dev Drive.
Before proceeding with the installation of developer tools or SDKs on a Dev Drive, evaluate the trade-offs associated with the system and asynchronous scanning to ensure it aligns with the security requirements of your device and organization. You have the option to create an administrator or per-user folder on the Dev Drive. Additionally, it is important to verify that Microsoft Defender Performance Mode (e.g., asynchronous scanning) meets your needs for handling binaries.
Note
IT Admins will want to create per-user Access Control List (ACL) folders for multi-user devices as a best practice to avoid EOP attacks.
A package cache is the global folder location used by applications to store files for installed software. These source files are needed when you want to update, uninstall, or repair the installed software. Visual Studio is one such application that stores a large portion of its data in the Package Cache. After changing your environment variables,you may need to either restart all open console windows or reboot the device for the new values to be applied.
Npm cache (NodeJS): Create an npm cache directory in your Dev Drive, for exampleD:\packages\npm
, then set a global environment variablenpm_config_cache
to that path, for examplesetx /M npm_config_cache D:\packages\npm
. If you have already installed NodeJS on your machine, move the contents of%AppData%\npm-cache
to this directory. (On some systems the npm cache may be in%LocalAppData%\npm-cache
). Learn more in the npm docs:npm-cache andnpm config: cache.
NuGet global-packages folder: The NuGet global-packages folder is used by dotnet, MSBuild, and Visual Studio. Create a user specific NuGet directory in your CopyOnWrite (CoW) filesystem. For example:D:\<username>\.nuget\packages
. Use one of the following ways to change the global-packages folder from the default location to your newly created folder (to manage the globally installed packages):
Set a global environment variableNUGET_PACKAGES
to that path. For example:setx /M NUGET_PACKAGES D:\<username>\.nuget\packages
.
SetglobalPackagesFolder
, when usingPackageReference
, orrepositoryPath
, when usingpackages.config
, to that path in configuration settings.
Set theRestorePackagesPath
MSBuild property (MSBuild only) to that path.
To verify the global-packages folder, run the dotnet nuget locals command:dotnet nuget locals global-packages --list
. The restore will install and download packages into the new path. The default NuGet global-packages folder can be deleted. Learn more in theNuGet docs: Managing the global packages, cache, and temp folders.
Note
There is currently a known issue:Dotnet tool command doesn't respect nuget packages path. The .NET team is aware and investigating a fix for .NET 10 and a servicing release update for 8.0 and 9.0.
vcpkg cache: Create a vcpkg cache directory in your Dev Drive, for exampleD:\packages\vcpkg
, then set a global environment variableVCPKG_DEFAULT_BINARY_CACHE
to that path, for examplesetx /M VCPKG_DEFAULT_BINARY_CACHE D:\packages\vcpkg
. If you have already installed packages, move the contents of%LOCALAPPDATA%\vcpkg\archives
or%APPDATA%\vcpkg\archives
to this directory. Learn more in the vcpkg docs:vcpkg Binary Caching.
Pip cache (Python): Create a pip cache directory in your Dev Drive, for exampleD:\packages\pip
, then set a global environment variablePIP_CACHE_DIR
to that path, for examplesetx /M PIP_CACHE_DIR D:\packages\pip
. If you have already restored pip packages and Wheels on your machine, move the contents of%LocalAppData%\pip\Cache
to this directory. Learn more in the pip docs:pip caching and see StackOverflow toChange directory of pip cache on Linux?.
Cargo cache (Rust): Create a Cargo cache directory in your Dev Drive, for exampleD:\packages\cargo
, then set a global environment variableCARGO_HOME
to that path, for examplesetx /M CARGO_HOME D:\packages\cargo
. If you have already restored Cargo packages on your machine, move the contents of%USERPROFILE%\.cargo
to this directory. Learn more in the Cargo docs:Cargo Environmental Variables.
Maven cache (Java): Create a Maven cache directory in your Dev Drive, for exampleD:\packages\maven
, then set a global environment variableMAVEN_OPTS
to add a configuration setting to that path, for examplesetx /M MAVEN_OPTS "-Dmaven.repo.local=D:\packages\maven"
. Move the contents of%USERPROFILE%\.m2\repository
to this directory (this includes only the dependencies, plugins, and other artifacts that Maven downloads into therepository
folder and uses for your projects). Learn more in theMaven docs and see StackOverflow forHow to specify an alternate location for the .m2 folder or settings.xml permanently?.
Gradle cache (Java): Create a Gradle cache directory in your Dev Drive, for example,D:\packages\gradle
. Then, set a global environment variableGRADLE_USER_HOME
to point to that path, for example, usesetx /M GRADLE_USER_HOME "D:\packages\gradle"
in the command line to set it system-wide. After setting this variable, Gradle will use the specified directory (D:\packages\gradle
) for its caches and configuration files. If you have existing Gradle files, move the contents of%USERPROFILE%\.gradle
to this new directory. For more detailed information, you can refer to theGradle documentation and explore community resources like StackOverflow fortips on managing Gradle configurations and cache directories.
Security and trust are important considerations when working with project files. Typically, there is a tradeoff between performance and security. Using a Dev Drive places control over this balance in the hands of developers and security administrators, with a responsibility for choosing which filters are attached and the settings for Microsoft Defender Antivirus scans.
Antivirus filters, including both Microsoft Defender and 3rd-party antivirus filters, are attached to a Dev Drive by default. Microsoft Defender Antivirus defaults to the new"performance mode" setting on Dev Drives, taking speed and performance into account, while providing a secure alternative to folder exclusions. For an increased level of protection, Microsoft Defender also offers"Real-time protection mode".
Any product or features requiring additional filters will not work unless thefilter is added to Dev Drive.
Warning
Dev Drives can be run with no antivirus filters attached. Exercise extreme caution! Removing antivirus filters is a security risk and means that your storage drive will not be covered by the standard security scans. You are responsible for evaluating the risks associated with detaching antivirus filters and should only do so when confident that your files stored on the Dev Drive will not be exposed to malicious attacks.
Microsoft recommends using the defaultperformance mode setting when using atrusted Dev Drive.
Dev Drives are automatically designated astrusted using a flag stored in the system registry during the original formatting time, providing the best possible performance by default. Atrusted Dev Drive means that the developer using the volume has high confidence in the security of the content stored there.
Similar to when a developer chooses toAdd an exclusion to Windows Security, the developer takes on the responsibility for managing the security of the content stored in order to gain additional performance.
A Dev Drive marked astrusted is a signal for Microsoft Defender to run inperformance mode. Running Microsoft Defender in performance mode provides a balance between threat protection and performance. Real-time protection will still be enabled on all other storage volumes.
Due to the security considerations of having filters detached, transporting a dev drive between machines will result in the volume being treated as an ordinary volume without special filter attach policies. The volume needs to be marked astrusted when it is attached to a new machine. SeeHow do I designate a Dev Drive as trusted?.
Anuntrusted Dev Drive will not have the same privileges as atrusted Dev Drive. Security will run inreal-time protection mode when a Dev Drive isuntrusted. Exercise caution if designating trust to a Dev Drive outside of the time that it is first created.
To designate a Dev Drive astrusted:
<drive-letter>
with the letter of the storage drive you are designating trust to. For example,fsutil devdrv trust D:
.fsutil devdrv trust <drive-letter>:
To confirm whether a Dev Drive is trusted, enter the command:
fsutil devdrv query <drive-letter>:
The C: drive on your machine cannot be designated as a Dev Drive. Developer tools, such as Visual Studio, MSBuild, .NET SDK, Windows SDK, etc, should be stored on your C: drive and not in a Dev Drive.
Performance mode is now available on Windows 11 as a new Microsoft Defender Antivirus capability. This capability reduces the performance impact of Microsoft Defender Antivirus scans for files stored on a designated Dev Drive.
To learn more about performance mode and how it compares with real-time protection, seeMicrosoft Defender: Protecting Dev Drive using performance mode.
For performance mode to be enabled, the Dev Drive must be designated astrusted and Microsoft Defender Real-time protection must be set to "On".
By default,Filter Manager will turn OFF all filters on a Dev Drive, with the exception of antivirus filters. An antivirus filter is a filter that's attached in theFSFilter Anti-Virus
altitude range (i.e., 320000-329999).FSFilter Anti-Virus
includes filters that detect and disinfect viruses during file I/O.
The default policy can be configured not to attach antivirus filters to Dev Drive usingfsutil
.CAUTION: This policy applies to ALL Dev Drives on the system.
fsutil devdrv enable /disallowAv
The command,fsutil devdrv enable [/allowAv|/disallowAv]
, includes the following two options:
disallowAv
: Specifies that your Dev Drive(s) do not have any attached filters (not even antivirus). Filters can be added back usingfsutil devdrv setfiltersallowed <Filter-1>
command. (Replacing<Filter-1>
with the name of your desired filter.)
allowAv
: Specifies that Dev Drives are to be protected by the default antivirus filter.
For help, enter the command:fsutil devdrv enable /?
. If neither/allowAv
nor/disallowAv
is specified, the antivirus policy for your Dev Drive is not configured and the system default is to have Dev Drives protected by antivirus filter.
Warning
Exercise extreme caution when detaching filters. Detaching antivirus filters is a security risk and means that your storage will not be covered by the standard Microsoft Defender real-time protection or performance mode scans. You are responsible for evaluating the risks associated with detaching antivirus filters and should only do so when confident that your files will not be exposed to malicious attacks.
To learn more about filters, seeAbout file system filter drivers,Installing a filter driver,Filter Manager Concepts,Load order groups and altitudes for minifilter drivers.
If you are working in a Business or Enterprise environment, your company's group policy may be configured for select filters to attach on Dev Drives, in addition to the above policy. A system administrator may also choose to attach additional filters to a specific Dev Drive or all Dev Drives using anallow list.
A system admin may want to add a filter called "Foo", we will refer to it asFooFlt
. They may only want that filter enabled on the Dev Drive mounted asD:
. They do not need this filter on another Dev Drive mounted asE:
. The admin can make changes to an allow list of filters on the Dev Drive usingfsutil.exe, a system-supplied command line utility.
Filters specifically set asAllowed can attach to a Dev Drive in addition to antivirus filter policy discussed above.
The following examples demonstrate an administrator's ability to set filters allowed on all Dev Drives on a machine, using an allow list.
To use thesetfiltersallowed
command to allowFilter-01
andFilter-02
on all Dev Drives, use the command:
fsutil devdrv setfiltersallowed Filter-01, Filter-02
To display the filter attach policy for all Dev Drives, use the command:
fsutil devdrv query
The result will display the following:
Filter-01
,Filter-02
To change this Dev Drive configuration to allow onlyFilter-03
on your Dev Drive(s), withFilter-01
andFilter-02
no longer allowed to attach, use the command:
fsutil devdrv setfiltersallowed Filter-03
Seefsutil devdrv /?
for other related commands.
The following filters may be used with Dev Drive:
Scenario: Description | Filter Name |
---|---|
GVFS: Sparse enlistments of Windows | PrjFlt |
MSSense: Microsoft Defender for Endpoint for EDR Sensor | MsSecFlt |
Defender: Windows Defender Filter | WdFilter |
Docker: Running containers out of Dev Drive | bindFlt, wcifs |
Windows Performance Recorder: Measure file system operations | FileInfo |
Resource Monitor: Shows resource usage. Required to show file names in Disk Activity | FileInfo |
Process Monitor - Sysinternals: Monitor file system activities | ProcMon24 |
Windows Upgrade: Used during OS Upgrade. Required if user moves TEMP environment variable to Dev Drive | WinSetupMon |
Windows Defender Application Control (WDAC): Managed installer tracking with AppLocker identity services | applockerfltr |
TheWdFilter
is attached by default. The following command is an example demonstrating how to attach all of these additional filters to a Dev Drive:
fsutil devdrv setfiltersallowed "PrjFlt, MsSecFlt, WdFilter, bindFlt, wcifs, FileInfo, ProcMon24"
Tip
To determine the filters required for a specific scenario, you may need to temporarily mark a Dev Drive asuntrusted. Then, run the scenario and make note of all filters that attached to the volume. Designate the Dev Drive astrusted again and then add the filters to the Allow list for that Dev Drive to ensure the scenario succeeds. Finally, remove any filters that may not be needed, one at a time, while ensuring that the scenario works as expected.
Tip
The filter name for Process Monitor may change. If adding the filter name "ProcMon24" doesn't seem to capture file system activities on a Dev Drive, list the filters using the commandfltmc filters
, find the filter name for Process Monitor, and use that name instead of "ProcMon24".
Beginning in Windows 11 24H2 & Windows Server 2025, Block cloning is now supported on Dev Drive. Because Dev Drive utilizes theReFS file system format, Block cloning support will mean free performance benefits whenever you copy a file using Dev Drive. Block cloning allows the file system to copy a range of file bytes on behalf of an application as a low-cost metadata operation, rather than performing expensive read and write operations to the underlying physical data.This results in faster copy completion, less I/O to the underlying storage, and improved storage capacity by enabling multiple files to share the same logical clusters. Learn more aboutBlock cloning.
There are a few scenarios in which we do not recommend using a Dev Drive. These include:
You can delete a Dev Drive in the Windows 11 System Settings:System
>Storage
>Disks & volumes
.
Open WindowsSettings menu, then chooseStorage, thenAdvanced Storage Settings, thenDisks & volumes, where you will find a list of the storage volumes on your device. SelectProperties next to the Dev Drive storage volume that you want to delete. In the drive's properties, you will find the option toDelete under theFormat label.
The Dev Drive will now be deleted.However, if the Dev Drive was created as a new VHD, the VHD will need to be deleted to reclaim the storage space used by that VHD. To accomplish this, you must detach the virtual disk so that the VHD file hosting the Dev Drive can be deleted, following these steps:
Some frequently asked questions about Dev Drive, include:
The Dev Drive default settings have been optimized for common development scenarios, but can be customized, allowing control over drivers and services run on the storage volume. To customize Dev Drive settings, open theSettings menu. UnderSystem >Storage >Disks & volumes, go toProperties.
Important
If working for a business or enterprise, the Dev Drive would still be managed by your enterprise settings. Some customizations may therefore be unavailable depending on the company policy.
No, applications or tools installed on your machine’s C: drive can utilize files from a Dev Drive. For development projects, however, we recommend storing any project-specific directories, files, and package caches inside the Dev Drive. The Dev Drive can be pinned to File Explorer’sQuick Access as a reminder.
Yes, ReFS uses slightly more memory than NTFS. We recommend a machine with at least 8 GB of memory, ideally 16 GB.
Yes. If you have the space, you can create as many Dev Drives as you would like. Using a separate Dev Drive for each software development project would allow you to simply delete the drive at the end of development, rather than repartitioning your disk again. However, keep in mind that the minimum size for a Dev Drive is 50 GB.
Once you have a Dev Drive created, Visual Studio will automatically recognize it when you're creating a new project, or cloning an existing project, and pick that filepath by default. To optimize performance when using Visual Studio, we recommend moving any project code,package caches, andCopy on write
MS Build tasks to the Dev Drive that may have previously been saved elsewhere. (SeeHow to change the build output directory in the Visual Studio docs.) We also recommend that you consider redirecting%TEMP%
and%TMP%
envvars to Dev Drive. This will require also adding theWinSetupMon
filter, which is needed for the Windows Update process. (SeeFilters for common scenarios. Many programs use these, so beware of potential side effects. We also recommend usingperformance mode for Microsoft Defender for asynchronous performance gains using Dev Drive. Turning Microsoft Defender completely off may result in the most maximum performance gains, but this may increase security risks and is a setting controlled by the system admin.
For more information, see the blog post:Dev Drive for Performance Improvements in Visual Studio and Dev Boxes.
You can access Dev Drive project files, which run on the Windows file system, from a Linux distribution running via WSL. However, WSL runs in a VHD and for the best performance files should be stored on the Linux file system. WSL is out of the scope of Windows file system so you should not expect to see any performance improvement when accessing project files in Dev Drive from a Linux distribution running via WSL.
SeeMSFT_Volume class
in the Windows Driver docs.
You can find guidance onHow to configure and use Live Unit Testing in the Visual Studio documentation. However, be aware that there is a dependency onProjFS. You will need to move the Live Unit Testing workspace root to the Dev Drive and add Windows Projected File System to the allowed filter list. You can do so using the following command in PowerShell:
fsutil devdrv setfiltersallowed PrjFlt
Yes, the Dev Drive VHD will be included in the BitLocker encryption of the hosting volume. It is not necessary to enable BitLocker on the mounted VHD.
Yes, using a Dev Drive can enhance efficiency and reduce build times when working on a Java development project. See the blog post"Speed up your Java Development on Windows with Dev Drive".
Dev Drive Performance Mode is specifically a Microsoft Defender Antivirus capability related to Defender’s real-time protection. When using alternative Antivirus programs with Dev Drive, Performance Mode will not be applied, but it is possible toadjust the Allow List of security filters that are attached to the Dev Drive in order to find the right balance between performance and security for your development work. You will need to ensure that you understand the function of any attached filters when making changes to the attached filter list. Find a list with descriptions inFilters for common scenarios.
When a dev drive is mounted but you forgot where its located, the following methods can be used to find it:
UseDiskPart and the"list vdisk" command to show the full path to the vhdx: 1) Open a command line and enterdiskpart
, 2) Once DiskPart opens, enterlist vdisk
.
Use Powershell and "Get-Disk |Select-Object FriendlyName,Location]": Open PowerShell and enterGet-Disk | Select-Object FriendlyName,Location
.
If you find any issues in this documentation or would like to contribute additional FAQ suggestions, visit theWindows Dev Docs open source repo on GitHub.