用 WSL 开发最容易懵的问题:我在 WSL 里写的代码、装的环境、存的文件,到底在 Windows 的哪个位置?
很多人分不清「WSL 内部目录」和「Windows 挂载目录」,导致出现丢文件、权限报错、C盘爆满、删文件不释放空间等各种问题。
今天一篇讲透 WSL2 完整存储目录体系:真实存储位置、双向访问路径、核心目录作用、新手绝对要避开的坑,搭配实操用法,看完再也不乱放文件!
一、前置核心结论(记住就不会乱)
1. WSL2 所有 Linux 原生文件,全部封装在一个 ext4.vhdx 虚拟磁盘中,不会零散暴露在 Windows 文件夹里;
2. WSL 有两套目录:Linux 原生目录(独占空间) + /mnt 挂载目录(直通 Windows);
3. 尽量不要在 Windows 资源管理器里直接手动修改 WSL 原生文件,极易权限错乱、文件损坏。
二、WSL2 文件真实物理存储位置(Windows 侧)
WSL2 和 WSL1 最大的区别:WSL2 是虚拟机架构,文件系统是独立的虚拟磁盘文件。
1. 默认物理路径(C盘)
所有 Ubuntu/Debian 等发行版的数据,默认都存在这里:
%localappdata%\Packages\对应发行版文件夹\LocalState\ext4.vhdx
以 Ubuntu 为例,完整默认路径:
C:\Users\你的用户名\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
这个 ext4.vhdx 就是 WSL 的整个硬盘:代码、配置、Docker 镜像、缓存、日志全部塞在这里,也是之前讲到的「删文件不自动缩体积」的文件。
2. 关键特性
- 这是一个动态虚拟磁盘,只会扩容、不会自动缩容
- WSL 内部
df -h看到的空间,就是这个文件的内部空间 - Windows 看到的文件大小,就是整体占用的硬盘空间
三、Windows 如何直观访问 WSL 文件?(推荐方式)
不用找复杂的 VHDX 文件,Windows 可直接通过网络路径可视化访问 WSL 目录,安全又方便。
操作方法
打开 Windows 资源管理器,地址栏输入:
\\wsl$\
即可看到所有已安装的 WSL 发行版,点开对应系统,就能直接浏览、复制、查看 WSL 内的所有文件,比如常用的用户目录:
\\wsl$\Ubuntu\home\你的Linux用户名
使用规范
- 只读优先:适合查看、拷贝文件
- 尽量不直接修改:Windows 编辑 Linux 权限文件,大概率触发权限异常、编译报错
四、WSL 内部目录结构(Linux 侧核心目录说明)
进入 WSL 终端后,日常开发只需要弄懂这几个核心目录,足够覆盖 99% 场景。
1. /home/用户名 —— 日常工作主目录
WSL 最安全、最推荐的工作目录,代码、项目、个人配置全部放这里。
特点:权限完整、读写稳定、不易出问题,是开发首选目录。
2. /root —— 超级管理员目录
root 用户的专属目录,普通用户无权限随意操作,存放系统级配置,不要在这里放项目代码。
3. /mnt —— Windows 磁盘挂载目录(重点)
这是 WSL 打通 Windows 的核心目录,和上面所有目录完全不同:
/mnt/c对应 Windows C盘/mnt/d对应 Windows D盘- 所有操作直接作用于 Windows 原生文件
核心区别:
在 /mnt里删文件 → Windows 空间立刻释放
在 /home 里删文件 → 只释放 WSL 内部空间,Windows 不自动释放
4. /etc、/usr、/var 系统目录
- /etc:系统配置目录(环境变量、镜像源、wsl.conf 等)
- /usr:软件安装、程序依赖目录
- /var:日志、缓存、运行数据目录(容易悄悄涨空间)
五、WSL 开发目录最佳实践(避坑关键)
很多卡顿、报错、空间爆满,都是目录用错导致的,直接套用这套规范即可。
1. 项目代码、编译开发
推荐放在:WSL /home/用户名/ 下
优势:权限正常、IO 速度快、编译稳定,不会出现跨系统权限报错。
2. 需要和 Windows 互传的文件
使用 /mnt/c/Users/用户名/ 桌面/文档路径
适合临时传输文件、调用 Windows 本地资源,不适合长期存放项目。
3. 绝对禁止的操作
- 不要在 Windows 中手动修改、剪切、替换 ext4.vhdx 文件
- 不要在 Windows 里直接编辑 \\wsl$ 下的项目代码
- 不要把 Docker 项目、编译工程放在 /mnt 目录(速度慢、权限乱)
六、Docker 在 WSL 的特殊存储位置
使用 WSL2+Docker Desktop 的小伙伴注意:
Docker 的镜像、容器、卷、构建缓存,全部存放在 WSL 的 VHDX 虚拟磁盘中,不会单独出现在 Windows 普通文件夹。
这也是为什么 Docker 用久了 VHDX 暴涨、C盘变红的核心原因,清理必须两步走:
- WSL 内执行
docker system prune -a清理无用镜像缓存 - Windows 端用 diskpart 压缩 VHDX 释放空间
七、快速自查:你的文件存在哪?
WSL 终端执行,一秒判断目录类型:
pwd
- 路径以
/home、/root、/etc开头 → 存在 VHDX 虚拟磁盘 - 路径以
/mnt/c、/mnt/d开头 → 存在 Windows 真实硬盘
八、全文总结
1. WSL2 核心存储是 ext4.vhdx 虚拟磁盘,默认占用 C盘,所有 Linux 原生文件都封装在内;
2. Windows 访问 WSL 文件优先用 \\wsl$ 路径,安全便捷,禁止直接篡改 VHDX 文件;
3. /mnt 目录直通 Windows,文件操作实时生效、空间即时释放;原生目录则需要手动压缩回收空间;
4. 开发代码放 /home,文件互传用 /mnt,杜绝跨系统编辑,可规避 90% 的 WSL 报错与空间问题。
搞懂这套存储逻辑,WSL 开发环境会变得无比稳定,再也不用莫名其妙踩坑!✨