Hyper-V 虚拟磁盘文件的压缩与空间释放

浅辰酱_4454

浅辰酱_4454

2026-06-23

499人浏览

原创

hyper-v linux虚拟磁盘vhdx删除文件后空间不释放,需linux侧执行fstrim或zerofree触发trim/零填充,再关机后用powershell optimize-vhd或diskpart compact压缩,禁用快照且不可用图形界面压缩。

hyper-v 虚拟磁盘(vhdx)文件在 linux 虚拟机中删除文件后,实际占用的物理空间并不会自动释放——因为文件系统只是标记空间为“可用”,并未向底层 hyper-v 通知可回收。直接在 hyper-v 管理器里点“压缩”往往无效,必须配合 linux 侧的主动清理操作才能真正缩小 vhdx 文件体积。

Linux 侧:触发空间回收的关键步骤

核心是让文件系统向虚拟磁盘层发出 TRIM/UNMAP 指令,或用零填充方式显式清空已释放区域。

  • fstrim 是首选方法:适用于启用 TRIM 支持的 VHDX(需在创建时勾选“启用 TRIM 支持”,且虚拟机配置中启用了 SCSI 控制器)。运行 sudo fstrim -av,反复执行直到返回 0 B trimmed,说明所有可回收块已通知到位。
  • zerofree 用于不支持 TRIM 的场景:比如使用 IDE 控制器、或旧版 CentOS 6/7 未启用 discard。需先将目标分区(如 /dev/sda1 或 LVM 逻辑卷)以只读方式挂载,再执行 zerofree /dev/xxx。注意:不能对已挂载为读写状态的根分区直接 zerofree,否则会失败。
  • 临时禁用开机自启服务与进程占用:避免 umount 失败。可通过修改 /etc/fstab 将待处理分区设为 ro,重启后执行清理;或用 lsof +D /mount/point 查找并终止占用进程。

Windows 侧:真正起效的压缩操作

Linux 侧做完清理后,必须关机(不是重启),再在宿主机上执行压缩,否则无任何效果。

Favird
Favird

一款AI工具,主要用于极其棒且有价值的互联网资源目录!,适合需要提升相关任务效率的用户。

下载
  • PowerShell 命令最可靠:以管理员身份运行 PowerShell,执行:
    Optimize-VHD -Path "D:\VMs\centos.vhdx" -Mode Full
    或兼容性更强的旧命令:
    diskpart → select vdisk file="D:\VMs\centos.vhdx" → compact vdisk
  • Hyper-V 管理器“编辑-压缩”仅限动态扩展 VHDX 且无快照:该操作本质调用的是 Compact 接口,但对 Linux 虚拟机常无响应。若看到进度条走完但文件大小不变,说明 Linux 侧未完成 TRIM 或零填充。
  • 务必确认无检查点(快照):存在快照时,Hyper-V 会锁定底层 VHDX,压缩操作被禁用。需提前全部删除检查点,再合并差分链。

常见误区与避坑提醒

很多操作看似合理,实则无效甚至有害。

  • 不要在磁盘管理工具中“压缩卷”:这是 Windows 主机上的 NTFS 分区收缩,和虚拟机内部磁盘无关,对 VHDX 文件大小毫无影响。
  • 碎片整理没有帮助:Linux 下 fsck 或 e4defrag 对空间回收无作用;反而可能打乱空闲块分布,降低后续 TRIM 效率。
  • 图形界面压缩 ≠ 实际压缩:Hyper-V 管理器里“设置→硬盘驱动器→编辑→压缩”按钮,在 Linux 虚拟机上经常静默失败。建议统一改用 PowerShell 命令,并检查返回结果。
  • 固定大小 VHDX 无法压缩:它的文件尺寸恒定,无论内部是否为空。如需压缩空间,请先转换为动态扩展格式(Convert-VHD),再执行上述流程。

验证与收尾

压缩完成后,用 Get-ChildItem "D:\VMs\centos.vhdx" | Select-Object Length 查看文件大小变化;进虚拟机用 df -h 确认文件系统使用率未异常升高。若空间未明显减少,大概率是 Linux 侧 fstrim 未跑满、或分区未正确挂载为支持 discard 的模式(如 ext4 需挂载参数 discard 或定期手动 trim)。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

900

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2732

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

916

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

809

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

414

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2476

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4572

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

747

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习