作者JohnsonWang (强森王)
看板MIS
标题[请益] 缩小Hyper-V的VHD动态磁碟大小?
时间Wed Nov 8 11:26:50 2017
目标:想要缩小 Hyper-V 里面使用动态扩展的 VHD 在实体硬碟中的大小
观念:缩小 VHD 档的底线就是 VHD 档内最後有记载资料的位置,譬如一颗标示容量有
120GB的 VHD 档,里面记载有资料的位置到 80GB 处,就只能重新压缩成一个实体
占用 80GB 的 VHD 档,但里面也许实际有资料的部分只有 30GB。
讨论:上述「观念」中提到的状态,若能将记载於 80GB 处的资料移动到 30GB 附近,就
可以再压缩这个 VHD 档的大小到 30GB,而不用真的在实体硬碟中占用到 80GB。
使用各类 disk defragment 的工具,都可能在过程中因为临时使用到後方的硬碟
空间,造成 VHD 档变得更加肥大而无法复原。
我试过 Windows 内建的磁碟整理工具,也下载过 UltraDefrag、Defraggler等重
组工具,都无法把存在硬碟後方的资料主动往前面移。这类软体的目标似乎仅是将
同一档案在硬碟中置放成连续空间,但并不在乎这个档案放在硬碟何处,只要没有
fragment 状态就好。就 defragment 这个动作来说,这些软体都做到了没错,而
且这样也比较省时间,但是对於想要缩小 VHD 档这个目标来说,就造成障碍。
我试过在 guest 里面进行 defragment,也试过将 guest 关机後,将此 VHD 档挂
在 host 上然後 defragment,都没有明显改善。
所以想请问大家,有没有哪一个 disk defragment 类的软体,可以做到尽量把资
料往硬碟前方堆放的目标?这样再来缩小 VHD 档就变得很可观的?或是说在我用
过的这些 defragment 软体中,其实有某些选项勾起来就是这个效果的?
自问自答:
感谢朋友Dino9021的提供,不用搞这麽复杂,在有 Hyper-V 管理工具的机器上,guest
OS 关机的情况下,执行:
mount-vhd -path xxx.vhd -readonly
optimize-vhd -path xxx.vhd -mode full
dismount-vhd -path xxx.vhd
optimize-vhd -path xxx.vhd -mode full
我对不同的 VHD 做过以上指令,发现有的 VHD 在第一次 optimieze 时就已经大幅度
缩小,第二次 optimize 时没有变化;有的是第一次大幅度缩小,第二次还可以再缩小
一点。
如果不先 mount 起来做一次,直接就 optimize 则好像没有明显效果。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.171.44.41
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MIS/M.1510111615.A.75F.html
1F:推 littleyg: 是否有尝试过Hyper-V管理员的编辑磁碟来压缩VHD? 11/08 11:44
2F:→ JohnsonWang: 1F你讲的这个就是我最後能不能缩小VHD实体空间的动作 11/08 11:48
3F:→ JohnsonWang: 这是最後一步,否则这个Hyper-V压缩VHD磁碟的功能几 11/08 11:49
4F:→ JohnsonWang: 乎会没有任何效果的。因此要先defragment 11/08 11:49
5F:→ JohnsonWang: 不管在guest或host执行defragment,都不会缩小VHD占 11/08 11:58
6F:→ JohnsonWang: 用的实体空间,相反的还会因为做defragment而快速增 11/08 11:58
7F:→ JohnsonWang: 肥VHD档。 11/08 11:59
8F:→ JohnsonWang: 要能缩减VHD档的空间就是最後要靠Hyper-V的磁碟编辑 11/08 11:59
9F:→ JohnsonWang: 功能来缩减,但是能缩多少就是我这篇在讨论的关键处 11/08 12:00
※ 编辑: JohnsonWang (1.171.44.41), 11/08/2017 15:33:13
10F:→ blackhippo: 缩硬碟一般来讲不是不建议做吗? 11/08 15:30
11F:→ JohnsonWang: 不建议的原因就是因为动态VHD会大幅度增肥 11/08 15:36
12F:→ JohnsonWang: 我已经补上自问自答,那四个指令做完很有用,真的缩 11/08 15:36
13F:→ JohnsonWang: 到这个VHD里面实际占用的容量大小,要用Powershell 11/08 15:37
14F:→ JohnsonWang: 来执行,也不用管defragment了。 11/08 15:37
15F:→ JerryBoy: 如果知道Thin vDisk的设计方式,就会知道为什麽defrag 11/08 23:01
16F:→ JerryBoy: 反而会让vDisk占用空间愈来愈大 11/08 23:01
17F:→ JohnsonWang: 我本来就知道原因,这一篇也不是讨论为什麽会变大 11/09 17:55
18F:推 ayttk: sdelete -z 看看? 11/11 11:38