解决使用WSL客户端养龙虾后C盘空间告急的问题

1. 释放 C 盘空间:将 WSL 迁移到其他盘

WSL 默认安装在 C 盘。随着你安装 Java 环境、依赖包以及大型 AI 模型,它会生成一个巨大的 .vhdx 虚拟磁盘文件。如果你的 C 盘吃紧,可以将其整体搬迁到非系统盘(如 D 盘)。

迁移步骤(以迁移到 D:\WSL 为例):

bash 复制代码
关闭 WSL:
wsl --shutdown

导出当前的子系统(文件夹需要提前手动创建哦):
wsl --export Ubuntu D:\wsl_export\ubuntu.tar (注意:Ubuntu 是你的发行版名称)

注销旧的子系统(这会删除 C 盘的数据):
wsl --unregister Ubuntu

重新导入到新位置:
wsl --import Ubuntu D:\WSL\ D:\wsl_export\ubuntu.tar

这个操作完 C盘从之前的47G,导出时变为36G,注销后变成60G了。

2. 整理完的操作

wsl: 使用镜像网络模式时,wsl2.localhostForwarding 设置无效,这其实是一个配置冲突的提示,而不是报错。

  1. 为什么会出现这个提示?
    这是因为你在 .wslconfig 文件中同时开启了两个功能:

networkingMode=mirrored(镜像网络模式):这是 WSL2 较新的高级模式,让 WSL 直接使用 Windows 的网络栈。

localhostForwarding=true:这是旧版默认网络模式下的配置,用于将 Linux 端口映射到 Windows。

在"镜像模式"下,Linux 和 Windows 共享 IP,localhost 本身就是互通的,所以旧的转发设置就变得多余且冲突了。

  1. 如何优化你的 .wslconfig
    为了消除警告并确保网络稳定,建议你按以下步骤调整配置文件:

在 Windows 中按下 Win + R,输入 %UserProfile% 并回车。

找到或创建 .wslconfig 文件,用记事本打开。

推荐配置如下(针对 Java 开发优化):

bash 复制代码
Ini, TOML
[wsl2]
# 既然你想用镜像模式,就保持这个
networkingMode=mirrored

# 移除或注释掉 localhostForwarding,因为它在镜像模式下无效
# localhostForwarding=true 

# 推荐开启以下镜像模式配套功能
# 允许 WSL 里的服务监听 Windows 上的所有 IP
hostAddressLoopback=true
# 自动同步代理设置(如果你开发需要科学上网,这个非常有用)
autoProxy=true

[experimental]
# 自动回收空闲内存,这对 16G 内存的机器非常友好
autoMemoryReclaim=gradual
# 允许在 Windows 上直接访问 WSL 的服务
sparseVhd=true
保存文件后,在 PowerShell 中执行 wsl --shutdown 重启生效。
  1. 镜像模式(Mirrored)的优势
    作为一个 Java 开发者,开启 mirrored 模式后你会发现:

本地调试更简单: 你在 WSL 里启动一个 Spring Boot 项目(8080端口),直接在 Windows 浏览器输入 localhost:8080 就能访问,不需要处理复杂的 IP 转换。

VPN 支持更强: 以前 Windows 开了代理,WSL 经常上不了网,镜像模式下它们共用网络环境,兼容性好得多。

  1. 核心大招:压缩 VHDX 磁盘 (Shrink)
    这是最关键的一步。WSL2 的磁盘文件(包括 Ubuntu 和 Docker)有个特性:它像气球,吹大容易,放气难。 即使你在 Docker 里删除了 20GB 的镜像,Windows 上的 .vhdx 文件大小依然不会变。

你需要手动"脱水":

彻底关闭所有 WSL 实例:

在 PowerShell 执行:wsl --shutdown

进入磁盘管理工具:

输入 diskpart 并回车。

在弹出的窗口中依次输入:

bash 复制代码
# 这里的路径换成你 E 盘中 docker-desktop-data 的那个 vhdx 路径
select vdisk file="E:\Docker\data\ext4.vhdx"

# 以只读方式挂载
attach vdisk readonly

# 开始压缩(这一步可能需要几分钟,取决于文件大小)
compact vdisk

# 卸载
detach vdisk
exit

效果立竿见影。

  1. 迁移后的"后遗症"检查
    既然你刚迁移完,别忘了检查这个关键点:

默认用户检查: 如果你发现进去变成了 root 用户(看不到你之前的代码文件夹了),请在 Ubuntu 终端执行:

bash 复制代码
sudo nano /etc/wsl.conf
加入以下内容:

Ini, TOML
[user]
default=你的用户名

然后重启 WSL 即可找回你的身份。

3. 压缩虚拟磁盘空间 (瘦身)

WSL 的磁盘文件(ext4.vhdx)有一个特性:只会增大,不会自动缩小。即使你在 Linux 里删除了文件,Windows 上的磁盘占用也不会释放。

如果你最近删除了很多东西,可以手动压缩:

关闭 WSL:wsl --shutdown

搜索并运行 Windows 自带的 diskpart 工具。

按顺序输入以下命令:

select vdisk file="C:\Users\你的用户名\AppData\Local\Packages...\ext4.vhdx" (具体路径可以在资源管理器搜 ext4.vhdx)

attach vdisk readonly

compact vdisk

detach vdisk

4. 日常清理建议

作为一个开发者,你可能产生了不少缓存,可以运行以下命令释放一些零散空间:

清理 Docker 缓存 (如果你在用):docker system prune -a

清理 Linux 包管理缓存: sudo apt clean

清理 Maven 仓库: 检查 ~/.m2/repository 是否堆积了过期的依赖。

相关推荐
哥不是小萝莉8 小时前
AI 应用落地:原理、架构与工程实践
ai
Better Bench8 小时前
WSL2 Ubuntu 中 Claude CLI “command not found” 故障排查与修复
linux·ubuntu·claude·wsl·claudecode
_itgo9 小时前
LangGraph 主要3 种核心模式
ai·langchain·langgraph
Muscleheng11 小时前
SpringBoot 集成 DeepSeek 实现 RAG 文档问答
java·spring boot·ai·springai
ddshub_cc13 小时前
2026 AI API 定价对比:GPT-5.6 vs Claude Fable 5 vs Opus 5,哪款模型最划算?
人工智能·gpt·ai·chatgpt
wang_yb15 小时前
用方差阈值过滤掉“惰性特征”
python·ai·databook
阿沐沐,18 小时前
Codex CLI 沙箱与审批配置:从 workspace-write 扩展可写目录和命令网络权限
gpt·ai·chatgpt·ai编程
郝同学今天有进步吗19 小时前
构建 LangGraph Code Review Agent(七):实现规则匹配、Finding Guardrails 与 Markdown 报告
python·ai·fastapi·code review
xuhe219 小时前
一劳永逸!解决 AutoDL 系统盘(30GB)爆满与 pip 缓存迁移
linux·python·ai·jupyter
清泓y20 小时前
深度学习算法
算法·ai·语言模型·面试