如果想要在多hypervisor环境当中实现良好的虚拟机兼容性,那么深入理解虚拟机文件和磁盘格式是十分重要的。
如果管理员在工作当中只需要管理一种虚拟化平台,那么就没有必要使用多种虚拟化文件格式。相同厂商hypervisor能够支持现有文件格式,即便将hypervisor升级到新版本,之前的文件依然能够正常工作。
但是如果管理员需要在一种hypervisor环境当中使用另外一种hypervisor平台创建的虚拟机,那么情况就完全不同了。不同hypervisor创建的虚拟化文件格式是完全不兼容的。为了实现跨hypervisor的虚拟机兼容性,首先需要了解不同格式之间的区别,之后对比不同虚拟化文件和磁盘格式之间的缺点和优点。
不同文件类型和文件格式
为了存储虚拟机,管理员必须至少使用两种不同类型的文件。硬盘文件用来存储虚拟机需要使用的所有文件以及虚拟机描述文件。为了将虚拟机从一个hypervisor平台顺利迁移到另外一个平台当中,必须确保目标hypervisor能够同时支持两种文件格式。但是实际操作过程并没有这么简单,因为不同hypervisor所支持的特性也不相同。因此,如果你是一名希望最大程度上确保虚拟机兼容性的管理员,那么必须使用两种平台都能够支持的特性。
磁盘文件和描述文件格式
在制定虚拟机兼容性策略的时候,首先需要决定的就是希望实现哪些功能。当然,源磁盘格式在目标hypervisor平台上应该是可用的。对于hypervisor来说,有很多种磁盘格式可供选择,每种磁盘格式都能够提供相应特性,这种情况使得保持兼容性十分困难。比如,管理员想要为虚拟机制作快照,那么最好虚拟机原生就支持这种特性。
常见的磁盘格式包括:
RAW::这并非是一种真正的磁盘格式,而是代表虚拟机所使用的原始镜像。它并不存储元数据,因此可以作为保证虚拟机兼容性的候选方案。然而,也正因为它不存储元数据,因此不能支持某些高级特性,比如快照和压缩等。
VMDK(Virtual Machine Disk)文件:它是VMware环境当中默认使用的磁盘格式。它支持多种不同特性,包括thin provisioning和thick provisioning,还有一些高级特性,比如支持集群环境。
VHD(Virtual Hard Disk):这是微软默认采用的文件格式,和VMDK类似,它也支持多种不同特性,能够在数据中心环境当中实现高效存储和使用。
Qcow2:这是QEMU所采用的默认磁盘格式,QEMU是一种开源hypervisor。由于Linux KVM也使用QEMU,因此qcow2格式经常被用在KVM环境当中。它能够高效使用存储,允许管理员在需要磁盘空间的时候按需进行分配,也就是所谓的copy on write(CoW)。
除了不同的磁盘格式之外,还需要考虑多种虚拟机描述文件格式。一些常用的格式包括KVM环境当中使用的XML文件以及VMware环境当中用来描述虚拟机的VMX文件。从兼容性角度来说,这些描述文件类型并没有虚拟磁盘格式那么重要。如果能够顺利读取虚拟磁盘,那么就能够完成大部分重要目标,也就是使用虚拟机。即便不能读取虚拟机描述文件,通常还能够在目标磁盘上重新创建虚拟机,因为通常描述文件当中只包含一些为虚拟机分配的硬件信息。
OVF和OVA的作用
2007年,主要虚拟化厂商同意使用一种通用格式来封装虚拟机,也就是OVF(Open Virtualization Format)。使用OVF的目的在于提供一套通用标准,保证虚拟机文件能够在不同虚拟化平台之间顺利迁移。一个OVF文件当中包含用于描述虚拟机内容的XML文件以及VMDK文件。即便OVF并不是所有hypervisor采用的默认格式,但是它已经获得了主要虚拟化厂商的支持,因此能够确保虚拟机在不同平台间的可移植性。
而OVA(Open Virtualization Application)格式在OVF文件的基础上又增加了一些功能性。这是一种归档文件,允许使用虚拟机压缩存储。和OVF文件一样,OVA文件也已经获得主要虚拟化平台的支持。使用VOA文件迁移虚拟机的好处在于它使用的压缩算法已经得到所有虚拟化平台的支持。在使用OVA文件之前需要注意的是他们通常必须被导入到虚拟化平台当中。
在处理虚拟机兼容性问题的时候,可能会涉及多种文件格式。比如磁盘文件格式、虚拟机描述文件格式以及OVA格式,OVA文件能够用来存储压缩虚拟机文件。