解决使用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 是否堆积了过期的依赖。

相关推荐
夜阑卧听风吹雨,铁马冰河入梦来2 小时前
字节Midscene 与智谱 AutoGLM-Phone 工具对比
ai·自动化
von Neumann2 小时前
OpenClaw从入门到应用——安装:更新OpenClaw
程序员创富·变现·赚钱·盈利·openclaw·龙虾
爱喝白开水a2 小时前
春节后普通程序员如何“丝滑”跨行AI:不啃算法,也能拿走AI
java·人工智能·算法·spring·ai·前端框架·大模型
beyond阿亮3 小时前
OpenClaw在Windows上接入飞书完整指南
人工智能·windows·ai·openclaw
STKingA13 小时前
Win11 WSL2+Ubuntu开发环境配置全攻略
linux·运维·ubuntu
二十雨辰3 小时前
[RAG]-智能体开发
人工智能·ai
m0_651593913 小时前
WSL2固定Nacos IP访问Win10服务
wsl2·openclaw
Agent产品评测局3 小时前
企业自动化项目,如何做好内部推广与员工培训?——企业级智能体落地与人才赋能实测指南
运维·人工智能·ai·chatgpt·自动化
量子炒饭大师4 小时前
【OpenClaw修炼宝典】—— 【macOS安装篇】想玩《爪子船长》复刻版却卡在安装?OpenClaw 从零环境搭建与编译全攻略 (小白避坑指南)
macos·openclaw·小龙虾·龙虾