Red Hat Training

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

V2V 指南

Red Hat Enterprise Linux 6

使用 virt-v2v 导入虚拟机

Dayle Parker

Red Hat Engineering Content Services

Laura Novich

Red Hat Engineering Content Services

Laura Bailey

Red Hat Engineering Content Services

Tim Hildred

Red Hat Engineering Content Services

David Jorm

Red Hat Engineering Content Services

摘要

本指南介绍了如果把使用其它虚拟机监测程序(hypervisor)的虚拟机导入到 Red Hat Enterprise Virtualization 或由 libvirt 管理的 KVM 中。

第 1 章 V2V 介绍

V2V 代表了把虚拟机从一个虚拟平台导入到另外一个虚拟平台的过程(V2V 是英文 virtual to virtual 的缩写)。Red Hat Enterprise Virtualization 和 Red Hat Enterprise Linux 通过使用 virt-v2v 命令提供了进行 V2V 操作的功能。

1.1. 什么是 virt-v2v?

使用 virt-v2v 命令,可以把在其它虚拟机监控程序(hypervisor)上运行的虚拟机进行转换,从而可以在 Red Hat Enterprise Virtualization 或由 libvirt 管理的 KVM 上运行。当前,virt-v2v 可以转换在 Xen、KVM 和 VMware ESX / ESX(i) 上运行的 Red Hat Enterprise Linux 虚拟机和 Windows 虚拟机。在可能的情况下,virt-v2v 会在被转换的虚拟机上启用准虚拟化(virtio)驱动。
virt-v2v 支持使用以下操作系统的虚拟机:

支持的虚拟机操作系统:

  • Red Hat Enterprise Linux 3.9
  • Red Hat Enterprise Linux 4
  • Red Hat Enterprise Linux 5
  • Red Hat Enterprise Linux 6
  • Windows XP
  • Windows Vista
  • Windows 7
  • Windows Server 2003
  • Windows Server 2008
virt-v2v 支持以上列出的操作系统的所有子版本。
virt-v2v 支持以下虚拟机监控程序作为源系统:

支持的虚拟机监控程序源系统:

除非特别声明,virt-v2v 支持以下虚拟机监控程序的子版本作为源系统:
  • Xen — 红帽发行的所有版本
  • KVM — 红帽发行的所有版本
  • VMware ESX / ESX(i) — 版本 3.5、4.0、4.1、5.0、5.1

1.2. 关于本指南

本指南介绍了如果把使用其它虚拟机监测程序(hypervisor)的虚拟机导入到 Red Hat Enterprise Virtualization 或由 libvirt 管理的 KVM 中。

1.2.1. 本指南针对的读者

本指南所针对的读者是使用 Red Hat Enterprise Virtualization 或 Red Hat Enterprise Linux 来管理虚拟环境的系统管理员。这些系统管理员需要具有丰富的系统管理经验(最好有管理虚拟机数据中心的经验)。本指南不适合初级用户阅读。

1.2.2. Red Hat Enterprise Virtualization

Red Hat Enterprise Virtualization 平台是一个功能丰富的虚拟化管理解决方案,它完全集成了虚拟机的管理功能。它基于领先的开源虚拟化平台,提供了出众的技术能力以及虚拟环境的可扩充性。

1.3. 更多信息

红帽对多个不同的虚拟化产品提供了丰富的文档,与 Red Hat Enterprise Linux 以及它们内建的虚拟化产品相关的文档包括:
  • Red Hat Enterprise Linux — Virtualization Getting Started Guide:这个文档包括了对虚拟化概念、优点和工具的介绍,并包括了对 Red Hat virtualization 文档和产品的介绍信息。
  • Red Hat Enterprise Linux — Virtualization Host Configuration and Guest Installation Guide:这个文档包括了在虚拟主机上安装虚拟化软件以及配置虚拟机的信息。
  • Red Hat Enterprise Linux — Virtualization Administration Guide:这个文档包括了使用 virt-manager 和 virsh 作为主配置工具来管理主机、网络、存储和客户端系统(虚拟机)的信息。它还包括了与 libvirt 和 QEMU 相关的参考信息,以及进行故障排除的信息。
  • Red Hat Enterprise Linux — Virtualization Security Guide:这个文档包括了红帽所提供的虚拟化安全技术的信息。另外,它还包括了在虚拟化环境中推荐使用的主机、虚拟机、共享基础架构和资源的安全解决方案。
  • Red Hat Enterprise Linux — Virtualization Tuning and Optimization Guide:这个文档包括了与优化虚拟环境性能相关的信息。
  • Red Hat Enterprise Linux — V2V Guide:这个文档(您现在阅读的文档)介绍了如何把 KVM、Xen 和 VMware ESX/ESX(i) 上运行的虚拟机导入到 Red Hat Enterprise Virtualization 和 libvirt 管理的 KVM 上的信息。
Red Hat Enterprise Virtualization 文档套件提供了和安装、应用程序开发、配置和使用 Red Hat Enterprise Virtualization 相关的信息。
  • Red Hat Enterprise Virtualization — 安装指南:这个文档包括了如何准备并设置 Red Hat Enterprise Virtualization 环境,以及如何把 Red Hat Enterprise Virtualization 环境升级到最新版本的信息。它还包括了如何设置虚拟机监测程序以及对 Red Hat Enterprise Virtualization 环境进行初始配置的信息。
  • Red Hat Enterprise Virtualization — 管理指南:这个文档包括了在初始配置后,如果配置和管理一个 Red Hat Enterprise Virtualization 环境的信息。它介绍了如何在虚拟环境中添加虚拟主机、存储域和外部供应商,以及如何管理资源(如虚拟机、虚拟磁盘、模板)、对系统进行备份和恢复的信息。
  • Red Hat Enterprise Virtualization — 用户指南:这个文档包括了如何使用 Red Hat Enterprise Virtualization 环境中的用户门户的信息。它介绍了用户门户中的“基本”和“扩展”标签页的信息,并介绍了如何创建并使用虚拟机和模板、如何对资源进行监控的信息。
  • Red Hat Enterprise Virtualization — 技术指南:这个文档介绍了如何使用Red Hat Enterprise Virtualization 的 REST API、Python 和 Java 软件开发套件、命令行工具的信息。它同时还包括了对 Red Hat Enterprise Virtualization 所基于的虚拟技术概念的信息。
  • Red Hat Enterprise Virtualization — Manager 发行注记:这个文档包括了与 Red Hat Enterprise Virtualization Manager 最新发行版本相关的信息。
  • Red Hat Enterprise Virtualization — Technical Notes:这个文档列出了 Red Hat Enterprise Virtualization 最新发行版本和以前的发现版本中的不同。

注意

以上所有文档都可以从红帽客户门户网站(Red Hat Customer Portal)中获得:https://access.redhat.com/documentation/en-US/

第 2 章 安装 virt-v2v

virt-v2v 需要从一个 Red Hat Enterprise Linux 64 位主机上运行,并需要在主机上安装 virt-v2v

过程 2.1. 安装 virt-v2v

  1. 在红帽客户门户网站(Red Hat Customer Portal)上订阅 virt-v2v 频道

    virt-v2v 由红帽客户门户网站中的 Red Hat Enterprise Linux Server (v.6 for 64-bit x86_64)Red Hat Enterprise Linux Workstation (v.6 for x86_64) 频道提供。请在安装 virt-v2v 前把您的系统订阅到相应的频道。

    注意

    Red Hat Network Classic(RHN)现在已经不再使用,用户需要使用红帽 Subscription Manager 进行注册。如需了解更多信息,请参阅 https://access.redhat.com/rhn-to-rhsm
  2. 安装所需的先决条件软件

    • 在转换 Windows 虚拟机前,需要先安装 libguestfs-winsupport 软件包和 virtio-win 软件包。这些软件包提供了对 NTFS 的支持,以及 Windows 准虚拟化(para-virtualized)块设备和网络的驱动。
    • 如果您试图转换使用 NTFS 却没有安装 libguestfs-winsupport 软件包的虚拟机,转换操作将会失败。
    • 如果您试图转换没有安装 virtio-win 软件包的 Windows 虚拟机,转换操作将会失败。
    Red Hat Enterprise Linux Server 6 的 libguestfs-winsupport 软件包可以通过 Red Hat Enterprise Linux Server V2V Tools for Windows (v. 6) 频道获得;virtio-win 软件包可以通过 Red Hat Enterprise Linux Server Supplementary (v. 6) 频道获得。要安装这些软件包,请确认您的系统有订阅这两个频道的权限,并以 root 的身份运行以下命令:
    # subscription-manager repos --enable rhel-6-server-v2vwin-1-rpms --enable rhel-6-server-supplementary-rpms
  3. 安装 virt-v2v 软件包

    以 root 身份运行以下命令:
    yum install virt-v2v
    virt-v2v 现在已经被安装,并可以在您的系统上使用。

第 3 章 为在由 libvirt 管理的 KVM 上运行转换虚拟机

virt-v2v 可以转换虚拟机来在 Red Hat Enterprise Linux(使用 libvirt 管理的 KVM)上运行。运行在 Xen、KVM、VMware ESX / ESX(i) 和 Hyper-V 环境中的虚拟机都可以被转换。Red Hat Enterprise Linux Virtualization 管理指南 中包括了对 libvirtvirsh 命令的介绍,您也可以使用 man virsh 命令来获得相关的信息。

3.1. 介绍

virt-v2v 命令可以对运行在其它虚拟机管理程序上的虚拟机进行转换来在由 libvirt 管理的 KVM 上运行。virt-v2v 支持转换运行以下操作系统的虚拟机:
  • Red Hat Enterprise Linux 3.9
  • Red Hat Enterprise Linux 4
  • Red Hat Enterprise Linux 5
  • Red Hat Enterprise Linux 6
  • Windows XP
  • Windows Vista
  • Windows 7
  • Windows Server 2003
  • Windows Server 2008
以下虚拟机监控程序被支持:
  • KVM
  • libvirt 管理的 Xen
  • VMware ESX / ESX(i) - 版本 3.5、4.0、4.1、5.0、5.1
在可能的情况下,virt-v2v 命令会在被转换的虚拟机上启用准虚拟化(virtio)驱动。
virt-v2v 由红帽客户门户网站中的 Red Hat Enterprise Linux Server (v.6 for 64-bit x86_64)Red Hat Enterprise Linux Workstation (v.6 for x86_64) 频道提供。
virt-v2v 工具程序需要有主机的 root 访问权限。
Red Hat Enterprise Linux 6 开始支持的 virt-v2v 新功能包括:
  • 虽然 -op-osd 命令行选项仍然被支持,但是现在我们倾向使用 -os 来替代它们。在使用这两个选项时,不会出现警告信息。
  • -of 命令行选项可以指定目标存储所使用的文件格式:rawqcow2。使用这个功能可以把虚拟机存储格式从 raw 转换为 qcow2,或把 qcow2 转换为 raw。
  • -oa 命令行选项可以指定目标存储所使用的分配策略:sparsepreallocated。使用这个功能可以在 sparse 和 preallocated 间进行转换,因此,现在可以支持 sparse 卷。
  • 现在的配置文件可以包括目标配置集,它指定了模板的存储位置、输出格式和分配策略。因此,用户可以通过使用 --profile<foo> 来替代 -os<a> -op<b> -oa<oc>
  • 支持转换 Windows 虚拟机。
请参阅 virt-v2v man 页来获得与功能相关的详细信息。
要从红帽客户门户网站安装 virt-v2v,请确认系统已经订阅了所需的频道,然后运行:
# yum install virt-v2v

3.2. 为转换虚拟机做准备

virt-v2v 命令对运行在其它虚拟机管理程序上的虚拟机进行转换来在由 libvirt 管理的 KVM 上运行。它会为转换的虚拟机自动创建一个 libvirt 域。
转换一个虚拟机

图 3.1. 转换一个虚拟机

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

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

  1. 创建一个本地存储域来处理数据存储。
    virt-v2v 会在虚拟机导入的过程中把虚拟机的存储复制到一个本地定义的 libvirt 存储池中。这个存储池可以使用任何 libvirt 工具创建,并可以是任何类型。最简单的方法是使用 virt-manager 创建一个新存储池。请参阅 Red Hat Enterprise Linux Virtualization 管理指南来获得更多使用 virt-managervirsh 创建存储池的信息。
  2. 创建本地网络接口
    本地机器需要有适当的网络设备(通常是一个网桥)来为被转换的虚拟机进行网络连接。 这个网桥可以使用主机上的标准工具进行创建。从 libvirt 版本 0.8.3 开始,virt-manager 也可以创建和管理网桥。如需了解更多相关信息,请参阅 Red Hat Enterprise Linux Virtualization Host Configuration and Guest Installation GuideRed Hat Enterprise Linux Virtualization 管理指南
  3. virt-v2v.conf 中指定网络映射。这一步是可选的,多数情况下都不需要它。
    如果您的虚拟机有多个网络接口,则需要编辑 /etc/virt-v2v.conf 来指定所有网络接口的映射信息。您可以使用 -f 参数来指定另外一个 virt-v2v.conf 文件。
    如果您的虚拟机只有一个网络接口,则只需要使用 --network--bridge 参数,而不需要修改 virt-v2v.conf
  4. virt-v2v.conf 中为转换创建一个配置集。
    这一步是可选的。配置集指定了转换的方法、存储配置、输出格式和分配策略。当定义了一个配置集后,就可以使用 --profile 调用配置集,而不需要再单独提供 -o-os-of-oa 参数。请参阅 virt-v2v.conf(5) 来获得更详细的信息。

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

在转换一个运行 Linux 的虚拟机前,请确认以下步骤已经完成。

过程 3.2. 为转换一个运行 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 “缺少所需软件错误” 相似的错误信息。

    例 3.1. 缺少所需软件错误

    virt-v2v: Installation failed because the following files referenced in the configuration file are required, but missing:
    rhel/6/kernel-2.6.32-128.el6.x86_64.rpm
    rhel/6/ecryptfs-utils-82-6.el6.x86_64.rpm
    rhel/6/ecryptfs-utils-82-6.el6.i686.rpm
    
  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

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

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

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

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

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

重要

virt-v2v 不支持对 Windows 恢复控制台(Recovery Console) 的转换。如果一个虚拟机安装了恢复控制台,并且 VirtIO 在转换过程中被启用,引导到恢复控制台将会导致一个错误。
Windows XP x86 不支持 VirtIO 系统上的 Windows 恢复控制台。但是,Windows XP AMD64 和 Windows 2003(x86 和 AMD64)系统支持它。用户可以在虚拟机转换完成后重新安装恢复控制台来正常使用它。这个重新安装的过程与初始安装的过程相同,用户也不需要先删除恢复控制台后再安装它。
在转换一个运行 Windows 的虚拟机前,请确认以下步骤已经完成。
  1. 在运行 virt-v2v 的主机上安装 libguestfs-winsupport 软件包。这个软件包提供了对 NTFS(许多 Windows 系统都需要使用它)的支持。libguestfs-winsupport 软件包由 RHEL V2VWIN (v. 6 for 64-bit x86_64) 频道提供。请确认您的系统订阅到这个频道后以 root 身份运行以下命令:
    yum install libguestfs-winsupport
    如果您在没有安装 libguestfs-winsupport 软件包的情况下转换使用 NTFS 的虚拟机,这个转换过程将失败。与 例 3.2 “在没有安装 libguestfs-winsupport 的情况下转换 Windows 虚拟机出现的错误信息” 相似的错误信息将会被显示。

    例 3.2. 在没有安装 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.3. 在没有安装 virtio-win 的情况下转换 Windows 虚拟机出现的错误信息

    virt-v2v: Installation failed because the following files referenced in the configuration file are required, but missing: /usr/share/virtio-win/drivers/i386/Win2008

注意

当对运行 Windows 的虚拟机进行转换输出到 Red Hat Enterprise Virtualization 时,Red Hat Enterprise Virtualization Manager 会对转换后的虚拟机映像进行处理来安装更新的驱动。请参阅 第 7.2.2 节 “Windows 虚拟机的配置改变” 来获得相关的详细信息。当对运行 Windows 的虚拟机进行转换输出到 libvirt 时,不需要这一步。

3.3. 转换一个虚拟机

在转换主机的准备工作都完成后,使用 virt-v2v 命令来执行实际的转换过程。本节提供了实际转换虚拟机的步骤,以及 virt-v2v 的命令语法。
请注意,虚拟机转换过程需要消耗大量资源,并需要对虚拟机的整个磁盘映像进行复制。在一个普通的环境中,转换一个虚拟机通常会需要 5 到 10 分钟来完成。在 例 3.4 “典型的 virt-v2v 转换时间” 中,一个带有 8GB 磁盘的虚拟机通过 SSH 在一个 1GigE 的网络环境中进行转换:

例 3.4. 典型的 virt-v2v 转换时间

win2k3r2-pv-32.img: 100% [===========================================]D
0h02m57s
virt-v2v: win2k3r2-pv-32 configured with virtio drivers.
需要被复制的磁盘大小是决定转换过程用时的主要因素。在普通硬件设备环境中转换一个带有小于 20GB 磁盘的虚拟机的过程通常会在 10 分钟内完成。

3.3.1. 使用 virt-v2v 转换一个本地虚拟机

virt-v2v 命令可以对运行在其它虚拟机管理程序上的虚拟机进行转换来在由 libvirt 管理的 KVM 上运行。它的命令语法是:
virt-v2v -i libvirtxml -op pool --bridge bridge_name guest_name.xml
virt-v2v -op pool --network netname guest_name
virt-v2v -ic esx://esx.example.com/?no_verify=1 -op pool --bridge bridge_name guest_name
如需了解 virt-v2v 的参数列表,请参阅 第 7 章 参考信息

3.3.2. 转换一个远程 KVM 虚拟机

KVM 虚拟机可以通过使用 SSH 被远程转换。请确认运行虚拟机的主机可以通过 SSH 被访问。
运行以下命令转换虚拟机:
virt-v2v -ic qemu+ssh://root@vmhost.example.com/system -op pool --bridge bridge_name guest_name
其中,vmhost.example.com 是运行虚拟机的主机;pool 是用来保存映像的本地存储池;bridge_name 是连接到被转换虚拟机的网络的本地逻辑网桥;guest_name 是 Xen 虚拟机的名称。
如果您的虚拟机只有一个网络接口,您也可以使用 --network 参数连接到一个本地管理的网络上。如果您的虚拟机有多个网络接口,编辑 /etc/virt-v2v.conf 来指定所有网络接口的映射信息。
如果您的虚拟机使用 Red Hat Enterprise Linux 4 或不支持 KVM VirtIO 驱动的 Red Hat Enterprise Linux 5,virt-v2v 将会在转换过程中试图安装一个新内核。您可以在转换前把内核升级到支持 VirtIO 的 Red Hat Enterprise Linux 6。

注意

当从 KVM 进行转换时,virt-v2v 需要源虚拟机的映像存在于一个存储池中。如果虚拟机没有存在于一个存储池中,您需要创建一个。

3.3.3. 转换一个本地 Xen 虚拟机

请确认虚拟机的 XML 在本地可以获得,XML 中指定的存储也存在于本地的相同目录中。
运行以下命令从 XML 文件转换虚拟机:
virt-v2v -i libvirtxml -op pool --bridge bridge_name guest_name.xml
其中,pool 是保存映像的本地存储池;bridge_name 是连接到被转换虚拟机的网络的本地逻辑网桥;guest_name.xml 是到虚拟机导出的 XML 的路径。
如果您的虚拟机只有一个网络接口,您也可以使用 --network 参数连接到一个本地管理的网络上。如果您的虚拟机有多个网络接口,编辑 /etc/virt-v2v.conf 来指定所有网络接口的映射信息。
如果您的虚拟机使用一个 Xen 准虚拟化内核(可能名为 kernel-xenkernel-xenU),virt-v2v 将会在转换的过程中试图安装一个新内核。为了避免这一步,您可以在进行转换前除了安装 Xen 内核外还安装一个普通内核(它的名字中没有到 hypervisor 的引用)。您不能把这个新安装的内核作为默认内核,否则 Xen 将无法被引导。virt-v2v 将会在转换过程中把它作为默认内核。

注意

当从 Xen 进行转换时,virt-v2v 需要源虚拟机的映像存在于一个存储池中。如果虚拟机没有存在于一个存储池中,您需要创建一个。请联系红帽技术支持来协助您创建适当的存储池。

注意

当前,导入 Citrix Xen 虚拟机到 KVM 或 Red Hat Enterprise Virtualization 中运行存在一个已知的问题。请参阅 https://access.redhat.com/solutions/54076 来获得详细的相关信息。

3.3.4. 转换一个远程 Xen 虚拟机

Xen 虚拟机可以通过使用 SSH 被远程转换。请确认运行虚拟机的主机可以通过 SSH 被访问。
运行以下命令转换虚拟机:
virt-v2v -ic qemu+ssh://root@vmhost.example.com/system -op pool --bridge bridge_name  guest_name
其中,vmhost.example.com 是运行虚拟机的主机;pool 是用来保存映像的本地存储池;bridge_name 是连接到被转换虚拟机的网络的本地逻辑网桥;guest_name 是 Xen 虚拟机的名称。
如果您的虚拟机只有一个网络接口,您也可以使用 --network 参数连接到一个本地管理的网络上。如果您的虚拟机有多个网络接口,编辑 /etc/virt-v2v.conf 来指定所有网络接口的映射信息。
如果您的虚拟机使用一个 Xen 准虚拟化内核(可能名为 kernel-xenkernel-xenU),virt-v2v 将会在转换的过程中试图安装一个新内核。为了避免这一步,您可以在进行转换前除了安装 Xen 内核外还安装一个普通内核(它的名字中没有到 hypervisor 的引用)。您不能把这个新安装的内核作为默认内核,否则 Xen 将无法被引导。virt-v2v 将会在转换过程中把它作为默认内核。

注意

当从 Xen 进行转换时,virt-v2v 需要源虚拟机的映像存在于一个存储池中。如果虚拟机没有存在于一个存储池中,您需要创建一个。请联系红帽技术支持来协助您创建适当的存储池。

3.3.5. 转换一个 VMware ESX / ESX(i) 虚拟机

重要

当从 VMware ESX / ESX(i) 转换虚拟机时,请确认虚拟机上没有安装 VMware Tools(如果已安装 VMware Tools,需要在转换前卸载它)。如果转换安装了 VMware Tools 的虚拟机,它将无法正常工作。
确认在运行 v2v 前已经停止了虚拟机。
运行以下命令转换虚拟机:
virt-v2v -ic esx://esx.example.com/ -op pool --bridge bridge_name guest_name
其中,esx.example.com 是 VMware ESX / ESX(i) 服务器;pool 是用来保存映像的本地存储池;bridge_name 是连接到被转换虚拟机的网络的本地逻辑网桥;guest_name 是虚拟机的名称。
如果您的虚拟机只有一个网络接口,您也可以使用 --network 参数连接到一个本地管理的网络上。如果您的虚拟机有多个网络接口,编辑 /etc/virt-v2v.conf 来指定所有网络接口的映射信息。

3.3.5.1. 到 ESX / ESX(i) 服务器的用户身份验证

到 ESX / ESX(i) 服务器的连接需要进行用户身份验证。virt-v2v 支持使用密码进行验证。它会从 $HOME/.netrc 中读出密码,这个文件的格式在 netrc(5) man 页中有所介绍。例如:
machine esx.example.com login root password s3cr3t

注意

.netrc 文件的权限设置需要是 0600,这样才可以被 virt-v2v 读取。

3.3.5.2. 使用无效的证书连接 ESX / ESX(i) 服务器

在非生产环境中,ESX / ESX(i) 服务器可能会使用一个无效的证书(如一个自签发的证书)。在这种情况下,证书检查的功能可以被禁用(在连接 URI 中使用 '?no_verify=1')。例如:
... -ic esx://esx.example.com/?no_verify=1 ...

3.3.6. 转换一个运行 Windows 的虚拟机

这个例子展示了转换一个本地运行于由 libvirt 管理的 Xen 上的 Windows 虚拟机,并输出到 Red Hat Enterprise Virtualization。请确认虚拟机的 XML 在本地可以获得,XML 中指定的存储也存在于本地的相同目录中。
运行以下命令从 XML 文件转换虚拟机:
virt-v2v -i libvirtxml -o rhev -osd storage.example.com:/exportdomain --network rhevm guest_name.xml
其中,guest_name.xml 是到虚拟机导出的 XML 的路径;storage.example.com:/exportdomain 是导出存储域。
如果您的虚拟机只有一个网络接口,您也可以使用 --network 参数连接到一个本地管理的网络上。如果您的虚拟机有多个网络接口,编辑 /etc/virt-v2v.conf 来指定所有网络接口的映射信息。
如果您的虚拟机使用一个 Xen 准虚拟化内核(可能名为 kernel-xenkernel-xenU),virt-v2v 将会在转换的过程中试图安装一个新内核。为了避免这一步,您可以在进行转换前除了安装 Xen 内核外还安装一个普通内核(它的名字中没有到 hypervisor 的引用)。您不能把这个新安装的内核作为默认内核,否则 Xen 将无法被引导。virt-v2v 将会在转换过程中把它作为默认内核。

3.4. 运行转换的虚拟机

在转换过程成功完成后,virt-v2v 会为转换的虚拟机创建一个新的 libvirt 域(与被转换虚拟机的原始名同名)。它可以使用 libvirt 工具(如 virt-manager)启动。

注意

目前,virt-v2v 还不能重新配置虚拟机的网络配置。如果被转换的虚拟机没有连接到它们原来的相同子网中,这个虚拟机的网络配置就可能需要被手工更新。

第 4 章 为在 Red Hat Enterprise Virtualization 上运行转换虚拟机

virt-v2v 可以转换 Xen, KVM and VMware ESX / ESX(i) 环境中的虚拟机来在 Red Hat Enterprise Virtualization 上运行。在对虚拟机转换前,您需要把一个导出存储域附加到正在使用的 Red Hat Enterprise Virtualization 数据中心上。第 4.2 节 “附加一个导出存储域” 介绍了附加导出存储域的过程。如需了解更多关于导出存储域的信息,请参阅 Red Hat Enterprise Virtualization 管理指南

4.1. 支持的转换存储输出格式

当为在 Red Hat Enterprise Virtualization 上运行而转换虚拟机时,您需要特别注意一点:不是所有的存储格式和分配策略都被支持。具体所支持的存储格式和分配策略是由被转换的虚拟机要运行在的 Red Hat Enterprise Virtualization 数据中心的数据存储域所决定的(例如,数据存储域是使用块存储(FC 或 iSCSI)还是使用文件存储)。另外,virt-v2v 命令会把数据写到一个导出存储域,它需要是 NFS。

注意

把虚拟机成功导入到 Red Hat Enterprise Virtualization 的一个重要因素是使用正确的数据域类型。virt-v2v 无法检测数据中心的类型,用户需要进行手工检查。

表 4.1. 分配策略:预分配(preallocated)

数据域类型存储格式是否支持
NFSraw支持
qcow2不支持
FC/iSCSIraw支持
qcow2不支持

表 4.2. 分配策略:稀疏(sparse)

数据域类型存储格式是否支持
NFSraw支持
qcow2支持
FC/iSCSIraw不支持
qcow2支持
除非使用 -of-oa 参数指定了不同的数据格式和分配策略,被 virt-v2v 所转换的虚拟机的数据格式和分配策略会和转换前的相同。如果需要把使用稀疏分配的虚拟机进行转换来在 FC 或 iSCSI 数据中心运行时,它的存储格式需要被转换为 qcow2(在运行 virt-v2v 命令时使用 -of qcow2 -oa sparse 参数)。请注意,在 raw 和 qcow2 格式间进行转换需要消耗大量资源,整个虚拟机转换过程所需的时间可能需要加倍。

重要

虽然 virt-v2v 可以向预分配 qcow2 存储中写数据,但是 Red Hat Enterprise Virtualization 并不支持这种格式。把它导入到 Red Hat Enterprise Virtualization 的过程将失败。

4.2. 附加一个导出存储域

为在 Red Hat Enterprise Virtualization 上运行转换转换虚拟机前,您需要为要使用的 Red Hat Enterprise Virtualization 数据中心附加一个导出存储域。
通过一个附加到数据中心的存储域,可以为这个数据中心导入其它数据中心中的虚拟机,或把这个数据中心中的虚拟机导出到其它数据中心中。导出存储域还可以被用来备份虚拟机和模板。

注意

一个导出域只能同时被附加到一个数据中心。

过程 4.1. 附加一个导出存储域

  1. 登录到 Red Hat Enterprise Virtualization 管理门户(Administration Portal)。点数据中心标签页。
    选择导出存储域需要被附加到的数据中心。
  2. 在详情框中选择存储标签页。
  3. 附加导出添加保存映像文件的存储位置。
    附加一个导出域

    图 4.1. 附加一个导出域

  4. 附加导出域对话框会被显示。从列表中选择所需的导出域。
  5. 确定按钮。新的导出存储会在详情框中的存储标签页中显示,它的状态是 Locked,然后变为 Inactive
  6. 在详情框中的存储标签页中选择新添加的导出存储域,点激活按钮。
  7. 经过一段时间后,所选的导出域会被激活,它的状态变为 Active

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 内核的系统上直接进行转换更高效。

4.3.2. 转换一个虚拟机

在转换主机的准备工作都完成后,使用 virt-v2v 命令来实际执行转换过程。本节提供了实际转换虚拟机的步骤,以及 virt-v2v 的命令语法。
请注意,虚拟机转换过程需要消耗大量资源,并需要对虚拟机的整个磁盘映像进行复制。在一个普通的环境中,转换一个虚拟机通常会需要 5 到 10 分钟来完成。在 例 4.2 “典型的 virt-v2v 转换时间” 中,一个带有 8GB 磁盘的虚拟机通过 SSH 在一个 1GigE 的网络环境中进行转换:

例 4.2. 典型的 virt-v2v 转换时间

win2k3r2-pv-32.img: 100% [===========================================]D
0h02m57s
virt-v2v: win2k3r2-pv-32 configured with virtio drivers.
需要被复制的磁盘大小是决定转换过程用时的主要因素。在普通硬件设备环境中转换一个带有小于 20GB 磁盘的虚拟机的过程通常会在 10 分钟内完成。

4.3.2.1. virt-v2v

virt-v2v 命令可以对运行在其它虚拟机管理程序上的虚拟机进行转换来在 Red Hat Enterprise Virtualization 上运行。它的命令语法是:
virt-v2v -i libvirtxml -o rhev -os storage.example.com:/exportdomain --network rhevm guest_name.xml
virt-v2v -o rhev -os storage.example.com:/exportdomain --network rhevm guest_name
virt-v2v -ic esx://esx.example.com/?no_verify=1 -o rhev -os storage.example.com:/exportdomain --network rhevm guest_name
第 7.1 节 “virt-v2v 参数” 中包括了 virt-v2v 可以使用的完整参数介绍。

重要

当前,virt-v2v 还不支持对带有多于 4 个 IDE 磁盘的虚拟机进行转换来在 Red Hat Enterprise Virtualization 中运行。转换带有 5 个或更多磁盘的虚拟机的操作将会失败。

4.3.2.2. 转换一个本地 Xen 虚拟机

请确认虚拟机的 XML 在本地可以获得,XML 中指定的存储也存在于本地的相同目录中。
运行以下命令从 XML 文件转换虚拟机:
virt-v2v -i libvirtxml -o rhev -os storage.example.com:/exportdomain --network rhevm guest_name.xml
其中,storage.example.com:/exportdomain 是输出存储域;rhevm 是被转换的虚拟机网络连接到的本地管理网络;guest_name.xml 是到虚拟机输出的 xml 的路径。
如果您的虚拟机只有一个网络接口,您也可以使用 --bridge 参数连接到一个本地管理的网络上。如果您的虚拟机有多个网络接口,编辑 /etc/virt-v2v.conf 来指定所有网络接口的映射信息。
要转换运行于 Xen 的虚拟机,执行以下命令:
virt-v2v -ic xen:/// -o rhev -os storage.example.com:/exportdomain --network rhevm guest_name
其中,storage.example.com:/exportdomain 是输出存储域;rhevm 是被转换的虚拟机网络连接到的本地管理网络;guest_name 是 Xen 虚拟机的名称。
如果您的虚拟机只有一个网络接口,您也可以使用 --bridge 参数连接到一个本地管理的网络上。如果您的虚拟机有多个网络接口,编辑 /etc/virt-v2v.conf 来指定所有网络接口的映射信息。
如果您的虚拟机使用一个 Xen 准虚拟化内核(可能名为 kernel-xenkernel-xenU),virt-v2v 将会在转换的过程中试图安装一个新内核。为了避免这一步,您可以在进行转换前除了安装 Xen 内核外还安装一个普通内核(它的名字中没有到 hypervisor 的引用)。您不能把这个新安装的内核作为默认内核,否则 Xen 将无法被引导。virt-v2v 将会在转换过程中把它作为默认内核。

4.3.2.3. 转换一个远程 Xen 虚拟机

Xen 虚拟机可以通过使用 SSH 被远程转换。请确认运行虚拟机的主机可以通过 SSH 被访问。对于一个带有多个磁盘的虚拟机,每个虚拟磁盘的传输都需要一个独立的 SSH 会话连接。

重要

我们推荐在进行虚拟机转换前,为用户身份验证设置好 SSH 密钥。否则用户需要为每个传输的虚拟机磁盘手工输入 SSH 验证信息。如果用户没有及时手动输入验证所需的密钥,会导致 SSH 超时,进而使 virt-v2v 运行失败。这一点对于带有大磁盘的虚拟机尤其重要,因为传输大磁盘所需的时间通常都会很长。
运行以下命令转换虚拟机:
virt-v2v -o rhev -ic xen+ssh://root@vmhost.example.com -os storage.example.com:/exportdomain --network rhevm guest_name
其中,vmhost.example.com 是运行虚拟机的主机;storage.example.com:/exportdomain 是输出存储域;rhevm 是被转换的虚拟机网络连接到的本地管理网络;guest_name 是 Xen 虚拟机的名称。
如果您的虚拟机只有一个网络接口,您也可以使用 --bridge 参数连接到一个本地管理的网络上。如果您的虚拟机有多个网络接口,编辑 /etc/virt-v2v.conf 来指定所有网络接口的映射信息。
如果您的虚拟机使用一个 Xen 准虚拟化内核(可能名为 kernel-xenkernel-xenU),virt-v2v 将会在转换的过程中试图安装一个新内核。为了避免这一步,您可以在进行转换前除了安装 Xen 内核外还安装一个普通内核(它的名字中没有到 hypervisor 的引用)。您不能把这个新安装的内核作为默认内核,否则 Xen 将无法被引导。virt-v2v 将会在转换过程中把它作为默认内核。

4.3.2.4. 转换一个本地 KVM 虚拟机

采用以下步骤转换一个本地 KVM 虚拟机:

过程 4.6. 转换一个本地 KVM 虚拟机

  1. 停止虚拟机。

    1. 确认在运行 v2v 前已经停止了虚拟机。如果虚拟机运行于一个集群的 Red Hat Enterprise Linux HA 虚拟机环境中,请使用以下命令在集群节点上停止并禁用虚拟机资源:
      clusvcadm -d vm:<guest>
    2. 在停止虚拟机后,运行 virsh define <path-to-guest.xml> 把所停止的虚拟机的控制权交给 libvirt。这个命令使 virt-v2v 可以识别虚拟机,并启用它来进行转换。
  2. 转换虚拟机。

    运行以下命令转换虚拟机:
    virt-v2v -o rhev -os storage.example.com:/exportdomain --network rhevm guest_name
    其中,storage.example.com:/exportdomain 是输出存储域;rhevm 是被转换的虚拟机网络连接到的本地管理网络;guest_name 是 KVM 虚拟机的名称。
    如果您的虚拟机只有一个网络接口,您也可以使用 --bridge 参数连接到一个本地管理的网络上。如果您的虚拟机有多个网络接口,编辑 /etc/virt-v2v.conf 来指定所有网络接口的映射信息。

4.3.2.5. 转换一个远程 KVM 虚拟机

KVM 虚拟机可以通过使用 SSH 被远程转换。请确认运行虚拟机的主机可以通过 SSH 被访问,虚拟机已经在运行 v2v 操作前被停止。对于一个带有多个磁盘的虚拟机,每个虚拟磁盘的传输都需要一个独立的 SSH 会话连接。

重要

我们推荐在进行虚拟机转换前,为用户身份验证设置好 SSH 密钥。否则用户需要为每个传输的虚拟机磁盘手工输入 SSH 验证信息。如果用户没有及时手动输入验证所需的密钥,会导致 SSH 超时,进而使 virt-v2v 运行失败。这一点对于带有大磁盘的虚拟机尤其重要,因为传输大磁盘所需的时间通常都会很长。
运行以下命令转换虚拟机:
virt-v2v -ic qemu+ssh://root@kvmhost.example.com/system -o rhev -os storage.example.com:/exportdomain --network rhevm guest_name
其中,kvmhost.example.com 是运行虚拟机的主机;storage.example.com:/exportdomain 是输出存储域;rhevm 是被转换的虚拟机网络连接到的本地管理网络;guest_name 是 KVM 虚拟机的名称。
如果您的虚拟机只有一个网络接口,您也可以使用 --bridge 参数连接到一个本地管理的网络上。如果您的虚拟机有多个网络接口,编辑 /etc/virt-v2v.conf 来指定所有网络接口的映射信息。

4.3.2.6. 转换一个 VMware ESX / ESX(i) 虚拟机

重要

当从 VMware ESX / ESX(i) 转换虚拟机时,请确认虚拟机上没有安装 VMware Tools(如果已安装 VMware Tools,需要在转换前卸载它)。如果转换安装了 VMware Tools 的虚拟机,它将无法正常工作。
确认在运行 v2v 前已经停止了虚拟机。
运行以下命令转换虚拟机:
virt-v2v -ic esx://esx.example.com/ -o rhev -os storage.example.com:/exportdomain --network rhevm guest_name
其中,storage.example.com:/exportdomain 是输出存储域;rhevm 是被转换的虚拟机网络连接到的本地管理网络;guest_name 是虚拟机的名称。
如果您的虚拟机只有一个网络接口,您也可以使用 --bridge 参数连接到一个本地管理的网络上。如果您的虚拟机有多个网络接口,编辑 /etc/virt-v2v.conf 来指定所有网络接口的映射信息。
到 ESX / ESX(i) 服务器的用户身份验证

到 ESX / ESX(i) 服务器的连接需要进行用户身份验证。virt-v2v 支持使用密码进行验证。它会从 $HOME/.netrc 中读出密码,这个文件的格式在 netrc(5) 中有所介绍。例如:

machine esx.example.com login root password s3cr3t

注意

.netrc 文件的权限设置需要是 0600,这样才可以被 virt-v2v 读取。

使用无效的证书连接 ESX / ESX(i) 服务器

在非生产环境中,ESX / ESX(i) 服务器可能会使用一个无效的证书(如一个自签发的证书)。在这种情况下,证书检查的功能可以被禁用(在连接 URI 中使用 ?no_verify=1)。例如:

... -ic esx://esx.example.com/?no_verify=1 ...

4.3.3. 导入并运行转换的虚拟机

在转换过程成功完成后,virt-v2v 会把导入的虚拟机上传到指定的导出域中。执行以下步骤来导入并运行转换的虚拟机:

过程 4.7. 导入并运行转换的虚拟机

  1. 在 Red Hat Enterprise Virtualization 管理门户的存储标签页中选择导入存储域。所选的导入存储域的状态必须是 Active
  2. 在详情框中选择 VM 导入标签页来列出可以被导入的虚拟机列表。
  3. 选择一个或多个虚拟机后点导入导入虚拟机窗口将被打开。
  4. 在下拉菜单中,选择数据中心的默认存储域集群集群配额
  5. 选择 Collapse 快照来删除快照的恢复点,并包括虚拟机所基于的模板。点确认导入虚拟机。
如需了解更多关于导入虚拟机的信息,请参阅 Red Hat Enterprise Virtualization 管理指南
网络配置

目前,virt-v2v 还不能重新配置虚拟机的网络配置。如果被转换的虚拟机没有连接到它们原来的相同子网中,这个虚拟机的网络配置就可能需要被手工更新。

4.3.4. v2v 操作的自动化脚本

v2v 整个操作过程可以通过脚本被自动化,这会大大提高对大量虚拟机进行转换的效率。这个过程可以被分为两步,每一步都需要在一个单独的主机上运行.

过程 4.8. v2v 操作的自动化脚本

  1. 使用 virt-v2v 转换虚拟机,并把它们复制到导出存储域中。这一步需要在一个 Linux 主机上运行。第 4.3.2 节 “转换一个虚拟机” 介绍了这一步的详细信息。
  2. 在转换完成后,使用 Red Hat Enterprise Virtualization 管理门户从导出存储域中导入虚拟机。这一步需要在 Red Hat Enterprise Virtualization Manager 服务器上运行。
    如需了解更多关于使用 Red Hat Enterprise Virtualization 管理门户导入虚拟机的信息,请参阅 Red Hat Enterprise Virtualization 管理指南
    The Import Virtual Machine(s) wizard.

    图 4.4. 使用 Red Hat Enterprise Virtualization 管理门户导入虚拟机

    另外,还可以使用 Python SDK 或命令行来从导出存储域中导入虚拟机:
    使用 SDK 导入虚拟机:

    例 4.3. 使用 SDK 从导出存储域中导入虚拟机

    api = API(url="http(s)://...:.../api",
              username="...",
              password="...",
              filter=False,
              debug=True)
    
    
    sd = api.storagedomains.get(id="from-sd-id")
    import_candidate = sd.vms.get(id="vm-to-import")
    import_candidate.import_vm(action=params.Action(
    cluster=api.clusters.get(id="to-cluster-id"), 
    storage_domain=api.storagedomains.get(id="to-sd-id")))

    注意

    在使用 SDK 方法时,可以使用 name= 来获取或传递项。
    要通过命令行导入虚拟机,请连接到 Red Hat Enterprise Virtualization Manager 的 shell,并使用以下命令:

    例 4.4. 使用命令行从导出存储域中导入虚拟机

    action vm "vm-to-import" import_vm --storagedomain-identifier "from-sd-id" --cluster-id "to-cluster-id" --storage_domain-id "to-sd-id"

    注意

    在使用命令行方法时,可以使用 name= 来获取或传递项。

4.3.5. 对大量 v2v 操作进行脚本自动化

如果需要大量导入虚拟机,在同一个主机上运行 v2v 自动化脚本就会有很大的优势。到远程 Red Hat Enterprise Virtualization Manager 的操作可以使用 REST API 进行,这使在一个 Linux 主机上运行 v2v 自动化脚本成为可能。图 4.5 “对大量 v2v 操作进行脚本自动化” 展示了自动化脚本所进行的操作。
对大量 v2v 操作进行脚本自动化

图 4.5. 对大量 v2v 操作进行脚本自动化

图 4.5 “对大量 v2v 操作进行脚本自动化” 所示,对大量 v2v 操作进行脚本自动化包括以下步骤:
  1. 从源虚拟机监控系统上获得虚拟机的映像。
  2. 对虚拟机映像进行打包,并复制到导出存储域。
  3. 使用一个到 Red Hat Enterprise Virtualization Manager 的远程调用来通知它导入虚拟机。
  4. Manager 从导出存储域中导入虚拟机。
配置并运行大量 v2v 操作的自动化脚本:

过程 4.9. 配置并运行大量 v2v 操作的自动化脚本

  1. 确认 Red Hat Enterprise Virtualization Manager 启用了 REST API,并可以被运行 v2v 脚本的 Linux 访问。如需了解更多关于 REST API 的信息,请参阅 Red Hat Enterprise Virtualization Developer Guide
  2. 在 Linux 主机上,创建包括以下内容的 v2v.sh 文件。请确认您根据您的具体环境对脚本中的相应内容进行了修改。

    例 4.5. 单独主机的 v2v 脚本

    #!/bin/sh
    # Declare all VMs to import
    XENDOMAINS=("rhelxen" "rhel5")
    KVMDOMAINS=("rhelkvm")
    VMWAREVMS=("rhel54vmware")
    
    # Iterate through each Xen domain, performing the conversion
    for domain in ${XENDOMAINS[@]}
    do
            virt-v2v -ic xen:///localhost -o rhev -os storage.example.com:/exportdomain --network rhevm $domain
    done
    
    # Iterate through each KVM domain, performing the conversion
    for domain in ${KVMDOMAINS[@]}
    do
            virt-v2v -o rhev -os storage.example.com:/exportdomain --network rhevm $domain
    done
    
    # Iterate through each VMware VM, performing the conversion
    for vm in ${VMWAREVMS[@]}
    do
            virt-v2v -ic esx://esx.example.com/?no_verify=1 -o rhev -os storage.example.com:/exportdomain --network rhevm $vm
    done
    
    
    # Call the import VM procedure remotely on the RHEV Manager
    
    export BASE_URL='https://[rhevm-host]'
    export HTTP_USER='user@internal'
    export HTTP_PASSWORD='password'
    
    curl -o rhevm.cer http://[rhevm-host]/ca.crt
    
    # Get the export storage domains
    
    curl -X GET -H "Accept: application/xml" -u "${HTTP_USER}:${HTTP_PASSWORD}" --cacert rhevm.cer ${BASE_URL}/api/storagedomains?search=nfs_export -o exportdomain
    EXPORT_DOMAIN=`xpath exportdomain '/storage_domains/storage_domain/@id' | sed -e 's/ id=//' | sed -e 's/"//g'`
    
    # Get the datacenter
    
    curl -X GET -H "Accept: application/xml" -u "${HTTP_USER}:${HTTP_PASSWORD}" --cacert rhevm.cer ${BASE_URL}/api/datacenters?search=NFS -o dc
    DC=`xpath dc '/data_centers/data_center/@id' | sed -e 's/ id=//' | sed -e 's/"//g'`
    
    # Get the cluster
    
    curl -X GET -H "Accept: application/xml" -u "${HTTP_USER}:${HTTP_PASSWORD}" --cacert rhevm.cer ${BASE_URL}/api/clusters?search=NFS -o cluster
    CLUSTER_ELEMENT=`xpath cluster '/clusters/cluster/@id' | sed -e 's/ id=//' | sed -e 's/"//g'`
    
    # List contents of export storage domain
    
    curl -X GET -H "Accept: application/xml" -u "${HTTP_USER}:${HTTP_PASSWORD}" --cacert rhevm.cer ${BASE_URL}/api/storagedomains/${EXPORT_DOMAIN}/vms -o vms
    
    # For each vm, export
    VMS=`xpath vms '/vms/vm/actions/link[@rel="import"]/@href' | sed -e 's/ href="//g' | sed -e 's/"/ /g'`
    
    for vms in $VMS
    do 
            curl -v -u "${HTTP_USER}:${HTTP_PASSWORD}" -H "Content-type: application/xml" -d '<action><cluster><name>cluster_name</name></cluster><storage_domain><name>data_domain</name></storage_domain><overwrite>true</overwrite><discard_snapshots>true</discard_snapshots></action>' --cacert rhevm.cer ${BASE_URL}$vms
    done
    
    

    注意

    使用 POST 方法来通过 REST API 导出虚拟机。如需了解更多关于 REST API 的信息,请参阅 Red Hat Enterprise Virtualization Developer Guide
  3. 运行 v2v.sh 脚本。这可能需要几个小时才能完成转换并导入大量虚拟机的操作。

第 5 章 把物理机转换为虚拟机

本章介绍了使用红帽 Physical-to-Virtual(P2V)解决方案 - Virt P2V 把物理机转换为虚拟机的内容。
Virt P2V 由 virt-p2v-server(包括在 virt-v2v 软件包中)和 P2V client(红帽客户门户网站所提供的 rhel-6.x-p2v.iso)组成。rhel-6.x-p2v.iso 是一个基于定制 Red Hat Enterprise Linux 6 映像的可引导磁盘映像。为了把一个物理机转换为一个可以在 Red Hat Enterprise Virtualization 或由 libvirt 管理的 KVM 上运行的虚拟机,使用 rhel-6.x-p2v.iso 引导一个机器,并把它连接到一个安装了 virt-v2v 的 V2V 转换服务器来进行转换。
请注意,主机必须运行 Red Hat Enterprise Linux 6。其它主机配置不被支持。

重要

请遵循以下规则,否则可能会造成数据丢失或磁盘损坏。
  • Physical to Virtual(P2V)需要一个带有 virt-v2v-0.8.7 或更高版本的 Red Hat Enterprise Linux 6 虚拟主机。您可以使用 $ rpm -q virt-v2v 来检查 virt-v2v 的版本。
  • 请注意,您不能使用 Red Hat Enterprise Linux 5 作为转换服务器。另外,转换服务器所带的 virt-v2v 软件包的版本也不能低于 0.8.7-6.el6。
  • 对于某些版本的操作系统,把使用软件 RAID 的物理机转换为虚拟机会有一些问题。把一个在软件 RAID md 设备上引导文件系统的 Red Hat Enterprise Linux 6 物理机转换为虚拟机没有问题,但是,一个在软件 RAID md 设备上引导文件系统的 Red Hat Enterprise Linux 4 或 Red Hat Enterprise Linux 5 物理机无法被转换为虚拟机。当前,我们还没有解决这个问题的方法。

5.1. 先决条件

对于使用 P2V client 进行转换的物理机,它的硬件必须满足以下条件才可以成功引导 P2V client:
  • 必须可以通过 PXE、光驱设备(CD、DVD)或 USB 引导。
  • 最少有 512MB 内存。
  • 一个以太网连接。
  • 访问终端设备(键盘、显示器、鼠标)。
  • virt-v2v 支持的操作系统:
    • Red Hat Enterprise Linux 3.9
    • Red Hat Enterprise Linux 4
    • Red Hat Enterprise Linux 5
    • Red Hat Enterprise Linux 6
    • Windows XP
    • Windows Vista
    • Windows 7
    • Windows Server 2003
    • Windows Server 2008

5.2. 为转换物理机做准备

在使用 P2V 前,您需要准备您的转换服务器、下载并准备 rhel-6.x-p2v.iso 引导介质。如果了解更详细的信息,请参阅 Red Hat Enterprise Linux Installation Guide。请注意,i386 和 x86_64 系统使用同一个 ISO 映像。

5.2.1. 在转换服务器上安装 virt-v2v

转换服务器就是一个安装了 virt-v2v 软件包的 Red Hat Enterprise Linux 6 或更高版本的物理服务器。请根据 第 2 章 安装 virt-v2v 中的内容安装 virt-v2vvirt-v2v 的版本必须是 0.8.7-6 或更高版本)。

5.2.2. 允许 root 通过 SSH 登录

virt-v2v 安装完成后,转换服务器需要被配置来接受从 P2V client 的连接。P2V client 需要以 root 身份通过 SSH 连接到转换服务器,因此转换服务器需要允许 root 通过 SSH 登录。
允许 root 通过 SSH 登录:

  1. 以 root 的身份编辑 sshd_config 文件(/etc/ssh/sshd_config):
    nano /etc/ssh/sshd_config
  2. 在这个文件的 Authentication 数据段中添加一行 PermitRootLogin yes。这行内容可能已经存在,如果它被注释掉(使用"#"),您只需要删除 "#"。
    # Authentication:
    #LoginGraceTime 2m
    PermitRootLogin yes
    #StrictModes yes
    #MaxAuthTries 6
    #MaxSessions 10
  3. 保存修改过的 /etc/ssh/sshd_config 文件。
  4. 重启 SSH 服务器:
    service sshd restart
现在,您将可以以 root 的身份通过 SSH 连接到转换服务器。

5.2.3. 在 virt-v2v.conf 中定义一个目标配置集

现在,您将可以以 root 的身份连接到转换服务器。转换服务器需要被预先配置来指定所创建虚拟机的配置。这些配置信息包括在转换服务器的 /etc/virt-v2v.conf 文件中的目标配置集中。
virt-v2v.conf 中定义目标配置集:

  1. 以 root 身份编辑 /etc/virt-v2v.conf
    nano /etc/virt-v2v.conf
  2. 找到文件尾部,在最后一个 </virt-v2v> 前添加以下内容:
    <profile name="myrhev">
    <method>rhev</method>
    <storage format="raw" allocation="preallocated">
    nfs.share.com:/export1
    </storage>
    <network type="default">
    <network type="network" name="rhevm"/>
    </network>
    </profile>
    其中:
    • Profile Name 是目标配置集的名称。
    • Method 是最终虚拟机控制程序系统的类型(rhev 或 libvirt)。
    • Storage Format 是输出的存储格式(raw 或 qcow2)。
    • Allocation 是输出的分配格式(preallocated 或 sparse)。
    • Network type 指定了当导入到 Red Hat Enterprise Virtualization 后网络接口所连接到的网络。第一个 network type 项包括了转换前的网络配置;第二个 network type 项映射到转换后的网络配置。在以上实例中,所有检测到的网卡都被映射到名为 rhevm 的管理网络上。

    重要

    <storage format> 标签的值(在这个实例中是 "nfs.share.com:/export1")必须和 <method> 标签的值相匹配。在以上实例中,输出是 "rhev",因此与存储相关的值必须是一个已经初始化的 NFS 共享。如果输出是 libvirt,与存储格式相关的值必须是一个存在于转换服务器本地的、一个已经初始化的存储域,例如 "default"。
您现在已经创建了一个目标配置集,它定义了在 P2V 转换完成后虚拟机的配置。

5.2.4. 创建一个可引导介质

P2V 使用可引导介质来创建物理机硬盘的可引导映像,并把它发送到转换服务器来导入到虚拟机管理程序系统(hypervisor)。您需要一个可以下载 rhel-6.x-p2v.iso ISO 的红帽订阅。请根据 Red Hat Enterprise Linux Installation Guide 中的相关介绍来准备您的可引导介质。请注意,i386 和 x86_64 系统使用同一个 ISO 映像。
最新版本的 rhel-6.x-p2v.iso 可以从 https://rhn.redhat.com/rhn/channels/PackageList.do?filter_string=virt-p2v&cid=10508 获得。这个 ISO 文件将会被安装在 /usr/share/virt-p2v/
创建可引导介质:

rhel-6.x-p2v.iso 文件可以通过 3 种方式使用:作为一个可引导磁盘;作为一个 PXE 引导映像;作为一个可引导的 USB 设备。

  • 把 ISO 刻录到一个空白的 CD-ROM 或 DVD-ROM 中,然后把它插入到要被转换的物理机的光驱中。您可能需要修改您的 BIOS 设置来使光驱作为机器的第一个引导设备。
  • 使用 ISO 创建一个可引导 USB 介质。您可能需要修改您的 BIOS 设置来使 USB 设备作为机器的第一个引导设备。另外,一些 BIOS 并不支持从 USB 引导。P2V client 磁盘映像大约有 100MB,您所使用的 USB 设备需要有足够的空间来容纳它。
  • 在您的 PXE 服务器上准备一个 PXE 引导映像。您可能需要修改您的 BIOS 设置来使 PXE 作为机器的第一个引导设备。
如需了解更多关于创建引导介质的信息,请参阅 附录 A, 额外步骤
您已经为转换做好了准备工作,您现在可以开始进行物理机到虚拟机的转换。

5.3. 把物理机转换为虚拟机

到目前为止,您已经准备好了转换服务器,并选择了可引导介质。下一步,您需要引导 P2V client,把它连接到转换服务器,并对您的物理机进行转换。转换的过程可以会需要很长时间来完成,尤其是您需要转换大容量物理磁盘时。

过程 5.1. 把一个物理机转换为虚拟机

  1. 在转换服务器上引导 P2V client 引导介质。

    在您所创建的转换服务器上引导 P2V client 引导介质。因为 P2V client 是在 Red Hat Enterprise Linux 6 映像上构建的,所以 Red Hat Enterprise Linux 6 splash 会在引导时被显示。
  2. 如果需要,对网络进行配置。

    通常情况下,P2V client 使用 DHCP 自动配置网络。如果不能自动配置网络,您需要手工配置它。您需要配置 IP AddressGatewayPrefix 项。根据您的具体情况输入相应的值,点 Use these network settings
    请注意,P2V client 不支持 NIC 组合(NIC teaming)配置。
    Configure Networking.

    图 5.1. P2V client 上的网络配置

    注意

    如果您需要手动配置您的网络,请在引导前把物理机从网络中断开。
  3. 连接到转换服务器。

    当配置完网络后,您会被提示输入连接到转换服务器的连接信息。它们包括 Hostname(主机名或 IP 地址)、Username(必须是 root)和 Password。输入相关信息后点 Connect
    Connect to conversion server.

    图 5.2. 连接到转换服务器

  4. 配置目标虚拟机并选择要转换的硬件。

    在连接到转换服务器后,配置要被附加到被转换物理机上的虚拟硬件,选择要被转换的物理硬件。
    Enter the details for the outputted virtual machine.

    图 5.3. 配置虚拟机

    1. Target Properties 中配置以下内容:
      • 从下拉菜单中选择一个 Destination Profile。这个菜单中的选项反应了转换服务器上的 /etc/virt-v2v.conf 文件中的目标配置集。
      • Target PropertiesName 项中输入转换所生成的虚拟机的名称。
      • Target Properties 中的 Number of CPUsMemory(MB) 的值会被自动生成。如果您需要在输出的虚拟机上使用更多的 CPU 和(或)内存,您可以修改这两个项的值。
    2. Fixed Storage 中选择一个或多个需要被转换的设备。最少一个包括了所需操作系统的固定磁盘需要被转换。
    3. Removable Media 中选择一个或多个需要转换的设备。
    4. Network Interfaces 中选择一个或多个需要转换的网络接口。
    5. 可选项:如果您希望把调试信息输出到一个文件中,请选择 Enable server-side debugging 选项。这会使服务器在转换过程中写 LIBGUESTFS_TRACELIBGUESTFS_DEBUG 输出。
      请注意,Enable server-side debugging 选项只在 Red Hat Enterprise Linux 6.5 或更高版本中有效。请参阅 第 6.2 节 “调试 P2V 转换” 来获得更多与调试 P2V 转换相关的内容。
    6. Convert
      Conversion started.

      图 5.4. Conversion in process

当转换完成后,一个转换成功的信息会被显示。您可以关闭物理机。
The screen reads "A guest has been successfully created on the target server. Remove the temporary boot device from this machine and press 'Power Off' to continue." A Power Off button appears below the text in this window.

图 5.5. Conversion successfully completed

您已经把物理机转换为虚拟机。现在,您就可以把转换的虚拟机导入到虚拟机监控程序系统中来运行。

5.4. 把虚拟机导入到虚拟机监控程序系统中来运行

您已经把物理机转换为虚拟机。现在,您就可以在虚拟机监控程序系统中运行虚拟机。
如需了解更多关于在使用 virt-manager 的 Red Hat Enterprise Linux 上运行虚拟机的信息,请参阅:
如需了解更多关于在使用 Red Hat Enterprise Virtualization Manager 的 Red Hat Enterprise Virtualization 中运行虚拟机的信息,请参阅:

第 6 章 调试及故障排除

6.1. 调试 V2V 转换

在运行 V2V 时启用调试信息(debugging message)可以帮助技术人员更好地了解在 V2V 转换过程中出现的问题。
输出调试信息可以获得更详细的 V2V 转换信息,virt-v2v 将在运行时显示更多信息。这些信息会在运行 virt-v2v 的终端中显示。
使用简单的重定向功能可以把 virt-v2v 的调试信息输出到一个文件中。一般的转换会以以下形式运行:
virt-v2v -i libvirtxml -os pool --bridge bridge_name guest_name.xml
通过对上面命令进行一些修改,可以把调试信息输出到 virt-v2v.log 文件中。您只需要在以上命令前面加上一个环境变量 LIBGUESTFS_TRACE=1 LIBGUESTFS_DEBUG=1,并在命令后面加上 ... 2>&1 | tee virt-v2v.log,就可以把调试信息输出到指定的文件中。
LIBGUESTFS_TRACE=1 LIBGUESTFS_DEBUG=1 virt-v2v -i libvirtxml -os pool --bridge bridge_name guest_name.xml ... 2>&1 | tee virt-v2v.log

6.2. 调试 P2V 转换

在运行 virt-p2v 时启用调试信息(debugging message)可以帮助技术人员更好地了解在 P2V 转换过程中出现的问题。
P2V 调试功能在 Red Hat Enterprise Linux 6.5 和更高的版本中被支持。
要启用 P2V 调试功能,在 virt-p2v client 的转换屏幕中选 Enable server-side debugging 选项后再点 Convert 按钮。
这会通知服务器在 virt-p2v 转换的过程中写 LIBGUESTFS_TRACELIBGUESTFS_DEBUG 输出。
请参阅 第 5 章 把物理机转换为虚拟机 来获得更多关于使用 virt-p2v 的信息。

6.3. 与 iscsi/mpath/scsi 存储卷相关的已知问题

当前,virt-v2v 无法转换带有存在于以下类型存储池中的存储卷的系统:
  • iscsi
  • mpath
  • scsi
转换这些系统的过程将会失败。当前还没有解决这个问题的方案。

第 7 章 参考信息

本章包括了 virt-v2v 的参考信息。

7.1. virt-v2v 参数

virt-v2v 可以使用以下参数:
-i input
指定获得要被转换虚拟机的输入方法。它的默认值是 libvirt,所支持的选项包括:
libvirt
虚拟机参数是一个 libvirt 域的名称。
libvirtxml
虚拟机参数是一个到包括了 libvirt 域的 XML 文件的路径。
-ic URI
指定使用 libvirt 输入方法的连接。如果没有使用这个参数,默认值 qemu:///system 将会被使用。请注意,这只在 virt-v2v 以 root 身份运行时有效。
virt-v2v 当前可以自动通过本地 libvirt 连接、ESX / ESX(i) 连接和使用 SSH 的连接来获得虚拟机的存储。其它类型的连接不被支持。
-o method
指定输出的方法。如果没有指定输出方法,默认值 libvirt 会被使用。它所支持的输出方法包括:
libvirt
创建一个 libvirt 虚拟机。请参阅 -oc-os 选项。对于 libvirt 输出方法,-os 选项必须被指定。
rhev
在 Red Hat Enterprise Virtualization 输出存储域中创建一个虚拟机。以后这个虚拟机可以使用 Manager 进行导入。对于 rhev 输出方法,导出存储域需要通过使用 -os 来指定。
-oc URI
指定使用 libvirt 连接来创建被转换的虚拟机。如果没有使用这个参数,默认值 qemu:///system 会被使用(virt-v2v 需要以 root 身份运行)。请注意,virt-v2v 必须可以直接对 libvirt 连接所描述的存储进行写操作。对远程连接进行写操作当前还不可行。
-os storage
指定为所转换的虚拟机创建的新存储的位置。这将取决于由 -o 参数指定的输出方法。
对于 libvirt 输出方法,这个参数的值是一个存储池的名称;对于 rhev 输出方法,这个参数的值是到一个 Red Hat Enterprise Virtualization 导出存储域的 NFS 路径。请注意,存储域需要已经被 Red Hat Enterprise Virtualization Manager 初始化;域的格式需要是 <host>:<path>(如 rhev-storage.example.com:/rhev/export)。
NFS 导出需要可以被运行 virt-v2v 的主机挂载并可以被这个主机进行写操作。
-op pool(已弃用)
虽然这个参数仍然被支持,但是已被 -os 替代。
-osd domain(已弃用)
虽然这个参数仍然被支持,但是已被 -os 替代。
-of format
指定被转换虚拟机要使用的磁盘格式。当前支持的选项是 rawqcow2。这里指定的输出格式可以和源格式不同 - virt-v2v 可以把 raw 转换为 qcow2 或进行相反的转换。如果没有指定这个参数,被转换后的虚拟机将会使用和源虚拟机相同的格式。
-oa allocation
指定转换后的虚拟机使用 sparse 存储还是 preallocated 存储。这里指定的存储分配策略可以和源存储分配策略不同,virt-v2v 可以把 sparse 转换为 preallocated,或进行相反的转换。如果没有指定这个参数,被转换后的虚拟机就会使用和源虚拟机相同的存储分配策略。
-on outputname
重新命令虚拟机。如果没有指定这个参数,转换后的虚拟机和转换前的虚拟机同名。
-f file | --config file
使用文件中的 virt-v2v 配置。这里可以使用多个配置文件,而搜索的顺序和文件指定的顺序相同。如果没有指定文件,默认的 /etc/virt-v2v.conf/var/lib/virt-v2v/virt-v2v.db 会被使用。

重要

如果需要覆盖默认的配置信息,我们推荐同时指定 /var/lib/virt-v2v/virt-v2v.db,因为它包括了转换所需的默认配置数据。
-n network | --network network
把配置文件中没有相应映射信息的虚拟机网桥或网络映射到指定网络。
这个选项无法和 --bridge 一起使用。
-b bridge | --bridge bridge
把配置文件中没有相应映射信息的虚拟机网桥或网络映射到指定网桥。
这个选项无法和 --network 一起使用。
-p profile | --profile profile
输出方法为默认的值;输出存储和网络映射信息由配置文件中的 profile 项获得。
--root=filesystem
为带有多引导系统的虚拟机选择要被转换的 root 文件系统。这个选项的默认值是 --root=ask。当这个选项被使用时,virt-v2v 会列出所有可能的 root 文件系统,并要求用户选择需要使用的文件系统。

警告

在比 Red Hat Enterprise Linux 6.3 更早的版本中,这个参数的默认值是 --root=single。如果虚拟机被检测到有多个引导系统,virt-v2v 将会失败。
其它可用选项包括:
first
如果有多个 root 设备,选择第一个。因为这里使用的方法是推测式的,所以所做出的选择不一定总是正确的。
single
指定只有一个可用的 root 设备。如果检测到多于一个设备,virt-v2v 将会失败。
<path>
指定使用特定的 root 设备。例如,--root=/dev/sda2 代表第一个硬盘中的第二个分区。如果所指定的设备不存在,或没有被检测为 root 设备,virt-v2v 将失败。
--list-profiles
显示配置文件中的目标配置集名列表。
--help
显示帮助信息。
--version
显示版本号后退出。

7.2. 配置改变

除了正确配置 libvirt 外,virt-v2v 还会对虚拟机做特定的改变来使它在 KVM 虚拟机监控程序上运行(使用或不使用 virtIO 驱动)。这些改变取决于虚拟机的操作系统,这里的信息适用于支持的 Red Hat Enterprise Linux 版本和 Windows.

7.2.1. Linux 虚拟机的配置改变

表 7.1. virt-v2v 对 Linux 虚拟机进行的改变

改变描述
内核不能引导的内核(如 Xen 准虚拟化内核)将会被卸载。如果剩下的内核支持 VirtIO,则不会安装新内核。如果剩下的内核不支持 VirtIO,配置文件指定了一个新内核,这个新内核会被安装并被配置为默认内核。
X 重新配置如果虚拟机配置了 X,它的显示驱动将会被更新。如需了解哪些驱动要被使用,请参阅 表 7.2 “在 Linux 虚拟机上配置驱动”
重新命名块设备如果重新配置会导致块设备改变它的名字,这些改变会反应在 /etc/fstab 中。
配置设备驱动无论使用 VirtIO 还是非 VirtIO 驱动,virt-v2v 都会保证正确的网络和块设备驱动出现在 modprobe 配置中。
initrd无论使用还是不使用 VirtIO,virt-v2v 都将会保证默认内核的 initrd 支持引导 root 设备。
SELinuxvirt-v2v 将会在虚拟机下一次引导时进行重新标识(relabel),这可以保证所做的任何改变都可以根据虚拟机的本地策略被正确标识。
virt-v2v 将会在 Linux 虚拟机上配置以下驱动:

表 7.2. 在 Linux 虚拟机上配置驱动

准虚拟化驱动类型驱动模块
显示cirrus
存储virtio_blk
网络virtio_net
另外,initrd 会预先加载 virtio_pci 驱动 
其它驱动 
显示cirrus
块设备虚拟化的 IDE
网络虚拟化的 e1000

7.2.2. Windows 虚拟机的配置改变

警告

在转换 Windows 虚拟机前,请确认运行 virt-v2v 的主机上已经安装了 libguestfs-winsupportvirtio-win 软件包。这些软件包提供了对 NTFS 和 Windows 准虚拟化块设备和网络的驱动。如果您在没有安装 libguestfs-winsupport 软件包的情况下转换使用 NTFS 的虚拟机,转换过程将会失败。如果您在没有安装 virtio-win 软件包的情况下转换 Windows 虚拟机,转换过程同样会失败。请参阅 第 4.3.1.2 节 “为转换一个运行 Windows 的虚拟机做准备” 来获得更多相关信息。
virt-v2v 可以转换运行 Windows XP、Windows Vista、Windows 7、Windows Server 2003 和 Windows Server 2008 的虚拟机。转换 Windows 虚拟机的过程与转换 Linux 虚拟机的过程稍有不同。Windows 虚拟机的映像会以以下方式转换:
  1. virt-v2v 安装 VirtIO 块驱动。
  2. virt-v2v 安装 CDUpgrader 应用程序。
  3. virt-v2v 把 VirtIO 块设备和网络驱动复制到 %SystemRoot%\Drivers\VirtIOvirtio-win 软件包不包括 Windows 7 和 Windows XP 的网络驱动。对于这些操作系统,使用 rtl8139 网络驱动。虚拟机需要已经具备了对 rtl8139 支持的能力。
  4. virt-v2v%SystemRoot%\Drivers\VirtIO 添加到 DevicePath 中,这意味着当检测到新设备时,这个目录会被自动作为搜索目录来在其中寻找设备的驱动。
  5. virt-v2v 对注册表进行修改,把 VirtIO 块设备驱动包括在注册表的 CriticalDeviceDatabase 项中,并保证在下一次引导时启动 CDUpgrader 服务。
到目前为止,virt-v2v 已经完成了转换过程。被转换的虚拟机可以正常工作。如果转换的虚拟机运行于由 libvirt 管理的 KVM 中,整个转换过程已经结束;如果转换的虚拟机运行于 Red Hat Enterprise Virtualization,Red Hat Enterprise Virtualization Manager 将会进行一些额外的操作来完成整个转换过程。
  1. 虚拟机被导入并运行在 Manager 上。请参阅 Red Hat Enterprise Virtualization 管理指南 来获得更详细的信息。

    重要

    第一次引导过程会需要几分钟来完成,在这个过程中系统不能被中断。在启动虚拟机后,这个引导过程将不需要管理员的操作。为了保证这个过程不被中断,用户在这个过程完成前不要登录到虚拟机。您可以通过 Manager GUI 来查看这个过程的进度。
  2. 如果 guest 工具程序 ISO 已经被上传到 Manager(如 第 4.3.1.2 节 “为转换一个运行 Windows 的虚拟机做准备” 所述),Manager 会把 guest 工具程序 CD 附加到虚拟机。
  3. CDUpgrader 会检测到 guest 工具程序 ISO 并从其中安装所有的 VirtIO 驱动(包括 virtio-win 中没有的工具程序)。如果 guest 工具程序 ISO 所包括的 VirtIO 驱动比以前从 virtio-win 中安装的驱动版本更高,这个驱动会被重新安装。这可以保证工具程序都是最新的。

附录 A. 额外步骤

A.1. 创建可引导介质

P2V Client 可以通过 PXE、可引导 USB 设备或光驱设备来引导。LiveOS 目录中的 rhel-6.x-p2v.iso ISO 包括了为引导做准备所需的脚本。

A.1.1. 创建一个 P2V client 引导 CD

不同计算机使用映像文件创建 CD 的实际操作步骤有很大不同,这和操作系统以及安装的刻录软件有关。这里介绍了使用在 Red Hat Enterprise Linux 6 上安装的 Brasero 把映像文件刻录到光盘的方法。
请确定您的磁盘刻录软件可以使用映像文件刻录。虽然大多数磁盘刻录软件都有此功能,但也确有例外。
  1. 把一张可写的空白 CD 插入到计算机的 CD 或 DVD 刻录机中。
  2. 打开 Applications 菜单,选择 Sound and Video 子菜单,点 Brasero Disk Burner
  3. Burn Image 按钮。
  4. Click here to select a disc image 按钮。
  5. 找到并选择 rhel-6.x-p2v.iso
  6. Burn
您可能需要修改 BIOS 的设置来允许从 DVD/CD-ROM 驱动引导。

A.1.2. 创建一个可引导的 P2V USB 介质

  1. 以 root 的身份挂载 rhel-6.x-p2v.iso
    mkdir /mnt/p2vmount
    mount -o loop rhel-6.x-p2v.iso /mnt/p2vmount
  2. 把 USB 设备插入到您的计算机。为了使 livecd-iso-to-disk 脚本可以正常工作,USB 的文件系统必须格式化为 vfat、ext[234] 或 btrfs。
  3. 在一个终端中以 root 身份运行 livecd-iso-to-disk 脚本:
    bash /mnt/p2vmount/LiveOS/livecd-iso-to-disk /PATH/TO/rhel-6.x-p2v.iso /dev/YOURUSBDEVICE
  4. 当脚本成功运行完成后,弹出 USB 设备。

A.1.3. 创建一个 PXE 引导映像

  1. 以 root 身份挂载 rhel-6.x-p2v.iso
    mkdir /mnt/p2vmount
    mount -o loop rhel-6.x-p2v.iso /mnt/p2vmount
  2. 在一个终端中以 root 身份运行 livecd-iso-to-pxeboot 脚本:
    bash /mnt/p2vboot/LiveOS/livecd-iso-to-pxeboot /PATH/TO/rhel-6.x-p2v.iso
    当命令完成后,运行命令的目录中会出现一个 tftpboot 目录。
  3. 对新创建的 tftpboot 目录重新命名:
    mv tftpboot/ p2vboot/
  4. 把 p2vboot/ 子目录复制到 /tftpboot 目录:
    cp -R p2vboot/ /tftpboot/
    设置您的 DHCP、TFTP 和 PXE 服务器来使用 /tftpboot/p2vboot/pxeboot.0

    注意

    initrd 映像会包括整个 CD ISO。在 PXE 引导时,您会注意到 initrd 可能需要很长时间来下载,这是一个正常的现象。

附录 B. 修订历史

修订历史
修订 11-73.1Thu Mar 12 2015Red Hat Localization Services
与 XML 源 11-73 版本同步的翻译文件
修订 11-73Thurs Dec 18 2014Dayle Parker
在 RHEL 6 初始页面中应用 sort_order。
修订 11-71Fri Oct 10 2014Dayle Parker
6.6 GA 发行本。
修订 11-69Thurs Oct 9 2014Dayle Parker
更新了与红帽客户门户网站跟踪 GSS 反馈意见流程相关的信息(BZ#1107958)。
修订 11-68Mon Oct 6 2014Dayle Parker
更新了与红帽客户门户网站(安装 virt-v2v、为转换运行 Linux 的虚拟机做准备、为转换物理机做准备)流程相关的信息(BZ#1107958)。
添加了与转换 Citrix Xen 相关的信息(BZ#852650)。
修订 11-67Fri Sept 5 2014Dayle Parker
发布了本文档更新的 beta 版本。
修订 11-66Fri Aug 29 2014Dayle Parker
更新了与”把物理机转换为虚拟机“相关的内容,以及与调试 P2V 转换相关的内容(BZ#1053858)。
修订 11-64Fri Aug 8 2014Dayle Parker
beta 发行版本。
修订 11-62Tue July 29 2014Dayle Parker
更新了文档套件列表。
在安装一节中指定了 virt-v2v 对 64 位系统有效的信息(BZ#1093566)。
在调试和 P2V 章节中,明确指出了 P2V 调试选项在 Red Hat Enterprise Linux 6.5 以及更高的版本中有效(BZ#1053858)。
修订 11-61Tue July 15 2014Dayle Parker
添加了一个注释信息指出,virt-p2v 不支持 NIC 组合(NIC teaming)功能(BZ#1045480)。
修订 11-60Mon Nov 18 2013Dayle Parker
6.5 GA 发行本
修订 11-59Fri Nov 15 2013Dayle Parker
更新了“附加导出存储域”和“v2v 自动化脚本“中的截屏。
在两个章节中更新了与红帽客户门户网站相关的内容。
添加了到 Red Hat Enterprise Virtualization 管理指南的参考。
修订 11-57Thurs Nov 7 2013Dayle Parker
对内容进行微调(BZ#994812)。
修订 11-56Fri Sept 27 2013Dayle Parker
对 beta 发行版本的内容进行微调。
包括了带有调试选项的新 P2V 截屏。
修订 11-54Thurs Sept 26 2013Dayle Parker
修正了一些错误内容。
重新组织并编辑了与 Windows 相关的内容。
修订 11-53Mon Sept 16 2013Dayle Parker
根据 QE 的反馈信息更新了支持的操作系统和虚拟机监控程序的内容(BZ#972987)。
修订 11-51Fri Sept 13 2013Dayle Parker
编辑了转换 VMDK 虚拟机的章节(BZ#982844)。
更新了支持的操作系统和虚拟机监控程序的内容(BZ#972987)。
修订 11-50Mon Sept 9 2013Dayle Parker
添加了调试 P2V 的章节(BZ#986133)。
添加了转换限制信息(BZ#964092)。
修订 11-49Thurs Sept 5 2013Dayle Parker
添加了 VMDK 转换实例(BZ#982844)。
在 virt-v2v 参数表中添加了 "ova" 输出选项。
修订 11-48Fri Aug 16 2013Dayle Parker
在第 2 章和第 3 章中添加了与转换时间相关的信息(BZ#975320)。
修订 11-47Fri Aug 9 2013Dayle Parker
合并了第 3 章和第 5 章中的重复内容。
修订 11-46Fri Apr 26 2013Dayle Parker
对序言和第 1 章进行了一些修改。
修订 11-45Mon March 4 2013Dayle Parker
对标题进行了一些修改。
修订 11-44Tue Feb 19 2013Dayle Parker
6.4 GA 发行本
修订 11-41Wed Jan 30 2013Dayle Parker
在第 3 章和第 4 章中更新了与 guest 工具程序 ISO 相关的内容(BZ#881469)。
在第 3 章中更新了“导入和运行转换的虚拟机”的内容(BZ#881469)。
修订 11-39Thurs Jan 24 2013Dayle Parker
对 2.1 的标题进行了修改。
修改本文档中的语法错误。
修订 11-38Wed Jan 16 2013Dayle Parker
根据 QE 反馈做了一些修改(BZ#881469)。
修订 11-36Thurs Dec 13 2012Dayle Parker
更正了 ISO 文件名(BZ#713997)。
修订 11-35Wed Nov 28 2012Dayle Parker
更新了第 3 章的一些内容。
修订 11-34Tue Nov 27 2012Dayle Parker
根据 QE 的反馈更新了“v2v 操作的自动化脚本”一节的内容。
修订 11-33Thu Nov 22 2012Laura Novich
修正了单一主机 v2v 脚本的内容(https://bugzilla.redhat.com/show_bug.cgi?id=832361)
修订 11-31Wed Nov 21 2012Dayle Parker
更新了“v2v 操作的自动化脚本”一节的内容(BZ#754884)。
修订 11-30Fri Nov 16 2012Dayle Parker
更新了与 guest 工具程序 ISO 相关的内容(BZ#754887)。
修订 11-29Mon Nov 12 2012Dayle Parker
更新了与 REST API 和大量 v2v 自动化脚本相关的内容(BZ#832361)。
修订 11-28Thurs Nov 8 2012Dayle Parker
修改了一些错误(BZ#713997)。
修订 11-27Wed Nov 7 2012Dayle Parker
修改了一些错误。
修订 11-26Wed Nov 7 2012Dayle Parker
更新了与 REST API 和大量 v2v 自动化脚本相关的内容(BZ#832361)。
修订 11-24Mon Nov 5 2012Dayle Parker
更新了 ISO 文件名和链接(BZ#713997)。
修订 11-23Fri Nov 2 2012Dayle Parker
更新了第 4 章和第 5 章中的内容(BZ#832019)。
修订 11-22Thu Nov 1 2012Laura Novich
添加了故障排除的章节(BZ841542)
修订 11-21Thurs Nov 1 2012Dayle Parker
更新了第 6 章和第 7 章中的内容(BZ#754888)。
修订 11-20Thurs Nov 1 2012Dayle Parker
在第 2 章中增加了一些内容(BZ#754886)。
更新了第 3 章中的内容(BZ#754887)。
修订 11-19Wed Oct 31 2012Laura Novich
添加了 .iso 下载信息
修订 11-18Wed Oct 31 2012Dayle Parker
修正了第 2 章中的一些内容(BZ#754886)。
修订 11-17Wed Oct 31 2012Laura Novich
更改了修订记录和第 1 章(BZ754885)
修订 11-14Mon Oct 29 2012Dayle Parker
统一了虚拟化术语的使用(BZ#825894)
修订 11-13Thu Oct 25 2012Laura Novich
完成了 v2v 迁移章节 - 添加了对 ESX(i) 的支持
修订 11-11Wed Oct 24 2012Laura Novich
修正了 P2V 以及和 libvirt 参考章节相关的内容(https://bugzilla.redhat.com/show_bug.cgi?id=816930)
修订 11-9Mon Oct 15 2012Laura Novich
对修订记录和序言进行了修改(BZ754885)。
修订 11-6Monday June 18 2012Laura Novich
准备 GA
修订 11-5Monday June 04 2012Laura Bailey
修改了与存储池要求相关的内容(BZ#709279)。
修订 11-4Monday May 14 2012Laura Bailey
添加了 Virt P2V 要求的内容。
修订 11-3Monday March 26 2012Laura Bailey
修改了一些小错误(BZ#713997)。
修订 11-2Monday March 5 2012Dayle Parker
更新了标题的风格(BZ#732866)。
更新了 5.3 一节中的截图(BZ#732865)。
修订 11-1Friday February 24 2012Laura Bailey
包括了 V2V 迁移的章节(BZ#709279)。
修订 10-0Monday January 23 2012Laura Bailey
对一些用词进行了修改(BZ#733005)。
更新了 --file 参数的使用信息(BZ#749766)。
更正了频道命令的使用(BZ#765869)。
修订 9-0Thursday December 08 2011Laura Bailey
添加了一些与 P2V 相关的内容。
修改了一些内容的格式。
更新了与 virt-v2v 的使用参数相关的内容。
增加了与转换 Windows Recovery Console 相关的内容。
修订 7-0Friday December 02 2011Laura Bailey
Red Hat Enterprise Linux 6.2 的 GA 发行版本。
修订 6-0Friday July 22 2011Tim Hildred
突出了支持的存储格式/分配策略的信息
把警告信息改为重要信息
修订 5-0Friday June 17 2011Tim Hildred
修改了以下错误:
BZ#712320 - 增加了通过 ssh 传输多 HDD 映像的警告信息。
BZ#696050 - 当使用 -oa preallocated 参数转换一个 qcow2/sparse 时,无法把 qcow2/preallocated 虚拟机导入到 NFS 数据域中。
BZ#710161 - 添加了更详细的与安装 virt-v2v 所需的先决条件相关的内容。
修订 4-0Monday April 11 2011Cheryn Tan
修改了以下错误:
BZ#694773 - 不需要为虚拟机上传 Guest 工具程序 ISO 来安装驱动
BZ#694778 - 添加了转换一个远程 KVM 虚拟机到 RHEV 的内容
BZ#694775 - virt-v2v 转换命令的语法 "virt-v2v -os pool --network netname vm-name" 需要被更新
修订 3-0Friday April 8 2011Cheryn Tan
修改了以下错误:
BZ#694437 - 版权的时间戳需要被更新
BZ#694441 - 按照 V2V 指南中的介绍无法获得与 virt-v2v 相关的软件
BZ#694442 - 文档应该更新与 portmap 服务相关的内容,因为这个服务在 RHEL6 中已经被 rpcbind 替代
修订 2-0Monday November 29 2010David Jorm
完成了除实例 3.3 以外的草稿
修订 1-0Monday October 25 2010David Jorm
初始创建

法律通告

Copyright © 2010-2014 Red Hat, Inc.
This document is licensed by Red Hat under the Creative Commons Attribution-ShareAlike 3.0 Unported License. If you distribute this document, or a modified version of it, you must provide attribution to Red Hat, Inc. and provide a link to the original. If the document is modified, all Red Hat trademarks must be removed.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.