WSL2 stores its virtual hard disks in %LOCALAPPDATA%\Packages\...\LocalState by default, which often fills up the system drive. You can change this location by exporting the distribution, deleting the old instance, and creating a new one with the --vhd-path flag pointing to your desired drive. This method ensures your Linux files reside on a larger or faster storage device without affecting Windows performance.
Understanding WSL2 Storage Architecture
Before modifying where your data lives, it is crucial to understand how WSL2 manages storage. Unlike WSL1, which ran directly on the NTFS file system, WSL2 uses a lightweight utility VM and a virtual hard disk (VHD) file. For Ubuntu distributions, this file is typically namedext4.vhdx. By default, this file resides within the user's AppData folder on the C: drive. As you install packages, clone repositories, and compile code, this file grows dynamically. While it shrinks when files are deleted inside Linux, the host Windows file system does not always reclaim that space immediately, leading to wasted disk capacity. Moving this file to a secondary drive is an effective way to manage storage efficiently.
Step-by-Step Guide to Relocate Images
The most reliable way to move the default disk is to export the current distribution, remove it, and recreate it at the new path. This process preserves your data while changing the physical location of the VHD.1. Export Your Current Distribution
Open PowerShell as Administrator. First, list your installed distributions to identify the exact name of the one you wish to move. Run the following command:wsl --list --verbose
Note the name of your distribution (e.g., "Ubuntu"). Next, export the distribution to a tar file. Choose a location with enough free space to hold the compressed archive, such as your Documents folder.
wsl --export Ubuntu C:\Users\YourName\Documents\ubuntu-backup.tar
Replace "Ubuntu" with your actual distribution name and adjust the path as needed. This step may take several minutes depending on the size of your data. Do not interrupt this process.
2. Unregister the Old Distribution
Once the export is complete, you need to remove the existing instance from WSL. This action deletes the old VHDX file but keeps your exported tar file safe.wsl --unregister Ubuntu
After running this command, verify that the distribution no longer appears in the verbose list. The old data on the C: drive is now gone, freeing up significant space.
3. Create the New Instance with Custom Path
Now, create a new instance using the exported data and specify the new location for the virtual disk. Use the--vhd-path parameter to point to your desired drive, such as D: or E:.
wsl --import Ubuntu D:\WSL\Ubuntu C:\Users\YourName\Documents\ubuntu-backup.tar --version 2
This command imports the data into a new VHD located at D:\WSL\Ubuntu\ext4.vhdx. The --version 2 flag ensures it runs as WSL2. You can choose any directory structure you prefer, provided the parent folder exists.
4. Verify the Move
Runwsl --list --verbose again. Ensure the status is "Running" or "Stopped" and that the version is 2. Launch the distribution to confirm everything works correctly. Check your home directory to ensure all previous files and configurations are intact.
Managing Disk Space After Migration
Moving the VHD is just the first step. To maintain optimal performance, you should monitor the growth of the new file. If you notice the VHD growing excessively, consider shrinking it periodically. You can do this by shutting down WSL, compacting the VHDX in Windows, and then restarting. Additionally, if you have multiple distributions, repeat this process for each one. You can also set a default user for the new import if you encountered login issues after migration. For more advanced storage management, such as mounting external drives, you might want to explore how to Mount NFS share from WSL in Windows 10 for network-based storage solutions.Troubleshooting Common Issues
Sometimes, the import process fails due to permission errors or insufficient space. Ensure the target drive has enough free space to accommodate the uncompressed size of the tar file during the import operation. If the distribution fails to start, check the Event Viewer in Windows for detailed error logs related to Hyper-V or WSL. If you experience high CPU usage or slow I/O operations after moving the disk, ensure the target drive is formatted with NTFS or ReFS. ExFAT is generally not recommended for WSL2 virtual disks due to performance overhead. For general disk health checks, refer to guides on how to Check Disk on Formatted Device in Windows 10 to rule out underlying hardware issues.Frequently Asked Questions
Will moving the WSL2 disk delete my data?
No, if you follow the export and import steps correctly, your data remains intact. The export creates a backup, and the import restores it to the new location. Always verify the import was successful before deleting the original tar file.Can I move the WSL2 disk to an external USB drive?
Technically yes, but it is not recommended. External USB drives often have higher latency and lower reliability compared to internal SSDs. This can lead to significantly slower performance for Linux applications and potential data corruption if the drive disconnects unexpectedly.How do I shrink the VHDX file to save space?
You can shrink the VHD by shutting down WSL withwsl --shutdown, then using the Windows VHDx management tools or third-party utilities to compact the file. Note that the file will only shrink back to the amount of data actually stored, not the maximum allocated size.
What happens if I delete the VHDX manually?
Deleting the VHDX file manually while WSL is registered will corrupt the distribution. WSL expects the file to exist at the specified path. Always use thewsl --unregister command to properly remove a distribution and clean up associated files.