Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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

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

重要

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
    如果您在没有安装 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.
  2. 在运行 virt-v2v 的主机上安装 virtio-win 软件包。
    这个软件包为 Windows 虚拟机提供了准虚拟化块设备和网络的驱动。virtio-win 软件包由 RHEL V2VWIN (v. 6 for 64-bit x86_64) 频道提供。请确认您的系统订阅到这个频道后以 root 身份运行以下命令:
    yum install virtio-win
    如果您在没有安装 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
    libvirt 需要连接到运行 Xen 的虚拟机监控程序后才能获得它的元数据,因此获得 XML 的过程会需要一个 Xen 内核。转换虚拟机的过程已经针对 KVM 进行了优化,所以用户可以在运行 Xen 内核时获得域数据(XML),然后再使用一个 KVM 内核进行转换。这比在运行 Xen 内核的系统上直接进行转换更高效。