我在 Windows 10 Home 上使用 WSL2。我注意到 Windows 报告我的磁盘上的 vhdx ext4 分区为 105GB。但我还将 wsl2 添加为网络驱动器 - 那里报告的大小仅为 89 GB。我已经尝试运行 diskpart 并在那里压缩 vhdx 空间,它释放了大量 GB,但我想知道我是否可以做更多的事情?这种大小差异是从哪里来的?
答案1
“压缩”操作只能删除未使用的区域磁盘级别(即 VHDX 知道虚拟磁盘的特定扇区未使用)。要实现这一点,客户操作系统必须通知(虚拟)磁盘文件系统实际上未使用哪些扇区,因为磁盘本身不了解其所持有的文件系统 - 否则,如果您删除虚拟机内价值几 GB 的文件,该空间仍将从外部视为“已占用”。
Hyper-V VHD 使用的“丢弃”机制与 SSD 的 TRIM/UNMAP 命令完全相同 - 对于 Linux,客户机需要fstrim
定期运行(例如使用 fstrim.timer)或者文件系统需要discard
指定挂载选项。
# sudo fstrim -av
/: 19.9 GiB (21382381568 bytes) trimmed on /dev/sda1