ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

优化解决Windows的Linux子系统WSL中的虚拟硬盘文件VHDX空间占用问题

优化解决Windows的Linux子系统WSL中的虚拟硬盘文件VHDX空间占用问题 前言在使用Windows Subsystem for Linux (WSL) 的过程中会遇到一个问题随着时间的推移VHDX 文件会不断增大即使已经删除了大量的文件。这是因为文件系统在删除文件后并不会立即释放这些空间而是标记这些块为可回收等待回收机制来清理它们。问题描述在使用Windows的Linux子系统时遇到了一个Ubuntu的WSL实例经过一段时间的使用发现这个VHDX文件的体积已经变得非常大甚至超过了实际使用的容量磁盘已经变红发出了警告。同时也有通过Windows的文件管理器访问\\wsl.localhost\Ubuntu\root进行了相关清理操作但是Windows的磁盘空间不曾减少问题分析Linux子系统有更改存储路径存储在D:\VM\Ubuntu\ext4.vhdx文件中可以明显发现这个文件大小非常巨大它就是磁盘变红告警的罪魁祸首文件系统特性:ext4是一个 Linux 原生的文件系统而 Windows 并不直接支持它。Windows子系统 (WSL) 使用一个虚拟硬盘文件 (VHDX) 来模拟 Linux 环境。空间回收问题:当在WSL中删除文件时这些文件在Linux环境中被标记为已删除但实际上数据仍然存在于VHDX文件中。Windows并不知道这些文件已经被删除所以VHDX文件的大小不会自动缩小。文件系统和磁盘映像的差异:文件系统删除文件时它只是移除了文件的引用但数据块可能仍然保留。 VHDX是一个磁盘映像它不会自动调整大小来反映文件系统的变化。解决方案1.标记回收启动WSL的实例如Ubuntu子系统使用fstrim命令来通知文件系统哪些块是可以回收的以root权限运行以下命令sudofstrim /2.关闭所有Linux子系统wsl--shutdown3.压缩VHDX可以使用Windows自带的磁盘管理工具Optimize-VHD进行手动压缩VHDX以管理员权限打开PowerShell执行以下命令Optimize-VHD-PathD:\VM\Ubuntu\ext4.vhdx-ModeFull执行上述命令后可以在PowerShell中看到如下类似的磁盘空间压缩进度条当压缩完毕后可以发现ext4.vhdx虚拟硬盘文件空间将大幅减小注意如果遇到如下异常PS C:\Users\AdministratorOptimize-VHD-PathD:\VM\Ubuntu\ext4.vhdx-ModeFull Optimize-VHD:由于找不到某个对象Hyper-V 尝试在计算机“DESKTOP-AAAAAA”上访问该对象时遇到错误。请验证该计算机上的虚 拟机管理服务是否正在运行。 所在位置 行:1 字符:1 Optimize-VHD-PathD:\VM\Ubuntu\ext4.vhdx-ModeFull ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CategoryInfo:ObjectNotFound:(:)[Optimize-VHD], VirtualizationException FullyQualifiedErrorId:ObjectNotFound,Microsoft.Vhd.PowerShell.Cmdlets.OptimizeVhd这是因为Hyper-V 虚拟机管理服务没有运行。需要先启动服务再执行 VHD 优化。Start-Service vmms
返回列表