我在 Server 2012 R2 Hyper-V 服务器上有一个 ubuntu 16.04 VM。
VHDX(动态扩展 VHD)大小为 1.8TB,但内部的 VM 报告仅使用了 3% 的磁盘。
我不明白为什么 HV 认为磁盘已满。这与什么有关?
答案1
虚拟磁盘模拟您为其设置的任何大小,这也是客户机将报告的大小。
如果备份的物理存储已满,则必须停止写入,否则肯定会损坏。由于删除文件或其他写入“可用”空间,客户文件系统的使用并不一定表明这种情况何时发生。这是一个典型的稀疏文件或精简配置问题。
答案2
以下是我尝试过的方法,但半成功:
https://helgeklein.com/blog/2016/11/faster-trimming-compacting-hyper-v-ubuntu-vms/
sudo fstrim -v / -> On the VM
gci -File -Filter *.vhd* -Path D:\VMs -Recurse | % {Mount-VHD $_.FullName -ReadOnly; Optimize-VHD $_.FullName -Mode full; Dismount-VHD $_.FullName} --> On the HV Host
VHDX 大小减少了约 1.5 TB,这很棒。但我不能让这种情况一直发生,有几台服务器有相同/相似的工作,但我没有在其中任何一台上看到这种行为。稍后会更新。
答案3
逻辑?
- 它曾经满了并且内容被删除了。
- 操作系统总是分配新的块(写时复制策略),从而增加了 VHDX 的大小。
- 有人在虚拟机中运行了一些清理工具,随机覆盖了整个磁盘
像这样的东西。
Hyper-V 并不认为磁盘已满。它会在写入新块时分配它们 - 然后就不再关心它们了。从逻辑上讲,这与实际跟踪磁盘是否已满只有一丁点区别。