WSL 在 Windows 上使用了多少磁盘空间?

WSL 在 Windows 上使用了多少磁盘空间?

WSL 在 Windows 上使用了多少磁盘空间?

我发现你可以进入 Windows'应用程序和功能它将显示 WSL2“Ubuntu”的磁盘使用情况,但这似乎不包括WSL 遗产或者也许确实如此,因为它报告的内容似乎比我预期的要多?

答案1

从 Linux 确定磁盘使用情况

使用类似的工具ncdu可以轻松确定磁盘使用情况,并且还提供良好的 CLI 界面。

安装 ncdu

sudo apt install ncdu  

运行 ncdu

因此,我们无法获得 Windows 的所有目录,因此我们需要排除目录/mnt

sudo ncdu / --exclude /mnt

从 Windows 确定

在 Windows 下应用程序和功能它列出了Ubuntu占用1.92 GB

ncdu报告1.7 GiB(~1.82GB)这与 Windows 报告的内容非常接近。

WSL 旧版“Linux 上的 Ubuntu 上的 Bash”

我无法Bash on Ubuntu on Linux通过 Windows 找到它占用了多少空间,但我可以通过运行来查看它使用了多少空间sudo ncdu / --exclude /mnt

相关的研究

答案2

当然,随着 WSL 及其发行版的更新,这个问题的答案也会随之改变。

这也是非常很难测量任何给定 Windows 功能使用的确切磁盘空间,因为 Windows 也在不断消耗和释放磁盘空间用于其他用途。话虽如此,以下是今天在 Windows 11 上进行的一些测量:

简写:

  • WSL 功能和内核占用 100-200MB 的空间。
  • Ubuntu 发行版至少占用 1.1GB,但在第一次更新/升级时会迅速扩展到 2.7GB 左右。
  • 安装的 rootfs tarball 又占用了约 400MB,这些空间可以恢复。

笔记:

这些测量是使用 Windows 11 上发布的 WSL 版本完成的。

WSL 现已在 Microsoft Store 中提供预览版,此版本安装后将消耗更多的由于这些功能未内置于 Windows,因此磁盘空间较大。我尚未测量 WSL 的 Store/Preview 版本。

此外,这些测量是使用 WSL2 分布进行的。最初的WSL1 分布占用的大小将大于 WSL2,但是,WSL1将要当文件被删除时释放空间(与 WSL2 不同)。

细节:

  • 在安装 WSL 之前,全新安装的 Windows 11 + 更新会消耗35,584,876,544大量磁盘空间。

  • 启用 WSL 功能并重新启动后,35,587,739,648字节数有所减少。减少了约2,863,104(2.8MB)。这是意料之中的,因为该功能内置于 Windows 中,只是“启用”(不一定安装)。

    请注意,在此阶段,WSL1 已安装并可与发行版一起使用。

  • 启用虚拟机平台以启用 WSL2 会消耗额外的23,044,096字节数。但是,重新启动实际上会回收14,274,560这些字节数,净变化为8,769,536。同样,这个较小的数字可能是因为该功能随 Windows 一起提供,并且刚刚启用。

  • 下载 16.1MB 的 WSL2 内核包并重新启动后,568,856,576会消耗大量额外空间。这个数字需要特别注意,因为 Edge 是第一次启动以下载该包。几乎可以肯定,大部分额外消耗的磁盘空间来自首次激活 Edge 功能和其他副作用。

    安装后的内核本身会占用73,476,524一些字节。

  • 安装 Ubuntu 20.04wsl --install -d Ubuntu肯定是磁盘空间最大的消耗者。安装并重启后,又1,648,529,408占用了 1.6GB 空间。

    这主要有两个部分。第一个是“应用程序”本身。这包括安装的 rootfs tarball。它存储在C:\Program Files\通常禁止普通用户访问的目录中。但是,您可以使用在管理会话中运行的简单 PowerShell 单行命令来检查 WSL tarball 的大小:

    Get-ChildItem -Recurse 'C:\Program Files\WindowsApps\' | Where-Object {$_.Name -eq 'install.tar.gz' } 
    

    这表明 tarball 是452,534,052字节。从技术上讲,可以通过删除应用程序来恢复,但请注意——删除应用程序也会删除分发版。不过,可以将其解耦(通过wsl --export/ --import),然后删除“App”/tarball。

    另一部分是实际的发行版本身,在 WSL2 下可以在虚拟 HDD 的大小中看到ext4.vhdx。在运行之前任何命令,其大小vhdx为 1,173,397,504。

    之后sudo apt update && sudo apt upgrade -y,分发包的大小增加到2,701,131,776(大约 2.7GB)。请注意,显示df1,513,688k。大小的巨大变化vhdx可能是由于虚拟磁盘可以生长根据需要,但不会随着文件从其中移除而释放空间。请参阅这个问题了解详情。

  • 针对 Ubuntu 22.04 的更新:基本vhdx大小为 1.49GB。但是,由于它今天才发布,因此已经包含最新的软件包。因此,初始版本sudo apt update && sudo apt upgrade -y确实不是消耗任何额外空间。

    与 Ubuntu 20.04 相比,总体节省了约 1.2GB。同样,随着 Ubuntu 22.04 生命周期的推进,这种情况可能会发生变化。

答案3

@CTS_AE 的回答很有帮助。ncdu是一款出色的文件夹磁盘使用情况可视化工具。但是,ncdu --exclude /mnt对我不起作用ncdu / --exclude /mnt

我在 Debian(WSL2)上进行了测试,并ncdu --version显示ncdu 1.15.1

答案4

这是答案,即使现在(Windows 11)不是那么准确(我在路径中看不到“规范”): https://askubuntu.com/questions/1363015/understanding-disk-space-using-wsl2

答案在 Windows 中:%userprofile%\AppData\Local\Packages
然后搜索您的发行版,当您找到它时,右键单击它并进入属性,它将为您计算。

正如我上面评论的那样,df/du/ncdu 所说的和现实之间存在巨大差异,例如我刚刚安装的 kali,du 说它使用了 0.9G,但 Windows 文件资源管理器说的是 1.7G

相关内容