高效地压缩Hyper-V的虚拟磁盘VHDX文件

先通过命令行进行碎片整理,再使用Hyper-V自带的磁盘压缩功能。

引言

近期发现了Hyper-V的虚拟磁盘的差异存储模式,恰逢服务器的希捷SSHD突然爆炸,准备给各个深度学习虚拟机做一个统一的父磁盘,提升响应并节省存储空间。但是无奈发现动态扩展模式下的VHDX文件体积总是不断增长——新系统打完补丁清理空间后整个C盘才不到20G,但VHDX文件却达到了25G,并且,Hyper-V自带的磁盘文件压缩(Compact)也没什么显著效果。百度一下发现类似问题都是一些蛇皮操作(先减小C盘空间?再扩充回去?)。

翻墙搜索后发现,Compact前建议对VHDX进行碎片整理。只是资源管理器的GUI中虚拟驱动器偏偏是没有碎片整理选项的(蛇皮设定),因此需要通过命令行操作


流程

在虚拟机中,可以看到磁盘总共只占用了不过35.5GB

对应的VHDX文件则已经达到了46.3GB

先关闭虚拟机,在宿主机上挂载该VHDX文件,我的是到F盘,然后启动命令行,运行

defrag F: /H /U /V

开始碎片整理,结束时可以看到如下提示

弹出驱动器F:,接下来可以使用Hyper-V自带的工具进行磁盘压缩

一直下一步,选择VHDX文件,选择压缩,完成

最后得到的VHDX文件大小基本上就是已占用空间的大小,这里多出的1GB还包括磁盘上ESP、MSR分区上的内容。压缩后的空间利用率就非常高了。

 

称谓(*)
邮箱
留言(*)