我应该将什么磁盘映像与 VirtualBox、VDI、VMDK、VHD 或 HDD 一起使用?

sor*_*rin 364 virtualbox disk-image

最新版本的 VirtualBox 支持多种虚拟磁盘格式,但他们忘记提供它们之间的比较。

  • VDI
  • 虚拟机开发工具包
  • 虚拟硬盘
  • 硬盘

现在,我对考虑以下内容的建议或比较感兴趣:

  • 能够使用动态调整大小
  • 可以有快照
  • 能够以最少的努力将我的虚拟机移动到另一个操作系统,甚至是另一个免费的虚拟化解决方案(可能在 Ubuntu 上运行良好)。
  • 表现

Del*_*tik 262

VirtualBox 有

  • 全力支持
    • VDI
    • 虚拟机开发工具包
    • 虚拟硬盘
  • 部分支持
    • 硬盘(仅限 Parallels 版本 2)
  • 无证支持
    • QCOW
    • QED

来源:Oracle® VM VirtualBox® 用户手册»第 5 章虚拟存储» 5.2。磁盘映像文件(VDI、VMDK、VHD、HDD)

创建虚拟硬盘的屏幕截图


回答您的考虑

  • 能够使用动态调整大小

VDIVMDKVHD都支持动态分配的存储。VMDK 具有将存储文件拆分为每个小于 2 GB 的文件的附加功能,这在文件系统的文件大小限制较小时非常有用。

如果在 VirtualBox 中创建HDDQCOWQED,则必须动态分配。

  • 可以有快照

VirtualBox 支持所有六种格式的快照。

  • 能够以最少的努力将我的虚拟机移动到另一个操作系统,甚至是另一个免费的虚拟化解决方案(可能在 Ubuntu 上运行良好)。

VDI是 VirtualBox 的原生格式。其他虚拟化软件通常不支持 VDI,但从 VDI 转换为另一种格式非常容易,尤其是使用qemu-img convert.

VMDK由 VMWare 开发并为 VMWare 开发,但 VirtualBox 和 QEMU(另一种常见的虚拟化软件)也支持它。 这种格式可能是您的最佳选择,因为您希望与其他虚拟化软件具有广泛的兼容性。

VHD是 Microsoft Virtual PC 的原生格式。Windows Server 2012 引入了 VHDX 作为 VHD 的继承者,但 VirtualBox 不支持 VHDX。

HDDParallels 的一种格式。Parallels 专注于 macOS 的虚拟化。 这可能不适合您,尤其是考虑到 VirtualBox 仅支持旧版本的 HDD 格式。

QCOW是 qcow 格式的旧原始版本。它已被 VirtualBox 不支持的 qcow2 取代。

QED是对 qcow2 的一个废弃增强。 QEMU 建议不要使用 QED。

  • 表现

由于块存储是如何被格式抽象的,每种格式可能具有细微的性能特征,但我没有找到任何比较 VirtualBox 支持的格式的基准。

影响性能的因素有很多,例如:

  • 您的物理设备限制(在硬盘驱动器上比在固态驱动器上更明显……为什么?
  • 扩展动态分配的虚拟磁盘驱动器(随着虚拟磁盘的扩展,写入操作会变慢,但是一旦它足够大,扩展就会减少)
  • 虚拟化技术(硬件 vs. 软件;硬件虚拟化有助于 VirtualBox 并提高虚拟操作系统的速度)
  • 您正在运行虚拟操作系统的事实。由于虚拟化开销,性能总是比在主机上运行操作系统慢。

  • +1 我要补充一点,VMDK 似乎提供了我一直在寻找的增量备份方面的灵丹妙药:我不再*必须* 为来宾中的单个位更改备份巨大的整体 VDI。 (22认同)
  • VHD 可以作为 Windows 磁盘管理中的驱动器安装,这对于 VDI 来说似乎并不简单:http://superuser.com/q/342334/13889 (7认同)
  • @msanford 您能否详细说明 VMDK 如何避免备份庞大的文件 - rsync 是否能够更好地找出差异?VMDK 文件似乎在每次调整时都会发生变化。 (6认同)
  • @Deltik:不必以root身份运行,只需以对原始磁盘文件具有写访问权限的用户身份运行即可。在我的系统上,磁盘块设备由 root/disk 所有,因此将您的用户放入磁盘组就足够了。 (2认同)

小智 44

我总是使用 VDI,因为它是 VirtualBox 的原生格式;但是,使用 VMDK(VMWare 格式)会增加与其他虚拟机软件的兼容性。

VirtualBox 将在 Ubuntu 上运行良好,因此如果目标是 Windows/Ubuntu 互操作性,VDI 将是一个非常有效的选择。

这两种格式都可以满足您的要求。

至于另外两种,VHD是微软开发的格式,HDD是苹果开发的格式;这些都是专有许可的,因此限制跨平台支持;我不会推荐他们。


小智 19

Mpack 在这里解释了 VHD 和 VDI 之间的关键性能差异:

最近研究了 VHD 格式后,我预计 VDI 的支持度至少会有很小的差异,当您比较同类时最明显,即优化的 VDI 与优化的 VHD。原因是动态 VHD 格式将这些“位图”扇区分散在整个磁盘中。每次修改块内的扇区时,这些位图块也可能需要更新和写入,涉及额外的查找、读取和写入。从驱动器映像读取连续簇时,也必须跳过这些位图扇区 - 更多搜索。VDI 格式没有这些开销,特别是如果 VDI 已经过优化(虚拟磁盘上的块按 LBA 顺序排序)。

我的所有评论都适用于动态 VHD 格式与动态 VDI。在固定大小的虚拟磁盘上进行性能测试是没有意义的,因为两种格式都是相同的(只是磁盘的普通映像),它们只是具有不同的标头。

https://forums.virtualbox.org/viewtopic.php?f=1&t=22688


Own*_*gic 6

看起来使用 VDI 可以将磁盘文件修剪为其实际大小 VirtualBox 和 SSD 的 TRIM 命令支持

  • @Seth 一般概述是由以前的答案提供的,我没有足够的代表来评论,但提及这个事实仍然很重要 (4认同)

小智 5

我不知道使用 vmdk 是否能让您在 VMware 中透明地运行在 VirtualBox 中创建的虚拟机。它可能。然而,更通用的选择可能是使用 VirtualBox 文件/导出功能创建一个“开放虚拟化设备”.ova 文件,然后可以将其导入 VMware。使用这种方法,您可以移植到任何支持 .ova 的虚拟化系统,而无需关心您在 VirtualBox 中使用的磁盘映像格式。

如果您需要定期(例如每天)从同一个 VM 导出,那可能会很痛苦。但是,如果您只是偶尔转向不同的技术,那应该没问题。

如果您已经有一个 .vdi 文件,您可以测试它是否有效,而无需创建新的虚拟机。将其导出为 .ova,然后尝试使用 vmware 导入。


use*_*818 5

这也取决于您计划如何使用虚拟磁盘。并非每个 VM 都希望在单个磁盘上有一个分区。

VDI 似乎有更多选择(当与 VirtualBox 一起使用时),但是一旦您将 VirtualBox 排除在外,对 VDI 的支持就变得有些不稳定(截至 2014 年底)。

例如,我的解决方案需要最大程度的跨平台支持。在 linux 或 Windows 7 上安装 VDI(例如环回设备)比您想象的更困难和错误。几乎就像 VDI 有太多功能一样,很难制作完全符合要求的实用程序来操作它。

当您希望 VMDK 与任何工作站上的任何 VM 一起使用时,当您希望同时将其克隆 3 次到网络上的其他系统时,以及当您想在不启动 VM 的情况下撬开它时,VMDK 就不会那么轻松,恕我直言实例。

尽管我 90% 的时间都在使用 VirtualBox,但在某些工作流中我的磁盘变得无法访问的那几次,这让我倾向于将 VMDK 用于可插拔/共享文件系统。


小智 5

对我来说,使用 vmdk 的一个很好的理由是,随着时间的推移,使用 VDI 格式的 Virtualbox(至少在 v4.1 之前)倾向于填满分配的磁盘空间,尽管内部虚拟磁盘使用量仍然少得多。对于使用 vmdk 磁盘的 Virtualbox,这似乎不是什么问题。

但我说的是多年的正常运行时间。这可能不是很多人遇到的问题。

  • 它与来宾文件系统的碎片比与格式本身更相关。 (3认同)

小智 5

磁盘映像文件驻留在主机系统上,来宾系统将其视为具有特定几何形状的硬盘。当客户操作系统读取或写入硬盘时,VirtualBox 会将请求重定向到映像文件。

与物理磁盘一样,虚拟磁盘也有大小(容量),必须在创建映像文件时指定。然而,与物理磁盘相反,VirtualBox 允许您在创建后扩展图像文件,即使它已经有数据;VirtualBox 支持四种不同的磁盘映像文件:

VDI:通常,VirtualBox 为来宾硬盘使用自己的容器格式——虚拟磁盘映像 (VDI) 文件。特别是,当您使用新磁盘创建新虚拟机时,将使用此格式。

VMDK:VirtualBox 还完全支持许多其他虚拟化产品(尤其是 VMware)使用的流行且开放的 VMDK 容器格式。 [25]

VHD:VirtualBox 也完全支持微软使用的 VHD 格式。

还支持 Parallels 版本 2(HDD 格式)的图像文件。[26] 由于缺乏格式文档,不支持较新的格式(3 和 4)。但是,您可以使用 Parallels 提供的工具将此类图像文件转换为版本 2 格式。

  • 这个答案来自 VirtualBox 手册的第 5 章。[链接](https://www.virtualbox.org/manual/ch05.html#vdidetails) (3认同)