Oracle Exadata KVM 虚拟化
本文讨论Exadata上的虚拟化技术,和使用场景。Exadata最初支持基于Xen的虚拟机,从X8引入RoCE替代Infiniband后,KVM成为唯一的虚拟化引擎。
KVM for Virtual Environments
KVM 是配置了 RoCE 互连的 Oracle Exadata 系统所使用的虚拟化技术。KVM 提供内核级虚拟机管理程序支持,因此主机内核和 KVM 客户机内核相同。Oracle Exadata 部署助手 (OEDA) 用于创建 KVM 客户机和集群,KVM 客户机使用 SR IOV 虚拟功能实现 RoCE 网络连接。
配置了 RoCE 互连的 Oracle Exadata 系统不支持 Xen,配置了 InfiniBand 互连的 Oracle Exadata 系统不支持 KVM。
Exadata KVM Virtualization Overview and Best Practices
此PDF提供最新最权威的信息,版本是25年1月。推荐整个看一遍。
Exadata Database Machine Technical Architecture
这个文档中和KVM相关的在“Database Server Deployment Overview”部分。
Exadata有2种数据库服务器部署选项:
- 虚拟机 (VM) 部署:如图所示,每个数据库服务器都包含一个虚拟机管理程序,该虚拟机管理程序可以支持多个 VM 客户机,每个客户机都有自己的 Linux 操作系统、Exadata 系统软件和 Oracle 软件。具有 RoCE 网络结构的现代 Exadata 数据库云服务器型号使用 Oracle Linux KVM。每个数据库服务器上支持的最大 VM 数量取决于正在使用的 Exadata 系统硬件和软件的组合。Exadata X11M 系统在每个数据库服务器上最多支持 50 (X9M-2是12个)个 VM。
- 裸机部署:每个数据库服务器都包含 Linux 操作系统、Exadata 系统软件、Oracle 数据库和 Oracle Grid Infrastructure,但不包含虚拟化。
2点补充:
- 对于同一计算节点,Exadata只能从虚拟机和裸机部署中择一,ODA则可以并存。但对于整个Exadata,可以虚拟化计算节点和裸机计算节点并存。
- ODA可以安装应用服务器虚机,Exadata也可以,但更建议用于数据库虚机,否则有点大材小用了。
Managing Oracle VM User Domains
来自“Oracle® Exadata Database Machine Maintenance Guide”第5章。
Oracle VM 是一种基于 Xen 的虚拟化技术,可用于使用 InfiniBand 网络结构的 Oracle Exadata 数据库机系统。
虽然Infiniband技术和Oracle VM已过时,最新的VM技术使用的是KVM和RoCE网络,但本章的概念还是适用的。
每个数据库服务器上都安装了 Oracle VM Server 和一个或多个 Oracle VM 客户机。您可以使用 Oracle Exadata 部署助手 (OEDA) 创建的脚本在初始部署中配置 Oracle VM 环境,也可以将现有环境迁移到 Oracle VM。
注意:8 插槽服务器(例如 X7-8)不支持 Oracle VM。
Oracle VM 可让您在受支持的虚拟化环境中部署 Oracle Linux 操作系统和应用程序软件。
如果您在 Oracle Exadata 数据库机上使用 Oracle VM,那么它们将为您的工作负载提供 CPU、内存、操作系统和系统管理员隔离。您可以将 VM 与网络和 I/O 优先级相结合,以实现全栈隔离。为了进行整合,您可以在 Oracle VM 中创建多个受信任的数据库或可插入数据库(此处未提应用服务器),从而更动态地共享资源。
Oracle VM 环境由 Oracle VM 服务器、虚拟机和资源组成。Oracle VM 服务器是一个托管虚拟化环境,提供运行虚拟机(也称为域)的轻量级、安全的服务器平台。
Oracle VM 环境由 Oracle VM 服务器、虚拟机和资源组成。Oracle VM 服务器是安装在裸机上的虚拟机管理程序。每个 Oracle VM 服务器上的虚拟机管理程序都是占用空间极小的虚拟机管理器和调度程序。它被设计为系统中唯一具有完全特权的实体。它仅控制系统的最基本资源,包括 CPU 和内存使用情况、特权检查和硬件中断。
虚拟机管理程序在一台主机上安全地运行多个虚拟机。**每个虚拟机都在自己的域中运行,并拥有自己的客户操作系统。**主管理域 dom0(域0的缩写)也作为客户机在虚拟机管理程序之上运行。Dom0 具有对硬件和设备驱动程序的特权访问权限。托管虚拟化环境提供了一个轻量级、安全的服务器平台,可运行虚拟机(也称为域)。
用户域 (domU) 是可以访问 InfiniBand HCA 的非特权域。domU 由 dom0 在 Oracle VM Server 上启动和管理。由于 domU 独立于其他域运行,因此应用于 domU 虚拟资源的配置更改不会影响任何其他域。domU 发生故障不会影响任何其他域。
“域”、“来宾”和“虚拟机”这几个术语经常互换使用,但它们有细微的差别:
- 域是一组可配置的资源,包括内存、虚拟 CPU、网络设备和磁盘设备,虚拟机在其中运行。
- 或虚拟机被授予虚拟资源,可以独立于其他域或主机服务器本身启动、停止和重新启动。
- 来宾是在域内运行的虚拟化操作系统。每个来宾操作系统都有自己的管理域,称为用户域,缩写为 domU。
最多 8 个客户机(这里说的是没有问题的,因为其是基于Infiniband的架构)可以在同一 Oracle VM Server 上运行,每个客户机都在自己的域内。这些域是可以访问 InfiniBand HCA 的非特权域。每个 domU 都与在 Oracle VM Server 上运行的 dom0 一起启动。其他域永远不会直接与 dom0 交互。它们的要求由虚拟机管理程序本身处理。Dom0 仅提供管理虚拟机管理程序的方法。您可以使用 Oracle Exadata 部署助手 (OEDA) 在 Oracle Exadata 数据库计算机上创建和配置 Oracle VM。
在接下来的5.1.2 Oracle VM Deployment Specifications and Limits,此表只给出了到X8的数据。注意这个数据是基于Infiniband互联架构的。
支持虚机的数量与Exadata的代际和Exadata系统软件版本都相关。
根据此表,每个虚机至少需要2 CPU core和16G内存,这似乎与OCI上的要求是一致的。
对于任何现有的 Exadata 数据库服务器,支持的虚拟机数量最多为 8 个。有关软件前提条件,请参阅 My Oracle Support 说明 888828.1 和 1270094.1。在以下2个MOS中搜KVM。
- Exadata Database Machine and Exadata Storage Server Supported Versions (Doc ID 888828.1)
- Exadata Critical Issues (Doc ID 1270094.1)
Oracle VM 基础设施的两个基本部分(网络和存储)是在 Oracle VM 之外配置的。在 Oracle Exadata 上,Oracle VM 的存储(是OS的存储?还是数据库的存储???)配置为 OCFS2(Oracle 集群文件系统)存储。
将裸机 Oracle RAC 集群迁移至 Oracle VM 中的 Oracle RAC 集群的4种方法,可参见Migration of a Bare metal RAC cluster to an OVM RAC cluster on Exadata (Doc ID 2099488.1)。
4种方法,按停机时间由少到多:
- 使用现有的裸机 Oracle RAC 集群迁移到 Oracle VM 中的 Oracle RAC 集群,停机时间为零。
- 通过在 Oracle VM 中创建新的 Oracle RAC 集群,将停机时间降至最低,从而迁移到 Oracle VM 中的 Oracle RAC 集群。
- 使用 Oracle Data Guard 迁移到 Oracle VM 中的 Oracle RAC 集群,停机时间降至最低。
- 使用 Oracle Recovery Manager (RMAN) 备份和还原迁移到 Oracle VM 中的 Oracle RAC 集群,停机时间降至最低。
法1是滚动方式,即从物理RAC中逐个拆,然后加到虚机RAC中。法2是先建好虚机RAC,然后停机交换底层存储。法3和法4为传统方法。
将裸机 Oracle RAC 集群转换为 Oracle VM 中的 Oracle RAC 集群具有以下影响:
- 每个数据库服务器都将转换为 Oracle VM 服务器,在该服务器上创建管理域 (dom0) 以及一个或多个用户域,具体取决于要部署的 Oracle RAC 集群的数量。数据库服务器上的每个用户域都属于特定的 Oracle RAC 集群。
- 作为转换过程的一部分,首先将裸机 Oracle RAC 集群转换为 Oracle VM 中的一个 Oracle RAC 集群。每个数据库服务器将有一个用户域。
- 转换结束时,存储单元的单元磁盘和网格磁盘配置与转换开始时相同。
- 管理域将使用每个数据库服务器上的一小部分系统资源。通常,管理域使用 8 GB 内存和 4 个虚拟 CPU。在调整 Oracle VM 中 Oracle RAC 集群上运行的数据库的 SGA 大小时必须考虑到这一点。
在 Oracle VM 用户域上备份和恢复 Oracle 数据库与在物理节点上备份和恢复 Oracle 数据库相同。
用户域的内存和CPU核数都是可调整的,只不过前者需要重启,后者可动态调整。存储也是可以动态添加,但此处有个问题,即数据库的存储是直接还是间接来自ASM(即通过vdisk)。
这一节5.17 Creating a User Domain Without Oracle Grid Infrastructure and Oracle Database说明,可以创建没有数据库和GI的虚机,也就是技术上可创建应用服务器虚机。
使用基于快照的备份来备份管理域 dom0。备份用户域可以基于用户域内部或外部(OCFS2)的快照,基于外部的方法可选择一次性备份所有用户域或只备份一个用户域。以上的备份均指操作系统的备份,即文件系统的备份,非数据库。
对于在 Oracle Exadata 上的 Oracle VM 中运行的 Oracle Real Application Clusters (Oracle RAC) 集群,您可以使用自定义 InfiniBand 分区、专用分区键和分区表隔离每个 Oracle RAC 集群的 InfiniBand 网络上的网络流量。
Managing Oracle Linux KVM Guests
来自“Oracle® Exadata Database Machine Maintenance Guide”第6章。
从 Oracle Exadata X8M-2 开始,Oracle Linux KVM 是使用 RoCE 网络结构的系统的虚拟化技术。
每个数据库服务器上都安装了一个 KVM 主机和一个或多个客户机。您可以使用 Oracle Exadata 部署助手 (OEDA) 创建的脚本在初始部署中配置 Oracle Linux KVM 环境,也可以将现有环境迁移到 Oracle Linux KVM。
注意:8 插槽服务器(例如 X8M-8)不支持 Oracle Linux KVM。
Oracle Linux KVM 可让您在由 KVM 管理的受支持的虚拟环境中部署 Oracle Linux 操作系统和应用程序软件。
从 Oracle Exadata 系统软件版本 19.3.0 开始,KVM 是与配置了 RDMA over Converged Ethernet (RoCE) 互连的 Oracle Exadata 系统一起使用的虚拟化技术。
Oracle Linux KVM 环境包含管理服务器(KVM 主机)、虚拟机和系统资源。KVM 主机是一个托管虚拟环境,为多个虚拟机 (VM)(也称为来宾)提供轻量级且安全的服务器平台。每个 KVM 主机支持的最大来宾数量取决于正在使用的 Oracle Exadata 系统硬件和软件的组合。请参阅 Oracle Linux KVM 部署规范和限制。
在此规范中,X11M支持的虚拟机数量是50,X11M-Z则为4。X10M/X9M/X8M和X10M/X9M/X8M 1/8则分别为12和4。
KVM 主机安装在裸机上。每个 KVM 主机上的虚拟机管理程序都是占用空间极小的 VM 管理器和调度程序,旨在成为系统中唯一具有完全特权的实体。它仅控制最基本的系统资源,包括 CPU 和内存使用情况、权限检查和硬件中断。
虚拟机管理程序在一台主机上安全地运行多个虚拟机。每个虚拟机都在具有自己操作系统的单独来宾中运行。KVM 主机具有对硬件和设备驱动程序的特权访问权限,是您管理所有来宾的环境。
来宾是使用一组定义的系统资源的非特权虚拟机。来宾在 KVM 主机上启动和管理。由于来宾独立于其他虚拟机运行,因此应用于来宾虚拟资源的配置更改不会影响任何其他来宾。来宾的故障不会影响任何其他来宾。
每个来宾都与 KVM 主机一起运行(这里的原文是runs alongside,这可以解释ODA为何可以同时运行物理和虚拟的数据库。但Exadata并没有选择这么做。虽然Oracle在Exadata KVM Virtualization Overview and Best Practices中认为KVM是Type 2 虚拟化,即runs atop an OS而非bare metal,但KVM虚拟化是在内核中的,还是有些不一样),并且从不与其直接交互。来宾要求由虚拟机管理程序处理,KVM 主机仅提供管理虚拟机管理程序的方法。
补充: 按这里的说法。KVM是kernel的一部分,而非在kernel之上运行,所以kernel就是hypervisor,从这一点来说,KVM更像Type 1虚拟化。
Oracle Exadata 部署助手 (OEDA) 提供了在 Oracle Exadata 上配置 Oracle Linux KVM 的工具。您还可以使用 vm_maker 命令行实用程序来管理 Oracle Linux KVM 来宾。
Oracle Linux KVM 基础架构的两个基本部分(网络和存储)是在 Oracle Linux KVM 之外配置的。
Oracle Linux KVM 始终需要一个位置来存储对于创建和管理虚拟机 (VM) 至关重要的环境资源。这些资源包括 ISO 文件(虚拟 DVD 映像)、VM 配置文件和 VM 虚拟磁盘。这类资源组的位置称为存储库。在 Oracle Exadata 上,Oracle Linux KVM 的存储使用 XFS 文件系统(这么看来,这里的存储不包括数据库的存储,数据库应来自ASM)。
是否可以创建没有数据库的虚机呢?
和第5章不同,本章没有提及这一点。当然你也可以拿数据库虚机当应用服务器虚机用,但不建议这么做。
剩下的部分就和上一节(也就是第5章)基本相同了。
Use Cases for Virtualizing Your Exadata Database Machine
这篇文章列举的Exadata的使用场景很有用,尽管其示例用的技术是Xen而非KVM。
本质上,Exadata使用虚拟化就是为了更好的隔离。几个场景如下:
- 为了Oracle 许可(节省成本)隔离。
- 按照工作负载隔离,如生产/开发/测试隔离。例如SAP或EBS数据库。
- 按照SLA隔离,如白金/黄金/白银。
- 安装安全性与合规性(数据分类)隔离。
Adding a VM Cluster to Oracle Exadata Database Machine Using OEDA
通过OEDA(Oracle Exadata Deployment Assistant)做一次配置了解虚拟化,可以带来直观的感受。下载地址见这里。