WSL2磁盘占用优化
本文阅读大约需要3分钟。
前言
WSL2(Windows Subsystem for Linux 2)是微软为Windows开发的Linux兼容层,基于轻量级虚拟机运行真实Linux内核,实现完整系统调用,相比初代大幅提升文件I/O性能。它支持Ubuntu、Debian等多种发行版,与Windows文件系统和工具无缝集成,为开发者提供了高效、便捷的跨平台开发环境。
通俗来说,就是运行在windows的linux虚拟机。对于码农来说,确实很香。
但是使用久了之后,磁盘占用尤其让人头疼。
默认存储在C盘,通常是指对 WSL2 的核心磁盘文件 ext4.vhdx 。迁移之后,其实也可以自定义名称。
WSL2 的磁盘工作方式:
-
只会单向“长胖”:WSL2 运行在一个名为 ext4.vhdx 的虚拟磁盘文件中。这个文件会随着你在 Linux 里安装、使用软件而动态增大。
-
不会自然“瘦身”:当你删除 Linux 里的文件时,Linux 系统会释放内部空间,但这个 .vhdx 文件在 Windows 上占用的物理空间不会自动缩小。它就像一个只进不出的口袋,占着地盘就不松开。
-
“瘦身”的唯一方法:因此,想让磁盘“实际占用”变小,关键就是主动对 .vhdx 文件进行手动压缩。
搬家迁移
简单提一嘴,从默认C盘迁移到其他盘。
也就是自定义存储位置,逃离C盘噩梦。
可参考文章: WSL2 磁盘分区迁移
手动压缩
- 终止 wsl2
wsl --shutdown
- 使用 diskpart 工具压缩虚拟磁盘
diskpart
- 选择虚拟磁盘(请替换为需要压缩的虚拟磁盘文件路径)
select vdisk file="ubuntu_wsl2.vhdx"
- 执行如下命令行压缩虚拟磁盘
attach vdisk readonly
compact vdisk
detach vdisk
exit
linux文件清理
清理 WSL Linux 内部垃圾
- 清理 APT 缓存(针对 Ubuntu/Debian)
sudo apt autoremove && sudo apt clean
- 清理 Docker 垃圾(如果你使用 Docker Desktop)
Docker 的数据是 WSL2 磁盘膨胀的常见原因之一。请务必在你的 Linux 环境里运行,以彻底清理:
docker system prune -a -f --volumes
这个命令会清理所有未使用的数据,效果最彻底。
- 手动查找并删除大文件
使用 du 或 ncdu 等命令行工具,查找并删除不需要的大文件或日志,例如:
# 使用 ncdu 进行交互式分析(如果没有,请先用 sudo apt install ncdu 安装)
sudo ncdu /
所属分类:
运维
文章标签:
#windows
#wsl
#linux