返回

2025/03/19

6. Oracle Linux KVM 硬分区设置

在上一篇文章中,我们解释了虚拟服务器环境的“Oracle 许可概念”和“分区策略”。您现在应该知道,在虚拟服务器环境中使用 Oracle 产品时需要注意很多事项。

我们还提到,Oracle Linux KVM 的硬分区功能可以优化 Oracle 产品的许可成本。然而,仅仅使用 Oracle Linux 并不能限制许可数量,您需要以固定的形式将特定的 CPU 核心分配给虚拟机。

这一点也在上次介绍的“使用 Oracle Linux KVM 进行硬分区”部分中有记载,但实际情况是实际构建相当困难。

因此,本文将重点介绍配置时需要注意的要点。然而,本文旨在操作验证,因此与实际运行环境不同。特别是在生产环境中,需要考虑许多因素,例如可用性和安全性,但本文将忽略这些因素。

此外,构建环境需要 KVM 的知识,但这不是主要问题,因此我们只会简要提及。有关 Linux 和 KVM 的更多信息,请参阅文章末尾的 Oracle Linux 和 Red Hat Enterprise Linux 手册。

硬分区的要求

在阅读了关于 Oracle Linux 硬分区的白皮书“使用 Oracle Linux KVM 进行硬分区”后,您可能会认为使用 olvm-vmcontrol 命令进行硬分区很简单吗?

现实完全不同。除了使用 Oracle Linux KVM 作为虚拟机管理程序外,您还需要管理工具 Oracle Linux Virtualization Manager。而且这些设置相当困难。在上一代的虚拟化产品 Oracle VM Server 中,只需对配置文件进行少量重写即可设置硬分区。现在的情况大不相同。

因此,我们将解释前提要求。

Oracle Linux KVM 和 Oracle Linux Virtualization Manager

首先,让我们回顾一下基本组件。

Oracle Linux KVM
Oracle Linux KVM 是一个利用内置于 Oracle Linux 内核中的 KVM 的虚拟机管理程序。您可以使用 RHCK 和 UEK 两种内核。作为客户操作系统,它支持 Ubuntu、SUSE Linux 和 Microsoft Windows 以及基于 RHEL 的 Linux。请注意,没有名为 Oracle Linux KVM 的产品,它是通过将虚拟化包整合到 Oracle Linux 7、Oracle Linux 8 和 Oracle Linux 9 中实现的。

Oracle Linux Virtualization Manager
Oracle Linux Virtualization Manager(OLVM)是一个相当于 VMware vCenter 的虚拟环境管理工具。您可以根据运营需要执行任务,例如管理 Oracle Linux KVM 主机和虚拟机。以下有时将其简称为 OLVM。

Oracle Linux Virtualization Manager 基于开源项目 oVirt,Red Hat Virtualization(RHV)中也使用基于 oVirt 的相同管理工具。准确地说,Red Hat Virtualization 的开源实现是 oVirt。它们之间的关系如下表所示。

供应商 KVM 管理工具 基础设施配置管理工具
Red Hat Red Hat Virtualization Red Hat Satellite
开源实现 oVirt Spacewalk
Oracle Oracle Linux Virtualization Manager Oracle Linux Manager

需要 Oracle Linux Virtualization Manager

为了进行硬分区固定 CPU,目标 Oracle Linux KVM 必须由 Oracle Linux Virtualization Manager 管理。

这一点非常重要。管理 Oracle Linux KVM 不需要 Oracle Linux Virtualization Manager。然而,对于硬分区来说它是必要的。问题在于是否使用 Oracle Linux Virtualization Manager,构建和运营方式完全不同。

在 Linux KVM 中,您可以使用 GUI 工具 virt-manager 或 CLI virsh 进行管理。您还可以使用基于 Web 的管理工具 Cockpit。然而,如果迁移到 Oracle Linux Virtualization Manager,您将无法使用这些工具。基础是基于 Web 的 Oracle Linux Virtualization Manager,其次是 REST 接口。

如果迁移到 Oracle Linux Virtualization Manager,您将无法再使用 virt-manager 或 virsh 进行管理。

以下是硬分区要求的总结。

  • Oracle Linux KVM 主机由 Oracle Linux Virtualization Manager 管理
  • 在 Oracle Linux Virtualization Manager 中设置 olvm-vmcontrol

Oracle Linux Virtualization Manager 架构

使用 Oracle Linux Virtualization Manager 的关键在于理解其架构。在 Oracle Linux Virtualization Manager 和 Red Hat Virtualization 中,描述架构的手册都列在文档列表的顶部。本节描述了主要组件及其配置方法。

Oracle Linux Virtualization Manager 的关键组件

Oracle Linux Virtualization Manager 由两个主要组件组成:

o-Virt Engine
Oracle Linux Virtualization Manager 的主要组件,为 GUI 和 REST API 提供服务以管理资源。它使用 Java 编写,运行在内置的 Java EE 容器 WildFly(原 JBoss)上。它使用 PostgreSQL 进行数据管理。

VDSM(虚拟桌面服务器管理器)
安装在受管理的 KVM 主机上的 o-Virt Engine 代理。

两种配置方法

使用 Oracle Linux Virtualization Manager 配置系统有以下两种方法。为了正确构建,您需要了解每种方法的特点。详情请参阅手册,这里我们将简要说明。

  • 自托管引擎(Self-Hosted Engine)
  • 独立管理器(Stand Alone Manager)

自托管引擎(Self-Hosted Engine)

最常见的方法是在 Oracle Linux KVM 主机上的虚拟机上运行 Oracle Linux Virtualization Manager。图表显示了双主机配置,但当不需要可用性时,可以使用单主机配置。

优点

  • oVirt Engine 运行在虚拟机上,因此需要较少的物理服务器
  • 可以轻松为 oVirt Engine 添加冗余

缺点

  • oVirt Engine 运行在 KVM 主机上,减少了 KVM 主机的可用 CPU 和内存

独立管理器(Stand Alone Manager)

通过这种方法,oVirt Engine 运行在受管理的 Oracle Linux KVM 主机以外的主机上。使用物理服务器或托管在不同虚拟环境中的虚拟机。

优点

  • oVirt Engine 独立于受管理主机,因此不会对主机造成负担

缺点

  • 为了使 oVirt Engine 具有冗余,需要使用 HA 集群软件或类似的集群配置。

不支持的方法

如下所示,在受管理的 Oracle Linux KVM 主机上安装 Oracle Linux Virtualization Manager 是不支持的。

Oracle 和第三方手册中的术语差异

阅读 Oracle Linux Virtualization Manager 手册时,术语的翻译和手册的组织令人困惑。下表对此进行了比较。

来源 KVM 上的虚拟机方法 与 KVM 分开托管
oVirt/RHV 英文手册 Self-Hosted Engine Stand Alone Manager(*1)
RHV 日文手册 Self-Hosted Engine Stand Alone Manager
OLVM 英文手册 Self-Hosted Engine Engine(*2)
OLVM 日文手册 Jiko Host Engine(自托管引擎) Engine (*2)

*1 以前,似乎有时将其称为 Stand Alone Engine 而不是 Stand Alone Manager。
*2 Stand Alone Manager 在少数地方也有使用,但没有明确区分配置的描述。有时也称为 Engine。

虽然基于机器翻译,但“Self-Hosted Engine”的日文版翻译并不好。此外,由于入门指南中没有明确指示“Stand Alone Manager”方法的名称,因此令人困惑。

规划构建 Oracle Linux Virtualization Manager

要构建 Oracle Linux Virtualization Manager,您需要了解 Oracle Linux Virtualization Manager 架构和系统要求。

选择自托管引擎和独立管理器

首次构建 Oracle Linux Virtualization Manager 时,我们推荐使用如下所示的 Stand Alone Manager 方法。在生产环境中,我们推荐 Self-Hosted Engine 方法,但 Stand Alone Manager 方法更容易构建。当可用服务器较少时,请使用 Self-Hosted Engine 系统。您还需要一个可以自行管理的 DNS 服务器。

Oracle Linux KVM 主机和 Oracle Linux Virtualization Manager 主机

这将作为术语的整理进行描述。安装 Oracle Linux Virtualization Manager 的服务器称为 Oracle Linux Virtualization Manager 主机(OLVM 主机)引擎主机。由 Oracle Linux Virtualization Manager 管理的 Oracle Linux KVM 服务器称为 Oracle Linux KVM 主机KVM 主机。在官方手册中,有些地方仅将 Oracle Linux Virtualization Manager 主机 称为主机,请根据上下文判断。

可以用 VirtualBox 构建验证环境吗?

当我们尝试使用 VirtualBox 构建时,我们能够安装 Oracle Linux Virtualization Manager 并添加 KVM 主机。然而,出现了“此集群兼容性不支持主机 CPU 类型”的错误,无法执行进一步操作。在其他 PC 或虚拟环境中可能可以实现。

为了尝试一下,您可以考虑在 Oracle 云基础设施上使用以下服务。

  • Oracle Linux Virtualization Manager:计算虚拟机
  • Oracle Linux KVM 主机:计算裸金属实例

系统要求

Oracle Linux Virtualization Manager 主机和 Oracle Linux KVM 主机的系统要求如下。

Oracle Linux Virtualization Manager 主机要求

  • 适用于 oVirt 4.4 的 Oracle Linux 8.5 或更高版本
  • CPU:2 核,内存:4GB,磁盘:25GB(均为最低要求)

Oracle Linux KVM 主机要求

  • 适用于 oVirt 4.4 的 Oracle Linux 7.6 或更高版本或 Oracle Linux 8.5 或更高版本
  • CPU:2 核,内存:2GB,磁盘:60GB(均为最低要求)

这里重要的是,支持的 OLVM 主机和 KVM 主机要求因 Oracle Linux Virtualization Manager 版本而异。请查看要使用的版本的“Oracle Linux Virtualization Manager 手册”中的“架构和规划”部分的“要求和可扩展性限制”。

构建 Oracle Linux Virtualization Manager 的技巧

由于步骤复杂且手册难以理解,即使您有一定的 Linux 和 KVM 经验,构建 Oracle Linux Virtualization Manager 环境也会令人困惑。在本节中,我们将介绍构建验证环境的技巧。

此外,至少目前,Red Hat Virtualization 文档更加完善。安装期间运行的命令不同,但总体流程和限制是相同的。建议您浏览一遍。

构建 Oracle Linux Virtualization Manager 的步骤

下图显示了构建 Oracle Linux Virtualization Manager 以实现硬分区的步骤。Stand Alone Manager 和 Self-Hosted Engine 的步骤不同。

构建 Oracle Linux 服务器的注意事项

本节描述了在安装 Oracle Linux Virtualization Manager 之前构建 Oracle Linux 服务器的注意事项。Oracle Linux Virtualization Manager 主机与 Oracle Linux KVM 主机相同。

选择安装类型

Oracle Linux 使用“最小安装”进行安装。然而,由于操作验证所需的命令可能未安装,最好至少安装以下命令:

dnf install bind-utils nc tmux tree -y

其他要求

其他要求包括以下内容。请注意,有些事项在手册中未提及。

  1. 可以进行正向和反向 DNS 名称解析。换句话说,除了 Oracle Linux Virtualization Manager 或 Oracle Linux 主机外,您还需要另一台服务器运行 DNS
  2. 必须启用防火墙。所需端口的开放由设置工具自动配置
  3. 应启用 SELinux
  4. Oracle Linux Virtualization Manager 主机的语言环境必须为 en_US.utf8

Oracle Linux Virtualization Manager 主机的语言环境必须为 en_US.utf8。如果看起来像这样,则没有问题。

# localectl
   System Locale: LANG=en_US.utf8
       VC Keymap: jp
      X11 Layout: jp

如果语言环境不是 en_US.utf8,例如 en_US.UTF-8,请执行以下操作更改它:

# dnf install glibc-langpack-en -y
# localectl set-locale LANG=en_US.utf8

选择使用的存储库

Oracle Linux Virtualization Manager 入门指南 将以下两种类型的主机描述为预安装设置。

  • 适用于 ULN 注册主机
  • 适用于 Oracle Linux Yum 服务器主机

前者是您已注册 Oracle Linux Premier Support 并使用 ULN 注册主机时的步骤。后者是无论是否拥有 Premier Support 合同,都引用公共 Yum 存储库(https://yum.oracle.com)的主机步骤。步骤略有不同,请选择适当的步骤。此步骤对于 Oracle Linux KVM 主机也是相同的。

添加 KVM 主机时如何添加公钥

在 Oracle Linux Virtualization Manager 中添加 KVM 主机时,您可以选择密码方法或 SSH 公钥方法。我们推荐 SSH 公钥方法。此时,由管理门户生成的公钥将被添加到 KVM 主机端。

# mkdir -p /root/.ssh

# vi /root/.ssh/authorized_keys ←手动添加时
# cat kvmhost.pub >> /root/.ssh/authorized_keys ←从保存的文件添加时

# chmod 600 /root/.ssh/authorized_keys

使用不同的 FQDN 访问 Oracle Linux Virtualization Manager

Oracle Linux Virtualization Manager 管理门户使用 FQDN 访问,例如 https://olvm.sample.com/ovirt-engine。然而,如果由于某种原因(例如端口转发)使用不同的主机名访问,将不会显示登录界面。此时,在 Oracle Linux Virtualization Manager 主机上定义备用主机名。

我们将创建一个定义文件。

vi /etc/ovirt-engine/engine.conf.d/99-custom-sso-setup.conf

要添加的内容如下。用空格分隔多个主机。

SSO_ALTERNATE_ENGINE_FQDNS="localhost hostname1 hostname2"

重启服务。

systemctl restart ovirt-engine

可以使用 virsh 吗?

我们写道,在 Oracle Linux Virtualization Manager 中 virsh 命令不可用。然而,可以使用只读模式。如下添加 -r 或 –readonly。

# virsh -r list --all
 Id Name                 State
----------------------------------
  0 o19v1                running
  1 o19v2                running

# virsh -r vcpuinfo o19vm1 --pretty
 VCPU:           0
 CPU:            0
 State:          running
 CPU time:       5.4s
 CPU Affinity:   0-1 (out of 12)

 VCPU:           1
 CPU:            1
 State:          running
 CPU time:       2.9s 
 CPU Affinity:   0-1 (out of 12)

遇到问题时

如果无法正确设置,除了在线搜索外,请检查以下信息:

结论

配置好 Oracle Linux Virtualization Manager 后,请按照白皮书 使用 Oracle Linux KVM 进行硬分区 中的说明配置硬分区。

最后还有一点需要注意。已配置硬分区的虚拟机的可用性。对于配置了多个 Oracle Linux KVM 主机的集群,虚拟机可以进行实时迁移。然而,硬分区中固定 CPU 的虚拟机不符合实时迁移条件。如果需要一定程度的可用性,您应考虑一个也考虑许可的恢复计划。