首页 理论教育 P-V和V2V虚拟机迁移的硬件配置变化与解决方案

P-V和V2V虚拟机迁移的硬件配置变化与解决方案

时间:2026-01-26 理论教育 筱悦 版权反馈
【摘要】:不管是P2V还是V2V,期间不免会涉及虚拟机硬件配置的变化,比如物理机迁移至虚拟机、OpenStack、Xen、oVirt、ESiX平台之间的互迁。以P2V为例,物理机的配置迁移至虚拟机后,主板各模块控制器配置、硬盘控制器、HBA卡、网卡、内存、CPU等发生了较大变化,虽然虚拟机系统对其中的某些变化并不敏感,但对于较为关键的硬盘控制器、网卡等还是比较挑剔的。

现有应用环境向云的迁移能力也是企业评估私有云平台的一个重要因素,其中以虚拟机为单位进行的迁移可分为P2V和V2V两种。

一般P2V实现可以参考物理机环境中常用的Ghost、Clonezilla,也可以使用平台提供的专用工具,比如libvirt平台下可以使用virt-p2v,VMWare平台下可以使用VMWare Converter。而V2V的方法相对P2V来说更自由一些,除了virt-v2v、VMWare Converter等工具,也可以直接对虚拟机的硬盘镜像进行转换,比如将vmdk转换为qcow2然后将其赋予虚拟机使用。关于迁移工具的具体使用,网络社区中都有较为详细的介绍,笔者在此不予赘述。

不管是P2V还是V2V,期间不免会涉及虚拟机硬件配置的变化,比如物理机迁移至虚拟机、OpenStack、Xen、oVirt、ESiX平台之间的互迁。以P2V为例,物理机的配置迁移至虚拟机后,主板各模块控制器配置、硬盘控制器、HBA卡、网卡、内存、CPU等发生了较大变化,虽然虚拟机系统对其中的某些变化并不敏感,但对于较为关键的硬盘控制器、网卡等还是比较挑剔的。在此,笔者将列出虚拟机最为敏感的几个设备的迁移方法进行介绍,供读者参考。

□硬盘控制器

硬盘控制器(含HBA卡)发生的变化主要体现在硬盘接口类型的变化,它们主要可以概括为virtio、IDE、SCSI三种类型。

首先我们需要确定迁移目标平台能提供的接口类型。默认情况下,OpenStack、oVirt、CloudStack平台提供的是virtio、IDE和SCSI接口,VMWware Workstation/Player提供的是IDE和SCSI接口,VMWare ESXi提供的是含Lsi Logic适配器的SCSI接口以及普通的IDE、SCSI接口,Xen平台提供的是IDE和SCSI接口(部分厂商也提供virtio接口),其中每个平台提供的与接口类型对应的具体控制器型号可能不同,但总体来说只要类型相同就可以互相兼容。

然后我们要确定迁移之前的物理机或虚拟机是否拥有此种接口。如果有,则迁移后的虚拟机通常状况下可以正常启动;如果没有,则需要提前安装目标平台的接口驱动并进行简单配置。未安装第三方驱动的情况下,现在主流的Linux、BSD发行版支持IDE、SCSI、virtio的硬盘接口,Windows平台支持IDE、SCSI,Solaris同样仅支持IDE、SCSI接口。

其中IDE、SCSI、virtio之间的互相迁移比较简单,实际迁移时遇到的最大问题往往是从虚拟机含有Lsi Logic SCSI接口的ESXi平台迁移至其他平台。此时有两种解决办法,第一种是在原平台上将系统硬盘接口转换为不含Lsi Logic适配器的SCSI接口再进行迁移,第二种则是直接迁移后再在目标平台中针对此虚拟机添加Lsi Logic适配器。

第一种方法的具体步骤可参考VMWare官方知识库KB2074628,笔者仅摘录其中的引导盘接口类型修改方法,如下所示:

这种方法通用型比较强,读者可参考它进行virtio、IDE、SCSI硬盘接口之间的转换。

另一种方法则针对目标是以QEMU、Xen作为模拟器的平台,具体实现即是在虚拟机命令行中加入Lsi Logic适配器的rom文件,同时将硬盘接口类型更改为SCSI。

以QEMU为例,其中的8xx_64.rom即是Lsi Logic适配器的rom文件,可从Lsi Logic官网或社区下载:(https://www.xing528.com)

□网卡

一般来说,网卡在迁移后也会发生变化。但是这种变化相对来说就比较好处理,关键也是保证虚拟机内含有目标平台的虚拟网卡驱动,可参考硬盘控制器的迁移步骤进行操作。

但是对于依赖网络启动的虚拟机来说,情况就比较复杂了,尤其是使用sanboot无盘技术的虚拟机。因为这其中牵涉物理硬件的具体功能,迁移后的虚拟机除了要含有相关网卡驱动外,也要额外添加和修改系统文件才能正常启动。由于此种情况需要针对具体网卡,且不同网卡的方法不尽相同,所以笔者不予过多介绍,对这方面有兴趣的读者可以参考国内无盘系统的实施细节。

□BIOS

迁移后BIOS变化产生的影响主要是在Windows这种激活机制依赖主板信息的操作系统。比较典型的是SLIC表的变化。SLIC表位于主板BIOS中,它包含了很多主板厂商的信息以及二进制形式的密钥,是进行Windows OEM激活的关键部分。

一般来说,虚拟机的BIOS是由模拟器提供,而QEMU模拟器BIOS中的部分信息需要从主机BIOS中读取,SLIC表就属于这部分内容。

某些白牌/贴牌服务器BIOS中很可能没有SLIC表,那么我们购买的Windows OEM许可则无法对其进行激活,此时我们就需要对QEMU的BIOS稍作修改以保证许可可进行激活。

首先下载QEMU的BIOS实现,即seabios的源码。

然后找到其中的acpi.c文件并添加OEM SLIC信息,具体代码与seabios版本有关,笔者下载时的版本号为1.7.2。

其中添加的acpi-slic.hex文件即是SLIC表,它的内容来自社区提供SLIC表或者可进行激活的OEM主机BIOS。

最后,进行编译并使用新的seabios.bin作为QEMU BIOS启动虚拟机。在激活之前,可以使用slic-toolkit查看系统的SLIC表。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈