我正在运行带有 Windows 终端的 Windows Subsystem for Linux (WSL2),目前我已经下载了“Windows 上的 Ubuntu“来自 Microsoft Store。当我运行“Windows 上的 Ubuntu”应用程序时,我会在终端中看到我的所有 Ubuntu 目录。
然而,据我了解此 Ubuntu 论坛帖子,不应使用此应用程序。相反,可以使用“Ubuntu”Microsoft 商店应用程序来运行 WSL。
目前,Windows 上的 Ubuntu 占用了大约 40GB 的硬盘空间。我的问题是,更改为“Ubuntu”应用程序会占用更少的磁盘空间吗?如果会,有人能帮我从“Windows 上的 Ubuntu”移动到“Ubuntu”而不丢失任何数据吗?
输出wsl -l -v
$ wsl.exe -l -v
NAME STATE VERSION
* Ubuntu Running 2
docker-desktop Stopped 2
docker-desktop-data Stopped 2
输出df -h /
$ df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/sdc 251G 27G 213G 11% /
答案1
更改为“Ubuntu”应用程序是否会占用更少的磁盘空间?
让我们先解决主要问题——不是的。更改你安装的应用程序本身没有任何直接的对磁盘空间的影响。
间接?可能吧。但这只是因为备份和恢复 WSL 发行版有“压缩”它的副作用。
为什么 WSL 上的 Ubuntu 占用这么多空间?
包含 Ubuntu 的 WSL2 虚拟磁盘映像是动态的Hyper-V 虚拟磁盘。这里的“动态”意味着它一开始是一个接近 0 字节的文件,随着您向其中添加数据而增长。到目前为止,WSL 的所有 Ubuntu 映像都是基于 Ubuntu Server,安装后占用大约 1GB 的磁盘空间。
例如,我刚刚删除了我的 Ubuntu-22.04 发行版,然后在 PowerShell 中重新运行:
ubuntu2204.exe
在它要求输入我的用户名和密码后,生成的图像大小为 1.1GB。
然后,经过基本操作sudo apt update && sudo apt upgrade -y
(无论如何,在 WSL 上安装 Ubuntu 后你应该做的第一件事),发行版现在占用约 1.7GB。请注意,我使用的是此 PowerShell 脚本获取 VHDX 大小,但您也可以使用文件资源管理器来查找ext4.vhdx
文件并观察其大小。
假设此时我在 Ubuntu 上安装了 Nix 包管理器,其中包含一些我喜欢的常用包。突然间,磁盘大小跳升至约 3.8GB。哎呀!(其实不是,但可以说这对我来说太多了)。所以我删除了所有/nix
。
但现在我的磁盘映像仍为 3.8GB。为什么它没有回到约 1.6GB?
答案是,虽然动态的虚拟磁盘会随着新文件的增长而增大,但它不会自动收缩当这些文件被删除时。
您可以使用以下命令大致(但不准确)了解 Ubuntu 应占用多少空间:
df -h /
如果您发现您在 Ubuntu 中确实使用了 40GB 的文件(这完全有可能),那么除了卸载或删除项目之外您实际上没有什么可以做的。
但是,如果你遇到ext4.vhd
虚拟磁盘的大小与你在 Ubuntu 中实际使用的大小之间存在很大差异的情况,那么你可以按照这个答案有关如何缩小虚拟磁盘的一些指导。
“Windows 上的 Ubuntu”与“Ubuntu”
据我所知...不应该使用此应用程序。相反,可以使用“Ubuntu”Microsoft 商店应用程序来运行 WSL。
不是。一旦你有已安装Ubuntu 的任何 Store 版本,Store 应用实际上都不再“有用”。这很令人困惑,但也值得一读这个答案了解更多详情。Canonical 开发人员在该帖子中指出,他们已“重命名”该应用程序以避免混淆。您在安装时它的名称不同,这完全正常,不需要“修复”。
Store 应用程序的唯一目的是:
- 询问您的初始用户名和密码
- 将 Ubuntu 的“模板”(rootfs)复制到
ext4.vhdx
- 首次运行发行版
将来,当您运行ubuntu.exe
或ubuntu2004.exe
(这可能是您的“开始”菜单项指向的)时,它会检测到它已经安装并直接跳过前两个步骤。
无论你运行的是 Ubuntu、Windows 上的 Ubuntu、Ubuntu 22.04、Ubuntu 20.04 等(至少在某个时候,微软商店中都有所有选项),最终的结果都是你正在运行你的安装的发行版是从Microsoft Store 模板。
商店中最新发布的 Ubuntu 应用程序甚至允许您卸载应用程序,离开你的Ubuntu分配完好无损。但是,我不知道您使用的版本是否足够新,因此我不推荐这样做。无论如何,“模板”文件仅占用大约 800MB 左右,因此只有在磁盘空间非常紧张时才值得担心。