9.4. 高级别迁移工作流
高级别工作流显示用户视图的迁移过程:
- 您可以创建一个源供应商、目标供应商、网络映射和存储映射。
您可以创建一个包含以下资源的
Plan自定义资源(CR):- 源供应商
- 目标供应商,如果目标集群上没有安装 MTV
- 网络映射
- 存储映射
- 一个或多个虚拟机 (VM)
您可以通过创建一个引用
PlanCR 的MigrationCR 来运行迁移计划。如果出于某种原因无法迁移所有虚拟机,则可以为同一
PlanCR 创建多个MigrationCR,直到虚拟机迁移为止。-
对于
PlanCR 中的每个虚拟机,Migration Controller服务会在MigrationCR 中记录虚拟机迁移进度。 当
PlanCR 中每个虚拟机的数据传输完成后,Migration Controller服务会创建一个VirtualMachineCR。当迁移所有虚拟机时,
Migration Controller服务会将PlanCR 的状态更新为Completed。每个源虚拟机的电源状态在迁移后会被维护。
9.4.1. 详细的迁移工作流 复制链接链接已复制到粘贴板!
您可以使用详细的迁移工作流来排除迁移失败的问题。
工作流描述了以下步骤:
温迁移或迁移到远程 OpenShift 集群:
当您创建
Migration自定义资源(CR)来运行迁移计划时,Migration Controller服务会为每个源虚拟机磁盘创建一个DataVolumeCR。对于每个 VM 磁盘:
-
Containerized Data Importer(CDI)控制器服务根据DataVolumeCR 中指定的参数创建一个持久性卷声明 (PVC)。 -
如果
StorageClass有动态置备程序,则StorageClass置备程序会动态置备持久性卷(PV)。 -
CDI Controller服务创建一个importerpod。 importerpod 将虚拟机磁盘流传输到 PV。虚拟机磁盘传输后:
Migration Controller服务会在从 VMware 导入时创建一个转换pod,并附加 PVC。conversionpod 运行virt-v2v,它会在目标虚拟机的 PVC 中安装和配置设备驱动程序。-
Migration Controller服务为每个源虚拟机(VM)创建一个VirtualMachineCR,连接到 PVC。 如果虚拟机在源环境中运行,则虚拟机上的
Migration Controller电源,KubeVirt Controller服务会创建一个virt-launcherpod 和VirtualMachineInstanceCR。virt-launcherpod 运行QEMU-KVM,并附加了作为 VM 磁盘的 PVC。
从 RHV 或 OpenStack 冷迁移到本地 OpenShift 集群:
当您创建
Migration自定义资源(CR)来运行迁移计划时,Migration Controller服务为每个源虚拟机磁盘创建一个PersistentVolumeClaimCR,当源是 RHV 时,一个OvirtVolumePopulator,或源是 OpenStack 时的OpenstackVolumePopulatorCR。对于每个 VM 磁盘:
-
Populator Controller服务创建一个临时的持久性卷声明(PVC)。 如果
StorageClass有动态置备程序,则StorageClass置备程序会动态置备持久性卷(PV)。-
Migration Controller服务创建一个 dummy pod 来绑定 所有 PVC。pod 的名称包含pvcinit。
-
-
Populator Controller服务创建一个填充器pod。 填充器pod 将磁盘数据传输到 PV。虚拟机磁盘传输后:
- 临时 PVC 被删除,初始 PVC 指向带有数据的 PV。
-
Migration Controller服务为每个源虚拟机(VM)创建一个VirtualMachineCR,连接到 PVC。 如果虚拟机在源环境中运行,则虚拟机上的
Migration Controller电源,KubeVirt Controller服务会创建一个virt-launcherpod 和VirtualMachineInstanceCR。virt-launcherpod 运行QEMU-KVM,并附加了作为 VM 磁盘的 PVC。
从 VMware 冷迁移到本地 OpenShift 集群:
当您创建
Migration自定义资源(CR)来运行迁移计划时,Migration Controller服务会为每个源虚拟机磁盘创建一个DataVolumeCR。对于每个 VM 磁盘:
-
Containerized Data Importer (CDI)控制器服务会根据DataVolumeCR 中指定的参数创建一个空白的持久性卷声明(PVC)。 -
如果
StorageClass有动态置备程序,则StorageClass置备程序会动态置备持久性卷(PV)。
对于所有虚拟机磁盘:
-
Migration Controller服务创建一个 dummy pod 来绑定 所有 PVC。pod 的名称包含pvcinit。 -
Migration Controller服务为所有 PVC 创建一个转换pod。 conversionpod 运行virt-v2v,它将虚拟机转换为 KVM hypervisor,并将磁盘的数据传送到对应的 PV。虚拟机磁盘传输后:
-
Migration Controller服务为每个源虚拟机(VM)创建一个VirtualMachineCR,连接到 PVC。 如果虚拟机在源环境中运行,则虚拟机上的
Migration Controller电源,KubeVirt Controller服务会创建一个virt-launcherpod 和VirtualMachineInstanceCR。virt-launcherpod 运行QEMU-KVM,并附加了作为 VM 磁盘的 PVC。
9.4.2. MTV 如何使用 virt-v2v 工具 复制链接链接已复制到粘贴板!
Migration Toolkit for Virtualization (MTV)使用 virt-v2v 工具将虚拟机(VM)的磁盘镜像转换为与 OpenShift Virtualization 兼容的格式。该工具使迁移变得更加容易,因为它会自动执行使虚拟机使用 OpenShift Virtualization 所需的任务。例如,如果可能,在转换的虚拟机中启用半虚拟化 VirtIO 驱动程序并安装 QEMU 客户机代理。
virt-v2v 包括在 Red Hat Enterprise Linux (RHEL)版本 7 及更高版本中。
9.4.2.1. MTV 迁移中的 virt-v2v 的主要功能 复制链接链接已复制到粘贴板!
在迁移过程中,MTV 使用 virt-v2v 收集有关虚拟机的元数据,对虚拟机磁盘进行必要的更改,并将包含虚拟机的磁盘复制到 OpenShift Virtualization。
virt-v2v 对虚拟机磁盘进行以下更改,以便为迁移准备它们:
附加组件:
- VirtIO 驱动程序注入,如网络或磁盘驱动程序。
- 准备特定于 hypervisor 的工具或代理,如 QEMU 客户机代理安装。
- 修改引导配置,如更新的引导装载程序或引导条目。
删除:
- 不必要的或以前的特定于管理程序的文件,如 VMware 工具或 VirtualBox 添加。
- 旧的网络驱动程序配置,例如删除 VMware 特定的 NIC 驱动程序。
- 与目标系统不兼容的配置设置,如旧的引导设置。
如果您要从 VMware 或从开放虚拟设备(OVA)文件迁移,virt-v2v 还会在迁移期间或迁移后首次重启虚拟机期间设置其 IP 地址。
您还可以使用 MTV 迁移前或之后运行预定义的 Ansible hook。如需更多信息,请参阅 在 MTV 迁移计划中添加 hook。
这些 hook 不一定使用 virt-v2v。
9.4.2.2. 自定义、删除和安装文件 复制链接链接已复制到粘贴板!
MTV 使用 virt-v2v 在转换过程中执行额外的客户机自定义,比如以下操作:
- 自定义以保留 IP 地址
- 自定义以保留驱动器符
对于基于 Red Hat Enterprise Linux (RHEL)的客户机,virt-v2v 会尝试从 Red Hat registry 安装客户机代理。如果迁移在分离的环境中运行,安装程序会失败,您必须使用 hook 或其他自动化来安装客户机代理。
如需更多信息,请参阅 man 参考页面:
9.4.2.3. 权限和 virt-v2v 复制链接链接已复制到粘贴板!
virt-v2v 不需要客户端操作系统本身的权限或访问凭证,因为 virt-v2v 不会针对正在运行的虚拟机运行,而只针对虚拟机的磁盘运行。