WSL2不需也不应手动划分物理分区,因其使用封装在NTFS中的动态扩展vhdx虚拟磁盘;正确做法是通过wsl --export/--import迁移vhdx至非系统盘、挂载Windows分区(如/mnt/d)存放大文件,并用diskpart compact vdisk压缩瘦身。
windows 本身不为 linux 子系统(wsl)单独“分区”,因为 wsl 2 使用的是虚拟硬盘(.vhdx 文件),而非物理磁盘分区。它默认把所有 linux 文件系统封装在一个动态扩展的 ext4 虚拟磁盘里,这个文件就存放在 windows 的 ntfs 分区中(通常是 c:\users\用户名\appdata\local\packages\... 下)。所以你不需要、也不能像装双系统那样去“分一个 linux 分区”。
为什么不能也不该给 WSL 手动分物理盘?
WSL 是运行在 Windows 内部的轻量级虚拟化环境,不是独立操作系统。它不直接访问物理硬盘扇区,也不依赖 EFI/BIOS 启动流程,更不使用 /boot、swap、/ 等传统 Linux 分区结构。强行用磁盘管理工具划出一块“未分配空间”或新建 NTFS 卷给 WSL 用,不仅无效,还可能被误格式化或干扰 Windows 自身存储管理。
真正合规的 WSL 存储管理方式
重点不在“分物理盘”,而在合理规划 WSL 的虚拟磁盘行为和数据存放路径:
-
让 WSL 使用指定的非系统盘存储 .vhdx 文件:默认存 C 盘易占满空间。可将整个 Linux 发行版导出后重新导入到 D 盘或 E 盘的自定义路径,例如
D:\wsl\ubuntu-22.04\ext4.vhdx。操作需用wsl --export和wsl --import命令完成。 -
挂载 Windows 分区供 Linux 访问,而非反向操作:WSL 默认自动挂载
/mnt/c、/mnt/d等。你只需把大文件(如项目源码、数据集)放在 D 盘,再在 WSL 中通过/mnt/d/xxx访问,既安全又高效,无需复制数据。 -
控制 .vhdx 最大容量,防无节制膨胀:WSL 2 的 .vhdx 默认可涨到 1TB。可在发行版根目录下创建
etc/wsl.conf,加入[wsl2]段并设置swap=2GB、localhostForwarding=true;更关键的是,用 PowerShell 运行wsl --shutdown后手动压缩 vhdx:diskpart → select vdisk file="D:\wsl\ubuntu\ext4.vhdx" → attach vdisk → compact vdisk。 -
避免在 /home 下存大量二进制大文件:.vhdx 文件对小文件读写友好,但频繁写入 GB 级视频、镜像、数据库文件会显著拖慢性能且难清理。这类内容应始终放在
/mnt/d/下,由 Windows 文件系统原生管理。
如果你其实想装的是双系统(不是 WSL)
那才需要真分区:在磁盘管理中压缩 C 盘,留出 50GB 以上“未分配空间”,安装 Ubuntu 时选择“其他选项”,手动创建 /boot/efi(512MB,FAT32)、swap(内存 1–1.5 倍)、/(剩余空间,ext4)。这个过程与 WSL 完全无关,也绝不推荐把 WSL 和双系统混为一谈。


















