如何减小 WSL rootfs 的大小?

如何减小 WSL rootfs 的大小?

我正在使用 WSL 1。由于挂载的磁盘驱动器 ( ) 中的重复数据,我的驱动器C:/Users/USERNAME/AppData/Local/Packages/CanonicalGroupLimited.UbuntuonWindows.../LocalState/rootfs/上的 WSL Ubuntu 18.04 rootfs ( ) 大小非常大。我想删除重复的数据,而不会影响驱动器上的数据,也不会对我的 WSL 设置产生不利影响。理想情况下,我还想避免将来将数据复制到驱动器中,这样就不会给 SSD 带来额外的压力。C:M:M:C:

在此处输入图片描述

我曾尝试使用 从 WSL 内部卸载驱动器sudo umount /mnt/m,但它并没有减少驱动C:器上 rootfs 的大小。我害怕删除数据,因为强烈建议不要从 Windows 修改该 rootfs 中的任何内容,而且我不想弄乱 WSL 映像或驱动器上的数据M:

答案1

/mnt/<DRIVE_LETTER>/*TL;DR:您可以在 WSL 实例中卸载底层磁盘后,通过从 WSL rootfs 中删除来安全地减小 WSL 实例的 rootfs 的大小。就我而言,我的 WSL 实例M:中存储了大量来自 Windows 驱动器的缓存数据/mnt/m。我通过以下方式在 WSL 实例中安全地清理了它:

sudo umount /mnt/m
rm -rf /mnt/m/*

如果您比较谨慎,请先mount在 WSL 实例中使用来验证要清理的驱动器。然后在运行卸载命令 ( sudo unmount /mnt/<DRIVE_LETTER>) 后,mount再次运行并验证驱动器是否不再出现在列表中。然后,您可以安全地继续rm -rf在 WSL 实例中使用文件来擦除缓存数据,而不会影响底层 Windows 磁盘上的数据。

---- 我的发现 ----

看起来 WSL 1 使用该 rootfs 文件夹作为数据缓存。我注意到M:在 WSL 中卸载驱动器后sudo umount /mnt/m,某些文件夹的权限发生了变化,而其他文件夹的权限没有变化(请注意下图中的颜色差异,该图像是在卸载后拍摄的)。权限没有变化的文件夹是占用该文件夹中/mnt/mWindows 驱动器空间的文件夹。C:rootfs

卸载后 /mnt/m 的列表

我的 Dropbox 文件夹占用了我的C:驱动器上的 11 GB,但占用了驱动器上的更多空间M:。由于我知道它已经在 Dropbox 的服务器上备份了,因此我使用/mnt/m以下命令从 WSL 1 中将其擦除(从 WSL 内部卸载后):rm -rf /mnt/m/Dropbox然后使用 WinDirStat 从 Windows 检查并确认我的C:驱动器获得了 11 GB 的可用空间,而M:驱动器的 Dropbox 文件夹不受影响。我关闭了 WSL 窗口并重新打开它以触发驱动器的自动挂载。然后检查,/mnt/m/Dropbox它又出现了,所有内容都在那里。我卸载/mnt/m并继续使用以下命令从 WSL 中删除所有内容:rm -rf /mnt/m/*。我再次仔细检查了我的 M 盘 - 所有文件仍然在那里。然后我通过退出并重新启动 WSL 仔细检查了它的行为。ls -la /mnt/m显示所有内容仍然在那里。现在我在 C 盘上的根文件非常小……太棒了!

windirstat 列表显示 /mnt/m 使用的空间为零

相关内容