如何在使用 wsl2 时调查 ext4.vhdx 文件并查看其中的内容

如何在使用 wsl2 时调查 ext4.vhdx 文件并查看其中的内容

目前我正在使用 wsl2,我注意到 ext4.vhdx 需要大量磁盘空间,我知道它是 Ubuntu 的文件管理系统,但我不太了解里面有什么,所以我想查看里面并删除所有不必要的文件,我该怎么做?我知道 wsl2 不会将使用的磁盘空间释放回主机系统(我正在使用 Windows 10),所以这就是为什么我想看看 ubuntu 占用了多少磁盘存储空间。

答案1

@thomas-ward 的回答是正确的,但在我看来,你的问题中还有一个额外的“问题”需要回答。

首先,重新表述另一个答案,ext4.vhdx只需运行 WSL 并查看文件,您就可以最轻松地查看全部内容。例如:

sudo find / -xdev | less

这将找到ext4以 root 身份挂载的文件系统上的所有文件 ( /),但不会找到挂载的 NTFS/Windows 驱动器上的任何文件(-xdev不包括其他文件系统)。

您还可以使用以下命令查看这些文件正在使用的存储:

sudo du -hdx

如果该数量与文件大小不同ext4.vhdx,那么是的,正如您已经怀疑的那样,您可能有未回收的空间。正如您在问题中提到的,WSL 将生长该文件将根据需要保存,但不会自动收缩当文件被删除时。

要手动缩小文件,您可以按照我在这个超级用户的回答。这是其中之一,从引用的 Github 评论中复制而来:

wsl --shutdown
# At this point, it is recommended that you back up your ext.vhdx and delete the backup once you have confirmed the other commands are successful.
diskpart
# open window Diskpart
select vdisk file="C:\WSL-Distros\…\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit

注意:另一种vhdx直接访问的方式是在 Hyper-V 上启动一个新的基于 Linux 的 VM,并将该虚拟驱动器(或其副本)添加到实例。无法在 Windows 中直接检查它,因为 Windows 不理解 ext4 文件系统。

答案2

不建议在 Windows 上直接检查 VHDX,因为它包含ext4文件系统。

本质上,VHDX 包含的是整个 Ubuntu 操作系统,以及您在 WSL 中安装的任何其他文件/程序/库/等。它是 WSL2 通过虚拟化用于运行 Ubuntu WSL 环境的整个系统“硬盘”。基本上,您可以在 WSL 中导航并查看的任何文件(/usr/lib/...例如)都是 VHDX 中的内容。

相关内容