4.3. 转换一个虚拟机


virt-v2v 命令可以把在其它虚拟机监控程序(hypervisor)上运行的虚拟机进行转换来在 Red Hat Enterprise Virtualization 上运行。它会自动打包虚拟机的映像和元数据,然后把它们上传到 Red Hat Enterprise Virtualization 的导出存储域中。如需了解更多关于导出存储域的信息,请参阅 第 4.2 节 “附加一个导出存储域”virt-v2v 会在转换前对存储进行备份。

图 4.2. 转换一个虚拟机

通过使用管理门户,用户可以把导出存储域中的虚拟机导入到 Red Hat Enterprise Virtualization。

图 4.3. 导入一个虚拟机

4.3.1. 为转换虚拟机做准备

在转换一个虚拟机前,请确认以下步骤已经完成:

过程 4.2. 为转换虚拟机做准备

  1. 创建一个 NFS 导出域。virt-v2v 可以把被转换的虚拟机直接传输到一个 NFS 导出存储域中,导出存储域中的虚拟机可以被导入到 Red Hat Enterprise Virtualization 的一个数据中心中。这个存储域必须可以被运行 virt-v2v 的机器挂载,在把虚拟机导出到 Red Hat Enterprise Virtualization 的导出域时,virt-v2v 命令需要以 root 用户身份运行。

    注意

    导出存储域作为一个 NFS 共享被访问。在默认的情况下,Red Hat Enterprise Linux 6 使用 NFSv4,这不需要进行其它配置。但是,对于使用 NFSv2 和 NFSv3 的客户端,用来运行 virt-v2v 的系统需要运行 rpcbindnfslock 服务,网络也需要被配置为运行 NFS 访问存储服务器。如需了解更多相关信息,请参阅 Red Hat Enterprise Linux Storage Administration Guide
  2. virt-v2v.conf 中指定网络映射。这一步是可选的,多数情况下都不需要它。
    如果您的虚拟机有多个网络接口,则需要编辑 /etc/virt-v2v.conf 来指定所有网络接口的映射信息。您可以使用 -f 参数来指定另外一个 virt-v2v.conf 文件。如果您转换一个虚拟机来在 libvirt 和 Red Hat Enterprise Virtualization 上运行时,您需要为每个转换分别使用一个独立的 virt-v2v.conf 文件。这是因为,转换的网桥在 libvirt 和 Red Hat Enterprise Virtualization 中需要不同的配置。
    如果您的虚拟机只有一个网络接口,则只需要使用 --network--bridge 参数,而不需要修改 virt-v2v.conf
  3. virt-v2v.conf 中为转换操作创建一个配置集。这一步是可选的。配置集指定了转换的方法、存储配置、输出格式和分配策略。当定义了一个配置集后,就可以使用 --profile 调用配置集,而不需要再单独提供 -o-os-of-oa 参数。请参阅 virt-v2v.conf(5) 来获得更详细的信息。

4.3.1.1. 为转换一个运行 Linux 的虚拟机做准备

无论是在哪一种虚拟机监控程序系统下运行,转换一个运行 Linux 的虚拟机都需要做以下准备工作。

过程 4.3. 为转换一个运行 Linux 的虚拟机做准备

  1. 获得相关的软件。
    作为转换过程的一般分,virt-v2v 可能需要在虚拟机上安装一个新内核和驱动。如果被转换的虚拟机已经注册到了 Red Hat Subscription Management(RHSM),所需的软件包会被自动下载。当无法使用 Red Hat Subscription Management(RHSM)时,virt-v2v.conf 文件包括了为了完成这个操作所需的 RPM 列表。您需要手动从红帽客户门户网站中下载这些 RPM。并保存在 path-root 配置项所指定的目录中(默认目录是 /var/lib/virt-v2v/software/)。如果没有转换所需的软件,virt-v2v 将会显示一个与 例 3.1 “缺少所需软件错误” 相似的错误信息。
  2. 对每个缺少的软件包重复以下操作来获得它们:
    1. 登录到红帽客户门户网站:https://access.redhat.com/
    2. 在红帽客户门户网站中,选下载 > 产品下载 > Red Hat Enterprise Linux
    3. 选择所需的 Product VariantVersion,选择 Packages 标签页。在 Filter 项中输入错误信息中显示的软件包名。以 例 3.1 “缺少所需软件错误” 为例,第一个软件包是 kernel-2.6.32-128.el6.x86_64
    4. 一组软件包会被显示,选择和错误信息中显示的软件包名完全相同的软件包。这会打开它的详情页,其中包括了对这个软件包的详细信息。或者点所需软件包旁的 Download Latest 来下载最新的软件包。
    5. 把下载的软件包保存在 /var/lib/virt-v2v/software 中的相应目录中。对于 Red Hat Enterprise Linux 6,这个目录是 /var/lib/virt-v2v/software/rhel/6

重要

virt-v2v 不支持对 Windows 恢复控制台(Recovery Console) 的转换。如果一个虚拟机安装了恢复控制台,并且 VirtIO 在转换过程中被启用,引导到恢复控制台将会导致一个错误。
Windows XP x86 不支持 VirtIO 系统上的 Windows 恢复控制台。但是,Windows XP AMD64 和 Windows 2003(x86 和 AMD64)系统支持它。用户可以在虚拟机转换完成后重新安装恢复控制台来正常使用它。这个重新安装的过程与初始安装的过程相同,用户也不需要先删除恢复控制台后再安装它。

重要

当转换一个带有多个驱动器的 Windows 虚拟机来在 Red Hat Enterprise Virtualization 上运行时,额外的驱动器在一些情况下无法被默认显示。Red Hat Enterprise Virtualization 会为每个转换的虚拟机添加一个 CD-ROM 设备,如果被转换的虚拟机在被转换前没有 CD-ROM 设备,因为转换所新添加的 CD-ROM 设备所被分配的驱动器符可能会和其它存在的驱动器符相冲突,这将会导致其它存在的设备无法被访问。要解决这个问题,您可以手工为其它设备分配没有冲突的新驱动器符,或为新的 CD-ROM 设备手工分配一个与其它设备不冲突的驱动器符,然后重启虚拟机。
无论是在哪一种虚拟机监控程序系统下运行,转换一个运行 Windows 的虚拟机都需要做以下准备工作。整个转换过程还包括 Red Hat Enterprise Virtualization Manager 在转换完成后所要做的配置工作。请参阅 第 7.2.2 节 “Windows 虚拟机的配置改变” 来获得更详细的相关信息。

过程 4.4. 为转换一个运行 Windows 的虚拟机做准备

在转换一个运行 Windows 的虚拟机前,请确认以下步骤已经完成。
  1. 在运行 virt-v2v 的主机上安装 libguestfs-winsupport 软件包。
    这个软件包提供了对许多 Windows 系统都使用的 NTFS 的支持。libguestfs-winsupport 软件包由 RHEL V2VWIN (v. 6 for 64-bit x86_64) 频道提供。请确认您的系统已经订阅了这个频道,并以 root 的身份运行以下命令:
    yum install libguestfs-winsupport
    Copy to Clipboard Toggle word wrap
    如果您在没有安装 libguestfs-winsupport 软件包的情况下转换使用 NTFS 的虚拟机,这个转换过程将失败。与 例 4.1 “在没有安装 libguestfs-winsupport 的情况下转换 Windows 虚拟机出现的错误信息” 相似的错误信息会被显示:

    例 4.1. 在没有安装 libguestfs-winsupport 的情况下转换 Windows 虚拟机出现的错误信息

    No operating system could be detected inside this disk image.
    
    This may be because the file is not a disk image, or is not a virtual machine image, or because the OS type is not understood by virt-inspector.
    
    If you feel this is an error, please file a bug report including as much
    information about the disk image as possible.
    Copy to Clipboard Toggle word wrap
  2. 在运行 virt-v2v 的主机上安装 virtio-win 软件包。
    这个软件包为 Windows 虚拟机提供了准虚拟化块设备和网络的驱动。virtio-win 软件包由 RHEL V2VWIN (v. 6 for 64-bit x86_64) 频道提供。请确认您的系统订阅到这个频道后以 root 身份运行以下命令:
    yum install virtio-win
    Copy to Clipboard Toggle word wrap
    如果您在没有安装 virtio-win 软件包的情况下转换 Windows 虚拟机,这个转换过程将失败。与 例 3.3 “在没有安装 virtio-win 的情况下转换 Windows 虚拟机出现的错误信息” 相似的错误信息会被显示。
  3. 把 guest 工具程序 ISO 上传到 ISO 存储域。
    请注意,转换的过程并不需要 guest 工具程序 ISO。但是,我们推荐所有运行在 Red Hat Enterprise Virtualization 中的 Windows 虚拟机都使用它。Red Hat Enterprise Virtualization Manager 会在转换过程完成后在使用 guest 工具程序的虚拟机上安装红帽的 Windows 启动程序。请参阅 第 7.2.2 节 “Windows 虚拟机的配置改变” 来获得更详细的相关信息。
    按照以下方法找到并上传 guest 工具程序 ISO:
    1. 找到 guest 工具程序 ISO。
      guest 工具程序 IOS 以 rhev-guest-tools-iso.rpm 的形式在红帽客户门户网站中提供,这个 RPM 文件会在 Red Hat Enterprise Virtualization Manager 中被安装。当 Red Hat Enterprise Virtualization Manager 安装完成后,guest 工具程序 ISO 将位于 /usr/share/rhev-guest-tools-iso/rhev-tools-setup.iso
    2. 上传 guest 工具程序 ISO。
      使用 ISO uploader 把 guest 工具程序 ISO 上传到 ISO 存储域。
      请参阅 Red Hat Enterprise Virtualization 管理指南中的相关章节来获得更多信息。

4.3.1.3. 为转换一个本地 Xen 虚拟机做准备

以下步骤适用于对运行在原来使用 Xen 然后被更新为使用 KVM 的主机上的虚拟机进行转换。转换直接从一个运行 libvirt/Xen 实例中导入的 Xen 虚拟机时不需要这个步骤。

过程 4.5. 为转换一个本地 Xen 虚拟机做准备

  • 获得虚拟机的 XML。
    virt-v2v 使用一个 libvirt 域表述(XML 文件)来决定虚拟机的当前配置(包括它的存储位置)。在开始进行转换前,使用以下命令从运行虚拟机的主机上获得 XML:
    virsh dumpxml guest_name > guest_name.xml
    Copy to Clipboard Toggle word wrap
    libvirt 需要连接到运行 Xen 的虚拟机监控程序后才能获得它的元数据,因此获得 XML 的过程会需要一个 Xen 内核。转换虚拟机的过程已经针对 KVM 进行了优化,所以用户可以在运行 Xen 内核时获得域数据(XML),然后再使用一个 KVM 内核进行转换。这比在运行 Xen 内核的系统上直接进行转换更高效。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat