![Hyper-V VHDx 压缩和大小调整问题 - 无最小尺寸,无法缩小](https://linux22.com/image/662111/Hyper-V%20VHDx%20%E5%8E%8B%E7%BC%A9%E5%92%8C%E5%A4%A7%E5%B0%8F%E8%B0%83%E6%95%B4%E9%97%AE%E9%A2%98%20-%20%E6%97%A0%E6%9C%80%E5%B0%8F%E5%B0%BA%E5%AF%B8%EF%BC%8C%E6%97%A0%E6%B3%95%E7%BC%A9%E5%B0%8F.png)
尝试从 VHDx 总文件大小中恢复约 450GB 的未分配空间。感谢您查看此问题:
- Hyper-V 服务器 2012。
- 动态 VHDx(我们称之为 disk2.vhdx),文件大小为 1.5 TB(最大 2 TB),不包含操作系统,未启用卷影副本。
- 在连接了 disk2.vhdx 的 VM 上,我将之前的 1.5 TB 分区缩小到 1.05 TB,释放了现在在 VM 中列为未分配的约 450GB 的空间。
- VHDx 的文件大小仍然为 1.5TB,我们需要在 Hyper-V 主机上恢复 450GB,因为它已接近容量上限。
我已采取的步骤:
- 对虚拟机上的每个驱动器进行碎片整理。
- 关闭虚拟机,使用紧凑型 GUI,任何磁盘上均无结果。
- 使用了 Powershell Optimize-VHD -mode full & quick,full 导致压缩时间更长,但最终结果是没有释放空间。
- 使用 Hyper-V 磁盘管理向导,即使在 VM 内部缩小分区后也没有缩小选项。
- 我们可以使用以下命令简单地成功挂载驱动器(磁盘在虚拟机中也能正常工作):
安装-vhd F:\disk2.vhdx
尝试挂载 VHD 来提取信息并手动调整其大小时会返回错误,指出无法“获取磁盘”,因为没有分区表或分区表已损坏:
mount-vhd F:\disk2.vhdx -passthru | 获取磁盘 | 获取分区 | 获取卷
手动调整大小对于 MinSize 和 SetBytes 都返回相同的内容:
调整大小-vhd F:\disk2.vhdx-ToMinimumSize
以下是 get-vhd 返回的内容:
ComputerName : XXXX
Path : F:\Disk2.vhdx
VhdFormat : VHDX
VhdType : Dynamic
FileSize : 1572935303168
Size : 2147483648000
MinimumSize :
LogicalSectorSize : 512
PhysicalSectorSize : 4096
BlockSize : 33554432
ParentPath :
FragmentationPercentage : 1
Alignment : 1
Attached : False
DiskNumber :
IsDeleted : False
Number :
正如您所见,没有最小尺寸。
我会尝试创建一个具有适当大小的新固定 VHDx 并迁移数据,但不幸的是我们的空间非常少,所以 1.5TB 是一个问题。有没有关于如何从 VHDx 文件大小中恢复 450GB 未分配空间以使其成为 1TB 驱动器的想法?
我还尝试将 disk2.VHDx 转换为 VHD 并使用第三方工具 VHDResizer,但它在完成到 vhd 的转换之前会占用剩余的磁盘空间。如果是 VHD,这能行得通吗?我可以考虑将 VHDx 从服务器转移到具有更多空间的服务器上以完成转换并测试 VHDResizer,我没有使用该工具的经验,所以我不确定是否值得尝试。
谢谢,感谢所有的想法。
答案1
也许您可以使用客户机中的 TRIN/UNMAP 直接从虚拟机内部缩小 VHDx 文件。
只需尝试在客户机的可用空间内重新创建一个新分区,然后对其进行格式化即可。如果所有星星都正确对齐,它将释放大量空间,并将其返回给主机操作系统。
请注意,该文件看起来与以前的大小相同,但总可用磁盘空间仍然会增加。