VDI
VMDK
VHD
HDD
现在,我对考虑以下因素的建议或比较感兴趣:
能够使用动态调整大小
能够具有快照
可以将我的虚拟机转移到另一个OS或另一个免费的虚拟化解决方案,而只需花费很少的精力(可能在Ubuntu上可以很好地运行)。
性能
#1 楼
VirtualBox具有全面支持
VDI
VMDK
VHD
/>对HDD的部分支持
(仅限Parallels版本2) /> QCOW
QED
来源:Oracle®VMVirtualBox®用户手册»第5章。虚拟存储»5.2。磁盘映像文件(VDI,VMDK,VHD,HDD)
回答您的注意事项
/>可以使用动态大小调整
VDI,VMDK和VHD都支持动态分配的存储。 VMDK具有将存储文件拆分为每个小于2 GB的文件的附加功能,如果文件系统的文件大小限制较小,则此功能非常有用。
HDD,QCOW和QED必须动态如果在VirtualBox中创建,则分配。
具有快照
VirtualBox支持所有六种格式的快照。
能够以最小的工作量(可能在Ubuntu上可以很好地运行)将我的虚拟机移动到另一个OS或另一个免费的虚拟化解决方案。 >
VDI是VirtualBox的本机格式。其他虚拟化软件通常不支持VDI,但是将VDI转换为另一种格式非常容易,尤其是使用
qemu-img convert
。软件)也支持它。此格式可能是您的最佳选择,因为您希望与其他虚拟化软件具有广泛的兼容性。VHD是Microsoft Virtual PC的本机格式。 Windows Server 2012引入了VHDX作为VHD的后继产品,但VirtualBox不支持VHDX。
HDD是Parallels的一种格式。 Parallels专门针对macOS进行虚拟化。这可能不适合您,特别是考虑到VirtualBox仅支持旧版本的HDD格式。
QCOW是qcow格式的旧原始版本。它已被VirtualBox不支持的qcow2取代。
QED是qcow2的废弃增强。 QEMU建议不要使用QED。
性能
由于以下原因,每种格式可能都有细微的性能差异如何通过格式提取块存储,但是我还没有找到任何基准来比较VirtualBox支持的格式。
还有更大的因素会影响性能,例如:
您的物理设备限制(在硬盘驱动器上比固态驱动器更引人注目……为什么?)
扩展动态分配的虚拟磁盘驱动器(随着虚拟磁盘扩展,写入操作会变慢,但是一旦它足够大,扩展就应该少发生)
虚拟化技术(硬件与软件;硬件虚拟化有助于VirtualBox并提高虚拟操作系统的速度)
您正在运行虚拟操作系统系统。由于存在虚拟化开销,因此性能总是比在主机上运行操作系统要慢。
评论
+1我要补充一点,VMDK似乎提供了我一直在寻找的关于增量备份的灵丹妙药:我不再需要为来宾中的一点点更改而备份巨大的Monolithinc VDI。
–麦桑福德
13年8月14日在1:10
我认为原始主机硬盘缺少一些考虑因素,即从主机上看到的虚拟客户机使用“物理”硬盘(或RAID设备)。与在文件系统上使用模拟驱动器相比,这将提供更好的性能。
– EnzoR
16年3月3日在15:17
@Enzo:我现在在原始块设备上使用VMDK。最大的收获是VirtualBox需要以root身份运行。另外,原始磁盘上不支持快照,但是我有一个第三方快照系统(ZFS)。原始磁盘上的VMDK的可移植性也大大降低。至于性能,我没有任何可靠的基准,但是我也没有任何抱怨。
– Deltik
16年6月3日在15:59
可以在Windows磁盘管理中将VHD挂载为驱动器,对于VDI来说,它看起来并不简单:superuser.com/q/342334/13889
– Endolith
16 Sep 27 '16:57
@msanford您能否详细说明VMDK如何避免备份巨大的文件-rsync是否能够更好地找出差异? VMDK文件似乎在每次调整后都会发生变化。
– Ben Creasy
17年6月18日在18:46
#2 楼
我一直使用VDI,因为它是VirtualBox的本机格式。但是,使用VMDK(VMWare格式)将增加与其他虚拟机软件的兼容性。VirtualBox可以在Ubuntu上很好地运行,因此,如果目标是Windows / Ubuntu的互操作性,那么VDI将是一个完美的选择。
两种格式都可以满足您的要求。
对于其他两种格式,VHD是Microsoft开发的格式,而HDD是Apple开发的格式;这些都经过专有许可,因此限制了跨平台支持;我不推荐他们。
#3 楼
Mpack在这里解释了VHD和VDI之间的关键性能差异:最近研究了VHD格式,我希望VDI的偏好至少存在很小的差异,在进行比较时最明显例如,优化的VDI与优化的VHD。原因是动态VHD格式具有分散在整个磁盘中的这些“位图”扇区。每次您修改块内的扇区时,这些位图块也可能需要更新和写入,这涉及额外的查找,读取和写入。从驱动器映像读取连续的簇时,也必须跳过这些位图扇区-进行更多查找。 VDI格式没有这些开销,尤其是如果VDI已经过优化(虚拟磁盘上的块按LBA顺序分类)的话。在固定大小的虚拟磁盘上进行性能测试是没有意义的,因为这两种格式都是相同的(只是磁盘的普通映像),它们上只有不同的标头。
org / viewtopic.php?f = 1&t = 22688
#4 楼
我不知道使用vmdk是否可以使您透明地运行在VMware的VirtualBox中创建的虚拟机。它可能。但是,更通用的选项可能是使用VirtualBox File / Export函数创建“ Open Virtualization Appliance” .ova文件,然后将其导入VMware。通过这种方法,您可以移植到任何支持.ova的虚拟化系统,而无需关心在VirtualBox中使用哪种磁盘映像格式。如果需要定期从同一VM导出,例如每天,这可能会很痛苦。但是,如果偶尔仅使用另一种技术,那应该没问题。
如果已经具有.vdi文件,则可以测试此方法是否有效而不必创建新的虚拟机。将其导出到.ova,然后尝试使用vmware导入。
#5 楼
这也取决于您计划如何使用虚拟磁盘。并非每个VM都希望在单个磁盘上有一个分区。VDI似乎有更多选择(当与VirtualBox一起使用时),但是一旦您将VirtualBox取消使用,对VDI的支持就会变得有些摇摇欲坠(截至2014年底)。
例如,我的解决方案需要最大程度的跨平台支持。在Linux或Windows 7上安装VDI(例如回送设备)比您预期的要困难和麻烦。几乎就像VDI具有太多的功能一样,这使得很难制作出可以在其上运行的完全兼容的实用程序。
当您希望VMDK与任何工作站上的任何VM一起使用时,IMDK都会轻松得多。当您想同时将其克隆到网络上的其他系统3次,并且想要撬开它而不启动VM实例时。
即使我使用VirtualBox的90%这段时间里,在某些工作流程中无法访问磁盘的那几次,使我偏向于将VMDK用于可插拔/共享文件系统。
#6 楼
磁盘映像文件驻留在主机系统上,并被来宾系统视为具有特定几何形状的硬盘。当来宾操作系统读取或写入硬盘时,VirtualBox会将请求重定向到映像文件。像物理磁盘一样,虚拟磁盘的大小(容量)必须指定。创建图像文件时。与物理磁盘相反,VirtualBox允许您在创建后扩展映像文件,即使它已经有数据;
VirtualBox支持磁盘映像文件的四个变体:
VDI:通常,VirtualBox对来宾硬盘使用其自己的容器格式-虚拟磁盘映像(VDI)文件。特别是,当您使用新磁盘创建新的虚拟机时将使用这种格式。
VMDK:VirtualBox还完全支持许多其他虚拟化产品使用的流行且开放的VMDK容器格式, [25]
VHD:VirtualBox也完全支持Microsoft使用的VHD格式。
Parallels 2版的图像文件(HDD格式)也支持。[26]由于缺少格式文件,因此不支持较新的格式(3和4)。但是,您可以使用Parallels提供的工具将此类图像文件转换为版本2格式。
评论
答案来自VirtualBox手册的第5章。链接
– JerryOL
18年4月3日在22:08
#7 楼
看起来使用VDI可以将磁盘文件修剪到其实际大小VirtualBox和SSD的TRIM命令支持
评论
尽管准确无误,但对于这些格式之间的一般差异却有些疑问,您不觉得吗?
–赛斯
16-11-21在11:02
@Seth一般概述是由以前的答案提供的,我没有足够的代表发表评论,但是提及这一事实仍然很重要
–OwnageIsMagic
16-11-21在13:32
就像建议一样,尽管添加它以提供更多上下文。例如。 “尽管此答案提供了很好的概述,但您还应该考虑...的优点”。因此,即使独自阅读,您的答案与更一般的答案也有关系。
–赛斯
16-11-22在7:06
@Seth在我的问题下为您提供了编辑按钮:D
–OwnageIsMagic
16年11月23日在1:16
我可以保证,我会审查您的编辑,因此您的工作不会浪费。另外,您将被提及为问题的编辑,因此您将获得适当的署名。有什么问题?
–OwnageIsMagic
16年11月24日,0:04
#8 楼
我使用vmdk的一个很好的理由是,使用VDI格式的Virtualbox(至少到v4.1为止)会随着时间的推移趋向于填充完整分配的磁盘空间,即使内部虚拟磁盘的使用量仍然要少得多。对于使用vmdk磁盘的Virtualbox,这似乎不是一个问题。但是我说的是正常运行时间。这可能不是很多人遇到的问题。
评论
它与来宾文件系统的碎片关系更大,而不是与格式本身有关。
– EnzoR
16年3月3日在15:19
#9 楼
如果VM太大,则VDI易于压缩。#10 楼
我只是将原始VMDK迁移了,该VMDK已映射到Transcend SSD370 128 GB的分区到Samsung Pro 850 512GB。显然,VMDK比VDI快很多。我不明白为什么,也许是我在某个地方犯了一个错误。
我通过虚拟媒体管理器将VMDK复制到了850。一次是VDI,一次是VMDK。
然后我在图像上运行了
hdparm -tT --direct /dev/sda
。对于每个“运行”,我都切换了“机器->设置->存储->控制器SATA-> ImageFile.xxx”。 SSD370上的原始分区是由VMDK文件定义的,因此它实际上不是映像。这些结果是:################################################################################################
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-96-generic x86_64)
System information as of Thu Sep 21 17:02:51 CEST 2017
System load: 1.96 Processes: 201
Usage of /: 83.2% of 43.88GB Users logged in: 0
Memory usage: 4% IP address for eth0:
Swap usage: 0% IP address for docker0: 172.17.0.1
################################################################################################
======================================================================================
V M D K --- R A W !!! --- on Transcend SSD370 128 GB
======================================================================================
Timing O_DIRECT cached reads: 1024 MB in 2.00 seconds = 511.61 MB/sec <---
Timing O_DIRECT disk reads: 1134 MB in 3.00 seconds = 377.88 MB/sec <---
Timing O_DIRECT cached reads: 1042 MB in 2.00 seconds = 520.82 MB/sec <---
Timing O_DIRECT disk reads: 1162 MB in 3.00 seconds = 387.27 MB/sec <---
---
Timing O_DIRECT cached reads: 816 MB in 2.00 seconds = 407.55 MB/sec
Timing O_DIRECT disk reads: 1020 MB in 3.01 seconds = 339.43 MB/sec <---
======================================================================================
V M D K --- on Samsung Pro 850 515GB
======================================================================================
Timing O_DIRECT cached reads: 836 MB in 2.00 seconds = 417.21 MB/sec <---
Timing O_DIRECT disk reads: 782 MB in 3.01 seconds = 260.21 MB/sec
Timing O_DIRECT cached reads: 834 MB in 2.00 seconds = 416.08 MB/sec
Timing O_DIRECT disk reads: 786 MB in 3.00 seconds = 261.71 MB/sec
---
Timing O_DIRECT cached reads: 826 MB in 2.00 seconds = 412.75 MB/sec <---
Timing O_DIRECT disk reads: 774 MB in 3.00 seconds = 257.79 MB/sec
Timing O_DIRECT cached reads: 828 MB in 2.00 seconds = 413.88 MB/sec <---
Timing O_DIRECT disk reads: 774 MB in 3.00 seconds = 257.83 MB/sec
---
Timing O_DIRECT cached reads: 842 MB in 2.00 seconds = 420.76 MB/sec <---
Timing O_DIRECT disk reads: 770 MB in 3.00 seconds = 256.56 MB/sec
======================================================================================
V D I --- on Samsung Pro 850 515GB
======================================================================================
Timing O_DIRECT cached reads: 470 MB in 2.01 seconds = 234.21 MB/sec <---
Timing O_DIRECT disk reads: 766 MB in 3.00 seconds = 254.94 MB/sec
Timing O_DIRECT cached reads: 494 MB in 2.00 seconds = 246.45 MB/sec <---
Timing O_DIRECT disk reads: 754 MB in 3.00 seconds = 250.92 MB/sec
Timing O_DIRECT cached reads: 490 MB in 2.00 seconds = 244.46 MB/sec <---
Timing O_DIRECT disk reads: 764 MB in 3.01 seconds = 254.03 MB/sec
################################################################################################
# Data above comes from here
################################################################################################
======================================================================================
V M D K --- on Samsung Pro 850 515GB
======================================================================================
System information as of Thu Sep 21 17:02:51 CEST 2017
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 836 MB in 2.00 seconds = 417.21 MB/sec <======
Timing O_DIRECT disk reads: 782 MB in 3.01 seconds = 260.21 MB/sec <======
user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 21080 MB in 2.00 seconds = 10554.40 MB/sec
Timing buffered disk reads: 784 MB in 3.00 seconds = 260.92 MB/sec
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 834 MB in 2.00 seconds = 416.08 MB/sec <======
Timing O_DIRECT disk reads: 786 MB in 3.00 seconds = 261.71 MB/sec <======
======================================================================================
V M D K --- R A W !!! --- on Transcend SSD370 128 GB
======================================================================================
System information as of Thu Sep 21 17:00:47 CEST 2017
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 1024 MB in 2.00 seconds = 511.61 MB/sec <======
Timing O_DIRECT disk reads: 1134 MB in 3.00 seconds = 377.88 MB/sec <======
user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 21182 MB in 2.00 seconds = 10603.52 MB/sec
Timing buffered disk reads: 1060 MB in 3.00 seconds = 352.91 MB/sec
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 1042 MB in 2.00 seconds = 520.82 MB/sec <======
Timing O_DIRECT disk reads: 1162 MB in 3.00 seconds = 387.27 MB/sec <======
======================================================================================
V M D K --- on Samsung Pro 850 515GB
======================================================================================
System information as of Thu Sep 21 16:58:12 CEST 2017
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 826 MB in 2.00 seconds = 412.75 MB/sec <======
Timing O_DIRECT disk reads: 774 MB in 3.00 seconds = 257.79 MB/sec <======
user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 22082 MB in 2.00 seconds = 11055.78 MB/sec
Timing buffered disk reads: 788 MB in 3.01 seconds = 262.11 MB/sec
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 828 MB in 2.00 seconds = 413.88 MB/sec <======
Timing O_DIRECT disk reads: 774 MB in 3.00 seconds = 257.83 MB/sec <======
======================================================================================
V D I --- on Samsung Pro 850 515GB
======================================================================================
System information as of Thu Sep 21 16:55:24 CEST 2017
user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 21468 MB in 2.00 seconds = 10747.37 MB/sec
Timing buffered disk reads: 662 MB in 3.01 seconds = 220.12 MB/sec
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 470 MB in 2.01 seconds = 234.21 MB/sec <======
Timing O_DIRECT disk reads: 766 MB in 3.00 seconds = 254.94 MB/sec <======
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 494 MB in 2.00 seconds = 246.45 MB/sec <======
Timing O_DIRECT disk reads: 754 MB in 3.00 seconds = 250.92 MB/sec <======
user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 20872 MB in 2.00 seconds = 10448.98 MB/sec
Timing buffered disk reads: 694 MB in 3.01 seconds = 230.78 MB/sec
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 490 MB in 2.00 seconds = 244.46 MB/sec <======
Timing O_DIRECT disk reads: 764 MB in 3.01 seconds = 254.03 MB/sec <======
======================================================================================
V M D K --- on Samsung Pro 850 515GB
======================================================================================
System information as of Thu Sep 21 16:52:32 CEST 2017
user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 20872 MB in 2.00 seconds = 10448.90 MB/sec
Timing buffered disk reads: 764 MB in 3.01 seconds = 254.11 MB/sec
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 842 MB in 2.00 seconds = 420.76 MB/sec <======
Timing O_DIRECT disk reads: 770 MB in 3.00 seconds = 256.56 MB/sec <======
======================================================================================
V M D K --- R A W !!! --- on Transcend SSD370 128 GB
======================================================================================
System information as of Thu Sep 21 16:29:55 CEST 2017
user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 22034 MB in 2.00 seconds = 11029.82 MB/sec
Timing buffered disk reads: 990 MB in 3.00 seconds = 329.68 MB/sec
user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
Timing O_DIRECT cached reads: 816 MB in 2.00 seconds = 407.55 MB/sec <======
Timing O_DIRECT disk reads: 1020 MB in 3.01 seconds = 339.43 MB/sec <======
我真的不知道如何解释,也许有人想对此发表评论。我选择了VMDK。
#11 楼
很久以前,我做了一个测试,将动态vdi转换为动态vhd只是为了测试速度和文件大小。请记住,这是一个不可变的Windows guest clean os操作系统,安装了一些应用程序,请记住我的测试将一种格式转换为另一种格式,因此都希望它们具有完全相同的映像,就像进行克隆一样。
对于64GiB的磁盘,VDI文件的大小为18GiB,而VHD arround 22GiB。
我还记得我看到的两件事:
启动时间明显不同,如果我不记得不好的话,vhd快1.6倍比VDI
VHD的大小要大得多,比18GiB大4GiB千兆字节,因此是1.2倍。
很久以前,测试是在HDD上完成的,但是确保两个文件都已碎片整理,并在磁盘的快速部分上彼此相邻。
希望有人可以进行真正的SSD测试,但我的感觉是VHD比VDI更快(并且更大)。 br />
提示:VHD / VHD可以使用DiskPart命令行工具在任何Windows 7和更高版本上直接压缩X,对于VDI,需要外部工具CloneVDI。
对不起,我没有测试VMDK,我不知道如何压缩无需更改其UUID(磁盘UUID),请记住,无论使用哪种格式,VBOX命令工具都必须在每个克隆上都对其进行更改。
评论
在“运行虚拟”框中,单击帮助图标>目录,在“虚拟存储”下有一个合理的解释。关于迁移到“另一个免费的虚拟化解决方案...,它将在Ubuntu上运行良好”,我确定VirtualBox可用于Linux。
在性能方面,我认为最好是在有空间的情况下创建固定磁盘。否则,在使用虚拟机时(而不是在创建时一次),这会给OS带来很大压力。
要考虑的另一件事是,当您可能需要调整图像大小时-VBoxManage无法调整VMDK的大小,因此您必须先克隆到VDI,然后再调整大小,然后再回到VMDK +弄乱UUID。仅出于这个原因,VDI对我来说似乎是更好的选择。