VMDK 薄/厚磁盘存在非常奇怪的问题

VMDK 薄/厚磁盘存在非常奇怪的问题

我有一些 ESXi (4.1) 虚拟机,它们最初是使用精简配置磁盘创建的,但后来物理移动到不同的数据存储区(所有数据存储区都是 iSCSI);由于这些是独立主机,因此没有可用的 vCenter Server 来管理它们,因此操作是使用命令从 ESXi 命令行完成的mv

现在虚拟机表现出相当有趣的行为:虚拟机设置中的磁盘格式显示为“厚”,VMDK 文件不要有该ddb.thinProvisioned = "1"行,但实际文件大小远小于虚拟磁盘大小。通过数据存储浏览器检查时,它会显示两个不同的列“大小”和“已配置大小”,就像精简配置磁盘一样。

然而,这似乎不是一个问题,因为机器运转良好。

然后,对它们进行另一份复制以用于备份;此复制也是通过命令行使用命令cp在同一主机上的两个数据存储之间进行的(同样,它们都是 iSCSI)。

然后我们丢失了原始的虚拟机,需要备份的虚拟机。

这些都不再起作用,抱怨 VMDK 文件损坏。

总结一下:

  • 使用精简配置磁盘创建的虚拟机 -> 正在运行
  • VM 在两个数据存储之间物理移动 -> 磁盘显示为厚磁盘,但行为却为薄磁盘,而 VM 运行正常
  • 在两个数据存储之间物理复制的虚拟机 -> 磁盘行为相同,虚拟机不再工作

我尝试手动编辑 VMDK 文件以添加该ddb.thinProvisioned = "1"行,但这并没有解决问题。我尝试扩充虚拟磁盘、克隆它并转换它:没有任何效果,每个命令都抱怨磁盘已损坏。

我很难再次启动这些虚拟机;有人可以帮忙吗?

答案1

看起来物理复制精简配置的磁盘是馊主意。VMFS 使用精简配置的磁盘时会出现奇怪的现象,这些现象是cp无法mv处理的。随后会出现损坏。

不要这样做。vmkfstools处理它们会更好(也更安全)。

答案2

我怀疑您的存储是 VMFS 数据存储而不是 NFS?

您可以尝试将有问题的 vmdk 下载/复制到安全的地方,然后在那里使用 vmware-vdiskmanager 或 vmware-mount 开始处理它 - 它们都是 VMWare Server/Workstation 的一部分,也可以作为独立下载 IIRC 提供。

如果一切都失败了,请尝试使用第三方工具 -qemu-imgQEMU 包或VirtualBox等工具VBoxManage clonehd可以将 vmdk 转换为原始文件然后您可以简单地将其添加回您的 ESX 客户机。

还有称为“vdk”的替代磁盘驱动程序对于 Windows(原作者的页面似乎已关闭,但有下载旧版本64 位版本据说它可以很好地读取部分损坏的 vmdk 文件 - 尽管我还没有尝试过。

至于损坏的可能原因,我推测“cp”命令不是罪魁祸首。有很多方法可以损坏数据 - 使用不支持/实现的 iSCSI 目标SCSI 预留就是其中之一。无论如何,我认为复制过程的最佳记录方式是使用虚拟机工具- 你应该坚持这一点。

相关内容