图 1.1. Red Hat Enterprise Virtualization Manager 的构架
Red Hat Enterprise Virtualization Manager 是一个基于内建 Red Hat JBoss Enterprise Application Platform 的应用程序,它为用户提供了一组图形界面接口和一组应用程序接口(API)。除了 Red Hat JBoss Enterprise Application Platform,Red Hat Enterprise Virtualization Manager 还需要其它的一些组件。
一个 Red Hat Enterprise Virtualization 环境包括一个或多个用来运行虚拟机的主机(在本文档中,我们把它简称为主机)。主机是为虚拟机提供运行环境的物理硬件系统,它包括两种形式 - Red Hat Enterprise Virtualization Hypervisor 主机和 Red Hat Enterprise Linux 主机
Red Hat Enterprise Virtualization Hypervisor 主机是运行在一个专门为虚拟主机所创建的定制操作系统上。
Red Hat Enterprise Linux 主机则是运行在一个标准的 Red Hat Enterprise Linux 操作系统上。在操作系统安装完成后,这个系统需要做进一步的配置,来使它可以作为一个运行虚拟机的主机。
Red Hat Enterprise Virtualization Manager 主机代理 - VDSM
在 Red Hat Enterprise Virtualization 环境中,VDSM 被用来启动虚拟机和存储设备上的操作。另外,它还被用来处理不同主机间的通讯。VDSM 会监控主机的资源(如内存、存储和网络),并管理各种任务,如虚拟机创建、数据统计和日志收集等。每个主机上都会运行一个 VDSM 服务来通过端口 54321(这个端口值可以被重新配置)接收 Red Hat Enterprise Virtualization Manager 所发出的管理命令。
VDSM-REG
VDSM 使用 VDSM-REG 在 Red Hat Enterprise Virtualization Manager 上注册所有主机。VDSM-REG 需要使用端口 80 或 443 来提供它本身的信息,以及主机的信息。
libvirt
libvirt 被用来协调虚拟机以及和虚拟机相关的虚拟设备的管理。当 Red Hat Enterprise Virtualization Manager 发出一个操作虚拟机的命令时(如启动虚拟机、停止虚拟机、重启虚拟机),VDSM 会调用相关主机上的 libvirt 来执行这个命令。
Storage Pool Manager(SPM)
Storage Pool Manager(SPM)是分配给一个数据中心中的某个主机的角色。作为 SPM 的主机(我们称它为 SPM 主机)全权负责数据中心中的所有与存储域相关的变化(如创建、删除和修改虚拟磁盘镜像、快照和模板)。同时,它还负责为在 Storage Area Network(SAN)中的稀疏块设备分配存储资源的任务。SPM 的角色可以在同一个数据中心的不同主机间进行迁移,因此同一个数据中心中的所有主机都必须可以访问在这个数据中心中定义的所有存储域。
Red Hat Enterprise Virtualization Manager 会确保 SPM 一直处于有效的状态。如果 SPM 所在的主机出现问题,Manager 会把 SPM 角色分配给数据中心中的另外一个主机。
虚拟机操作系统
操作系统以及在它上面运行的应用程序可以在不进行任何修改的情况下在 Red Hat Enterprise Virtualization 环境中的虚拟机上安装并运行,它们与运行在物理机器上的程序没有任何区别。
红帽还提供了一组增强的设备驱动程序,使用它们可以更块、更有效地访问虚拟设备。另外,您还可以在虚拟机上安装 Red Hat Enterprise Virtualization Guest Agent,它可以为管理控制台提供更多的虚拟机信息。
Red Hat JBoss Enterprise Application Platform 是一个 Java 应用服务器,它为跨平台的 Java 应用程序开发和部署提供了一个构架。Red Hat Enterprise Virtualization Manager 是通过使用 Red Hat JBoss Enterprise Application Platform 来部署的。
重要
包括在 Red Hat Enterprise Virtualization Manager 中的 Red Hat JBoss Enterprise Application Platform 是为运行 Red Hat Enterprise Virtualization Manager 特殊定制的,因此不能为其它应用程序提供服务。
收集报表和历史数据
Red Hat Enterprise Virtualization Manager 包括了一个数据仓库,它被用来收集监控主机、虚拟机和存储所产生的数据。Red Hat Enterprise Virtualization Manager 提供了一组预先定义的报表,用户也可以使用任何支持 SQL 查询的工具来创建报表。
Red Hat Enterprise Virtualization Manager 会在安装的过程中,在指定的 Postgres 数据库服务器上创建两个数据库。
engine 数据库是 Red Hat Enterprise Virtualization Manager 用来保存数据的主数据库,它保存了与虚拟环境相关的数据(如虚拟环境的状态、配置和性能数据)。
ovirt_engine_history 数据库保存了配置信息和各种性能统计数据,这些数据是根据不同时间从 engine 数据库中收集来的数据所产生的。系统在每一分钟都会检查 engine 数据库中的配置信息,任何改变都会被记录在 ovirt_engine_history 数据库中。记录在这个数据库中的历史信息可以被用来帮助您分析和提高 Red Hat Enterprise Virtualization 环境的性能,或帮助您解决存在的问题。
如需了解更多关于使用 ovirt_engine_history 数据库来生成报表的信息,请参阅 Red Hat Enterprise Virtualization 管理指南。
重要
在 ovirt_engine_history 数据库中记录数据的功能是通过 RHEVM History Service(ovirt-engine-dwhd)实现的。
目录服务
目录服务提供了一个基于网络的、中央存储的用户和机构信息。这些信息包括应用程序的设置、用户档案、组数据、策略信息和访问控制信息。Red Hat Enterprise Virtualization Manager 支持 Active Directory、Identity Management(IdM)、OpenLDAP 和 Red Hat Directory Server 9 所提供的目录服务。另外,它还包括了一个本地的内部域,这个域只被用来进行系统管理,并只包括一个用户 - admin。
Red Hat Enterprise Virtualization 使用一个中央化的存储系统来保存虚拟机的磁盘镜像、模板、快照和 ISO 文件。所有的存储被分为不同的逻辑组(称为存储池),而这些存储池组成了存储域。存储域由一组存储空间和代表这些存储空间内部结构的元数据所组成,它被分为 3 类:数据存储域、导出存储域和 ISO 存储域。
每个数据中心都必须包括一个数据存储域(导出存储域和 ISO 存储域则不是必需的),而每个数据存储域也只对一个数据中心有效。存储域是用来提供共享资源的,因此它必须可以被所在数据中心中的所有主机访问。
存储网络可以通过使用 Network File System(NFS)、Internet Small Computer System Interface(iSCSI)、GlusterFS 或 Fibre Channel Protocol(FCP)实现。另外,Red Hat Enterprise Virtualization 还提供了使用任何与 POSIX 兼容的网络文件系统作为数据存储域的功能(这个功能不被正式支持)。
虚拟机逻辑网络是通过集群中的每个主机上的一个软件网桥设备实现的,这个软件网桥和一个特定的网络接口相关联;而非虚拟机逻辑网络不和任何网桥相关联,它直接和主机上的网络接口相关联。Red Hat Enterprise Virtualization 环境中所包括的管理网络是通过和主机上的某个网络设备相关联的网桥实现的;而添加到集群中的其它逻辑网络需要和集群中的某个主机的网络接口直接相关联。
管理逻辑网络(ovirtmgmt)在安装 Red Hat Enterprise Virtualization Manager 的过程中被自动创建,它被专门用来管理 Red Hat Enterprise Virtualization Manager 和主机间的网络数据。如果没有设置其它的网桥,所有的网络数据将使用 ovirtmgmt 作为默认的网桥。
在 SAN(iSCSI/FCP)中,每个虚拟磁盘、模板和快照都是一个逻辑卷。块设备被组合到一个逻辑卷组中,并被逻辑卷管理器(Logical Volume Manager,简称 LVM)分为不同的逻辑卷作为虚拟硬盘供用户使用。如需更详细的信息,请参阅 Red Hat Enterprise Linux Logical Volume Manager Administration Guide。
ISO 存储域:用来存储 ISO 文件(也称为镜像,它是物理的 CD 或 DVD 的代表)。在 Red Hat Enterprise Virtualization 环境中,ISO 文件通常代表了操作系统的安装介质、应用程序安装介质和 guest 代理安装介质。这些镜像会被附加到虚拟机上,并象使用物理安装介质一样启动系统。ISO 存储域为数据中心中的所有主机提供了一组共享的 ISO 文件,这样所有的主机就不再需要物理的安装介质了。
Red Hat Enterprise Virtualization 使用元数据来描述存储域的内部结构。结构元数据会被写到每个存储域的一个数据段中,它被用来记录镜像和快照的创建和删除操作,以及卷和域的扩展操作。所有主机会使用“一人写,多人读”的机制来处理存储域元数据。
在 Red Hat Enterprise Virtualization 环境中,可以对数据域的结果进行改变的主机为称为 SPM(Storage Pool Manager),它会协调数据中心中的所有存储域元数据的改变(如创建和删除磁盘镜像、创建和迁移快照、在存储域间复制镜像、创建模板和为块设备分配存储)。每个数据中心只能有一个主机作为 SPM,其它的主机只能读存储域的结构元数据。
Red Hat Enterprise Virtualization Manager 使用精简分配策略来为一个存储池实现存储过度分配功能。虚拟机的操作会产生数据,使用精简分配磁盘镜像的虚拟机最终将会出现所写的数据大于它所在的逻辑卷的情况。当这个情况发生时,逻辑卷扩展控制功能会为虚拟机的正常运行提供更多的存储。
Red Hat Enterprise Virtualization 的网络可以从 3 个方面介绍:基本网络、集群中的网络和主机网络配置。基本网络包括了实现网络功能的基本软件和硬件;集群中的网络包括了在集群中的资源间的网络连接(如主机、逻辑网络和虚拟机);主机网络配置介绍了在一个主机上被支持的网络配置。
NIC(Network Interface Controller - 网络接口控制器) 通常被称为网卡,它是一个网络或 LAN 适配器,用来把计算机和计算网络进行连接。NIC 运行在网络层和数据连接层来为所在的机器提供网络连接功能。在 Red Hat Enterprise Virtualization 环境中的主机都最少需要有一个 NIC,但通常情况下主机都会有多个网卡。
一个物理网卡可以有多个虚拟网络(VNIC)和它相连,而一个虚拟网卡可以看做为一个虚拟机的物理网卡。为了区分虚拟网卡和物理网卡,Red Hat Enterprise Virtualization Manager 会为每个虚拟网卡分配一个独立的 MAC 地址。
在 Red Hat Enterprise Virtualization 中,逻辑网络是通过网桥来实现的。一个 IP 地址会分配给网桥而不是主机本身的物理网,这个 IP 地址不需要和连接到这个网桥上的虚拟机的网络处于同一个子网中。如果分配给网桥的 IP 地址和虚拟机处于同一个子网中,网桥所在的主机将可以被虚拟机直接访问,我们通常不推荐在 Red Hat Enterprise Virtualization 主机上运行可以被访问的网络服务。虚拟机通过它们的虚拟网卡连接到逻辑网络中,虚拟机上的每个虚拟网卡都可以通过 DHCP 或静态分配来获得独立的 IP 地址。网桥可以连接到主机以外的系统,但这不是必须的。
绑定中的一个网络接口被设置为活跃接口来处理网络数据,其它网络接口都为备份接口。如果活跃接口出现了问题,备份接口中的一个网络接口会成为活跃接口来继续处理网络数据。使用模式 1 的绑定设备的 MAC 地址只在一个端口上可见,这可以避免因为切换活跃接口所造成的 MAC 地址改变所带来的混淆。模式 1 提供了网络容错的功能。
模式 2(XOR policy)
模式 2(XOR policy)会对源和目标 MAC 地址进行 XOR 操作,所获得的结果再对“次要网卡”的数量进行取模。系统会根据最后所获得的结果来选择用来传输数据包的接口。它保证了对于每个目标 MAC 地址,相同的接口都会被选择。模式 2 提供了容错和负载均衡的功能。
当您为虚拟机添加一个虚拟网卡时,Red Hat Enterprise Virtualization Manager 会在虚拟机、虚拟网卡本身和虚拟网卡所基于的主机的物理网卡间创建一定的关联。虚拟网卡所基于的主机的物理网卡上会创建一个新的虚拟网卡和 MAC 地址。当虚拟机第一次启动时,libvirt 会为虚拟网卡分配一个 PCI 地址。这样,虚拟机就可以使用 MAC 地址和 PCI 地址(如 eth0)指定虚拟网卡。
如果虚拟机是通过模板或快照创建的,分配 MAC 地址以及把这些 MAC 地址和 PCI 地址相关联的过程会有所不同。当模板或快照中已经包括了 PCI 地址时,通过这个模板或快照所创建的虚拟机上的虚拟网卡的顺序会根据这些 PCI 地址和 MAC 地址被分配;如果模块中没有包括 PCI 地址,基于这个模板所创建的虚拟机上的虚拟网卡会根据虚拟机网卡的名称被创建;如果快照中没有包括 PCI 地址,Red Hat Enterprise Virtualization Manager 会根据快照来为虚拟网卡分配新的 MAC 地址。
创建后,虚拟网卡会被添加到网桥设备中。网桥将用来处理虚拟机和虚拟机网络的连接。
在 Red Hat Enterprise Virtualization 中的一台主机上运行 ip addr show 命令会显示这个主机上的与虚拟机相关的所有虚拟网卡信息。另外,它还会显示虚拟网络所使用的网桥信息,以及主机上的所有网卡信息。
ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:21:86:a2:85:cd brd ff:ff:ff:ff:ff:ff
inet6 fe80::221:86ff:fea2:85cd/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
link/ether 00:21:6b:cc:14:6c brd ff:ff:ff:ff:ff:ff
5: ;vdsmdummy;: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
link/ether 4a:d5:52:c2:7f:4b brd ff:ff:ff:ff:ff:ff
6: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
7: bond4: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
8: bond1: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
9: bond2: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
10: bond3: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
11: ovirtmgmt: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 00:21:86:a2:85:cd brd ff:ff:ff:ff:ff:ff
inet 10.64.32.134/23 brd 10.64.33.255 scope global ovirtmgmt
inet6 fe80::221:86ff:fea2:85cd/64 scope link
valid_lft forever preferred_lft forever
[root@rhev-host-01 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:21:86:a2:85:cd brd ff:ff:ff:ff:ff:ff
inet6 fe80::221:86ff:fea2:85cd/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
link/ether 00:21:6b:cc:14:6c brd ff:ff:ff:ff:ff:ff
5: ;vdsmdummy;: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
link/ether 4a:d5:52:c2:7f:4b brd ff:ff:ff:ff:ff:ff
6: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
7: bond4: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
8: bond1: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
9: bond2: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
10: bond3: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
11: ovirtmgmt: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 00:21:86:a2:85:cd brd ff:ff:ff:ff:ff:ff
inet 10.64.32.134/23 brd 10.64.33.255 scope global ovirtmgmt
inet6 fe80::221:86ff:fea2:85cd/64 scope link
valid_lft forever preferred_lft forever
Copy to ClipboardCopied!Toggle word wrapToggle overflow
在一个集群中的所有主机都可以访问相同的存储域,同时它们也在集群这一层来关联逻辑网络。对于一个虚拟机逻辑网络来说,为了使虚拟机可以使用它,它必须通过 Red Hat Enterprise Virtualization Manager 在集群中的所有主机上定义并配置;而对于其它类型的逻辑网络,它们只需要在使用这些网络的主机上定义。
Red Hat Enterprise Virtualization 环境使用逻辑网络来根据网络数据类型对不同网络进行分离。例如,在安装 Red Hat Enterprise Virtualization 时默认创建的 ovirtmgmt 网络被用来作为处理 Manager 和主机间的管理通信所需的网络。一般情况下,具有类似要求和使用情况的多个网络通信可以组成为一个逻辑网络。系统管理员通常会创建一个存储网络和一个显示网络来把这两种网络流量分离来,从而达到提高系统性能,方便故障排除的效果。
Red Hat Enterprise Virtualization 环境中的每个虚拟机逻辑网络都必须被主机上的网桥设备所支持。当新的虚拟机逻辑网络在一个集群中被定义后,集群中的所有主机上都需要创建一个匹配的网桥设备,这样,这个新的虚拟机逻辑网络才可以被虚拟机使用。Red Hat Enterprise Virtualization Manager 会自动为虚拟机逻辑网络创建所需要的网桥设备。
Red Hat Enterprise Virtualization Manager 为虚拟机逻辑网络所创建的网桥设备需要和主机上的一个网络接口相关联。如果和网桥相关联的主机网络接口已经被其它网络所使用,则新加入的网络接口将同样可以共享那些已经连接到主机网络接口中的网络。当虚拟机被创建并被添加到一个特定的逻辑网中时,它们的虚拟网卡会被添加到那个逻辑网所在的网桥中。这样,虚拟机就可以和连接到相同网桥中的其它设备进行网络交流。
在一个名为“Purple"的数据中心中的名为“Pink”的集群中包括两个主机:“Red”和“White”。“Red”和“White”都使用默认的逻辑网络 ovirtmgmt。数据中心“Purple”的系统管理员需要把与测试一个 web 服务器相关的网络流量和其它网络隔离开,因此系统管理员决定把这个 web 服务器和一些虚拟机添加到一个名为 network_testing 的新逻辑网络中。
首先,系统管理员在数据中心“Purple”中定义了一个逻辑网络,然后把它加入到集群“Pink”中。因为只能在主机处于维护模式时才可以部署逻辑网络,所以管理员把所有运行的虚拟机都迁移到“Red”上,并把“White”设为维护模式。然后,系统管理员需要编辑与包括在需要添加到网桥中的物理网卡相关联的网络,相应的网络接口的连接状态会从 Down 变为 Non-Operational(因为相关的网桥还没有在集群中的所有主机上被设置,所以现在的“连接状态”是“Non-Operational”)。现在,管理员需要把主机的物理网络接口添加到 network_testing 网络中。操作完成后,管理员需要激活“White”,然后把“Red”上运行的虚拟机迁移到“White“上,并在”Red“上重复在“White”上进行的操作。
当设置了电源管理和隔离(fence)功能后,Red Hat Enterprise Virtualization 环境将会提供更好的灵活性和稳定性。电源管理功能将可以使 Red Hat Enterprise Virtualization Manager 控制主机的电源操作,其中最重要的一点是可以在主机出现故障时重新启动主机。隔离功能被用来把出现故障的主机从 Red Hat Enterprise Virtualization 环境中分离,从而使整个虚拟环境正常运行。当被隔离的主机的故障被排除后,它可以重新返回正常工作的状态,并被重新加入到原来的虚拟环境中。
电源管理和隔离功能需要使用独立于操作系统的专用硬件来实现。Red Hat Enterprise Virtualization Manager 使用电源管理设备的 IP 地址或主机名来访问它。在 Red Hat Enterprise Virtualization 中,电源管理设备和隔离设备是相同的。
Red Hat Enterprise Virtualization Manager 可以重启那些处于“无法正常工作(non-operational)”或“无响应(non-responsive)”状态的主机;或为省电关闭那些有低利用率的主机,但这些操作需要电源管理设备被正确配置。Red Hat Enterprise Virtualization 环境支持以下电源管理设备:
Red Hat Enterprise Virtualization Manager 使用隔离代理(fence agent)来和电源管理设备进行交流,系统管理员可以使用 Red Hat Enterprise Virtualization Manager 配置电源管理的隔离代理(使用电源管理设备支持的参数)。简单的配置(被所有电源管理设备所支持的操作)可以通过系统提供的图形用户界面进行,而特殊的配置选项(只适用于特定隔离设备的选项)也可以通过这个界面被输入,但系统不会对它们进行任何处理,而直接把这些配置选项传递给隔离设备。被所有电源管理设备支持的操作配置包括:
在 Red Hat Enterprise Virtualization 环境中,隔离操作(fencing)就是由 Manager 通过使用隔离代理发起的、由电源管理设备负责执行的主机重启操作。隔离操作可以使集群对意料外的主机故障做出相应的响应;或根据预先设定的规则实现省电、负载均衡、虚拟机可用性策略等功能。
在 Red Hat Enterprise Virtualization 3.2 以前,配置了电源管理的主机只能识别一个隔离代理(fencing agent)。在版本 3.1 或更早版本中配置的隔离代理,以及单一的隔离代理都会被看做为“主要的”代理。“次要的”隔离代理只有在有第二个代理存在时才有效,而多个代理可以是同一个类型,也可以是不同的类型。
这个策略会把新虚拟机运行在 CPU 利用率最低的主机上。系统管理员可以设置一个“最大服务级别”值,这个值代表了集群中的主机所允许的最大 CPU 利用率,如果主机的 CPU 利用率超过了这个值,整个环境的性能就会下降。另外,系统管理员还可以设置一个时间值,它代表了在主机的 CPU 利用率超过了“最大服务级别”值多长时间后,Red Hat Enterprise Virtualization Manager 才会对主机采取行动来解决这个问题。当这个时间值被超过时,这个主机上的一个虚拟机会被迁移到集群中的 CPU 利用率最低的一个主机上。如果迁移完成后,原来的主机的 CPU 利用率仍然高于所限定的值,则重复以上步骤迁移它上面的另外一台主机,直到主机的 CPU 利用率降到所限制的范围之内。
这个策略会把新虚拟机运行在 CPU 利用率最低的主机上。系统管理员可以设置一个“最大服务级别”值,这个值代表了集群中的主机所允许的最大 CPU 利用率,如果主机的 CPU 利用率超过了这个值,整个环境的性能就会下降。系统管理员还可以设置一个“最低服务级别”值,它代表了在主机的 CPU 利用率低于这个值时,继续运行这个主机将会被认为从用电的角度来讲不符合“经济效益”。另外,系统管理员还需要为“最大服务级别”和“最低服务级别”设置一个时间值,它指定了主机的 CPU 利用率低于“最低服务级别”值(或高于“最大服务级别”值)多长时间后,Red Hat Enterprise Virtualization Manager 才会对主机采取行动来解决这个问题。当一个主机的 CPU 利用率高于“最大服务级别”值,并且处于这个状态的时间超过了所设定的时间值时,这个主机上的一个虚拟机会被迁移到集群中的 CPU 利用率最低的一个主机上。如果迁移完成后,原来主机的 CPU 利用率仍然高于所限定的值,则重复以上步骤迁移它上面的另外一台主机,直到主机的 CPU 利用率降到所限制的范围之内。当一个主机的 CPU 利用率低于“最低服务级别”值,并且处于这个状态的时间超过了所设定的时间值时,这个主机上的所有虚拟机会在“最大服务级别”条件许可的情况下迁移到集群中的其它主机上。然后,Manager 会自动关闭这台主机。如果系统在以后的某个时间需要更多的主机资源时,这个被关闭的主机会被重新启动。
如果没有选择任何负载均衡策略,新的虚拟机会在集群中的一个有可用内存,而且 CPU 利用率最低的主机上运行。其中的 CPU 利用率是通过一个算法对虚拟 CPU 的数量和 CPU 使用情况进行计算后得出的。如果选择使用这个选项,系统只有在要运行新虚拟机时才进行主机选择。另外,在主机负载增加时,系统也不会自动迁移虚拟机。
高可用性(HA)虚拟机资源保留策略可以使 Red Hat Enterprise Virtualization Manager 监控集群资源的使用情况,从而可以保证在需要的时候为高可以性虚拟机提供有效的资源。Manager 可以把虚拟机标识为“高可用性”,在需要的时候,这些虚拟机可以在其它主机上重启。在高可用性虚拟机资源保留功能被启用时,Manager 会为高可用性虚拟机预留一些资源,当因为主机故障需要进行高可用虚拟机迁移时,可以保证集群中有足够的资源来完成迁移操作。
Red Hat Enterprise Virtualization Manager 使用迁移来实现集群的负载均衡策略,当集群中的主机负载处于一定状态时,虚拟机迁移操作就会被执行,从而可以保证主机负载满足集群的负载均衡策略。另外,虚拟机迁移操作还可以被设置为当主机被隔离(fence)或被设置为维护模式时自动进行。当需要进行迁移时,Red Hat Enterprise Virtualization Manager 会首先迁移 CPU 利用率最低的虚拟机(CPU 利用率是一个百分比值,在计算这个值时不会考虑内存和 I/O 的使用情况)。
用户在访问 Manager 的所有接口(用户门户、管理门户和 REST API)时,Red Hat Enterprise Virtualization 平台需要使用目录服务来对用户进行身份验证和授权。Red Hat Enterprise Virtualization 环境中的虚拟机也可以使用相同的目录服务来进行用户身份验证和授权,但需要对虚拟机进行相应的配置。当前 Red Hat Enterprise Virtualization Manager 支持的目录服务包括 Identity Management(IdM)、Red Hat Directory Server 9(RHDS)、Active Directory(AD)和 OpenLDAP。在进行以下操作时,Red Hat Enterprise Virtualization Manager 需要使用目录服务:
用户登录(登录到用户门户、登录到管理门户、使用 REST API)。
查询并显示用户信息。
把 Manager 添加到域中。
身份验证(authentication)就是验证和识别一个对象,并保证这个对象所产生的数据完整性(data integrity)的过程。在身份验证中,主体(principal)被定义为需要被验证身份的对象;验证程序(verifier)被定义为请求主体身份验证的对象。对于 Red Hat Enterprise Virtualization,Manager 是验证程序,而用户是主体。数据完整性保证了所接收到的数据和主体所产生的数据相同。
保密性(confidentiality)和授权(authorization)是和用户身份验证相关的两个概念。保密性是指受保护的数据不会被不应该访问它们的用户所访问,好的用户身份验证机制可以实现数据的保密性。授权决定了一个主体(principal)是否可以进行某个操作。Red Hat Enterprise Virtualization 使用目录服务把用户和相关的角色进行关联,从而使用户获得相关的授权。授权的过程通常发生在用户身份验证之后,并可能需要本地或远程验证程序(verifier)的信息。
在安装的过程中,一个本地的内部域会被创建来管理 Red Hat Enterprise Virtualization 环境。在安装完成后,用户可以根据需要添加其它的域。
Red Hat Enterprise Virtualization Manager 在安装的过程中会创建一个功能有限的、内部的管理域。这个域和 AD 或 IdM 域不同,它是基于 Red Hat Enterprise Virtualization PostgreSQL 数据库中的数据的,而不使用目录服务器所提供的目录服务。这个内部域只有一个用户:admin@internal。使用这个方法可以在没有外部目录服务器的情况下试用 Red Hat Enterprise Virtualization;还可以使用这个管理员帐号对外部的目录服务进行故障排除。
使用 admin@internal 用户可以对一个虚拟环境进行初始的配置,如安装和批准主机、添加外部 AD 或 IdM 身份验证域、对外部域所提供的用户委托授权。
Red Hat Enterprise Virtualization 环境为管理员提供了两个用来简化为用户提供虚拟机操作的工具:模板(template)和虚拟机池(pool)。管理员可以通过使用模板来快速创建新的虚拟机。这个新建虚拟机会基于一个已经存在的、并己经被配置好的虚拟机来创建,从而省去了手工安装操作系统和配置系统的步骤。模板功能对于需要创建多个相似虚拟机的环境非常有用。例如,您需要使用多个虚拟机作为 web 服务器。您可以首先在一台虚拟机上安装操作系统、安装 web 服务器软件并配置系统。然后,基于这个已经配置好的虚拟机创建一个模板。当您需要创建更多虚拟机来作为 web 服务器时,就可以使用这个模板来创建它们。
要创建一个模板,管理员需要先创建一个虚拟机,在新虚拟机上安装所需的软件包并对新虚拟机进行配置。对于要被用来创建模板的虚拟机来讲,它的配置原则就是在被实施后就不需要对它进行大的改变。另外,管理员可以执行一个可选的(但推荐使用)的步骤:泛化(generalization)。泛化是指删除那些只与特定系统相关的、在不同的系统上会使用不同值的信息,如系统的用户名、密钥、时区。泛化对定制的配置不会有影响。Red Hat Enterprise Linux 虚拟机使用 sys-unconfig 进行泛化;Windows 虚拟机使用 sys-prep 进行泛化。如需了解更多关于在 Red Hat Enterprise Virtualization 环境中对 Windows 和 Linux 虚拟机进行泛化的信息,请参阅 Red Hat Enterprise Virtualization 管理指南。
在 Red Hat Enterprise Virtualization 中,第一次为一个虚拟机创建快照和以后为这个虚拟机创建后续快照的过程不同。虚拟机的第一个快照会保留镜像格式(QCOW2 或 RAW),它把当前存在的卷作为一个基础镜像。后续的快照只是一个附加的 COW 层,它只记录当前系统和前一个快照中的变化。
在 Red Hat Enterprise Virtualization 中,一个虚拟机通常使用 RAW 磁盘镜像(除非在创建是使用了“精简(thin)"镜像,或用户指定使用 QCOW2 格式)。如 图 8.1 “初始创建快照” 所示,创建的快照将包括虚拟机的磁盘镜像作为后续快照的基本镜像。
Red Hat Enterprise Virtualization 为虚拟机提供了 3 种不同类型的系统设备,它们都以物理硬件设备的形式出现在虚拟机上,而这些设备的驱动会以不同的形式工作。
模拟设备
模拟设备(有时称为虚拟设备)是完全由软件实现的设备。模拟设备驱动被作为一个在主机(用来管理后台源设备)操作系统和虚拟机操作系统间的“翻译”层,对虚拟设备的指令会通过虚拟机管理器(hypervisor)来进行“翻译”。任何和模拟设备类型相同、并可以被 Linux 内核识别的设备都可以作为虚拟驱动的后台源设备。
一个集群中的每个 Red Hat Enterprise Virtualization Hypervisor 都会有一定数量的虚拟 CPU(vCPU)。这些虚拟 CPU 可以被在这个 hypervisor 上运行的虚拟机使用。Red Hat Enterprise Virtualization Manager 在创建 Hypervisor 所在的集群时需要指定虚拟 CPU 的类型。一个集群中的虚拟 CPU 类型必须是相同的。
每个有效虚拟 CPU 类型所具有的功能特征是由它们所基于的、同名的物理 CPU 所决定的。在虚拟机上,虚拟 CPU 和物理 CPU 无法被区分。
注意
对 x2APIC 的支持:
由 Red Hat Enterprise Linux 6 主机所提供的所有虚拟 CPU 类型都支持 x2APIC。它提供了一个高级可编程中断控制器 - Advanced Programmable Interrupt Controller(APIC) 来更好地处理硬件中断。
数据分区最少需要 256MB 存储空间。使用较小的数据分区可能会导致以后无法通过 Red Hat Enterprise Virtualization Manager 对主机进行升级。在默认情况下,在分配完交换空间后所剩的所有存储都会被分配给数据分区。
交换分区需要最少 8MB 存储,您在设定它的具体值时需要考虑这个主机的实际情况,以及在环境中可能出现的“内存过度分配”的情况。“内存过度分配”是指 Red Hat Enterprise Virtualization 环境可以提供给虚拟机比实际存在的物理内存更多的内存,默认的内存过度分配的比例是 0.5。
实际的交换分区的大小可以由以下因素决定:
系统内存数量乘以内存过度分配的比例,再加上
2GB(系统的内存为 4GB 或更小)
4GB(系统的内存在 4GB 和 16GB 之间)
8GB 交换空间(系统的内存在 16GB 和 64GB 之间,或
16GB 交换空间(系统的内存在 64GB 和 256GB 之间
对于一个有 8GB 内存的系统:
(8GB x 0.5) + 4GB = 8GB
(8GB x 0.5) + 4GB = 8GB
Copy to ClipboardCopied!Toggle word wrapToggle overflow
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.