本文向您详细地介绍了 Power System 虚拟化相关的技术和亮点,让您对这些最新的虚拟化技术有一个全面的了解。本文来自 IBM Systems Magazine for AIX 中文版。
自从引入 POWER5 技术以来,虚拟化提供了许多出色的特性。它是服务器整合的基础;有助于减少计划内停机时间,对于绿色计算领域很重要。更快更大的服务器不但有更多的可用内存,而且包含 Virtual I/O (VIO) 服务器、Virtual Ethernet、shared Ethernet adapter (SEA)、Virtual SCSI 和 Micro-Partitioning 等功能。另外,Simultaneous multi-threading (SMT) 可以显著提高大多数工作负载的性能。但是,使用这些特性的关键是至少要安装 AIX V5.3(或 Linux),这是使用这些新特性所需的 OS 版本。基于 POWER6 处理器的服务器上的 AIX V6 提供更高级的虚拟化特性。
POWER5 和 POWER6 服务器的另一个好处是,它们可以在同一台服务器上的不同 LPAR 中同时运行多个不同的 OS。一台服务器可以同时运行 AIX V5.3、AIX V6.1、SUSE Linux Enterprise Server 和 Red Hat Enterprise Linux,它们都在自己的 LPAR 中运行。另外,可以使用 VIO 服务器功能支持它们。hardware management console (HMC) 或 integrated virtualization-manager (IVM) 软件管理服务器。
选项和术语
与虚拟化有关的术语比较混乱。术语分为三个领域:CPU、内存和 I/O(网络和磁盘)。但糟糕的是,一些命令使用略有不同的缩写词表示相同的东西。在 POWER6 处理器上,通过称为 PowerVM 的特性提供虚拟化。这个特性在 POWER5 系统上称为 Advanced Power Virtualization。POWER6 系列包含三个服务器版本:Express、Standard 和 Enterprise。Express 版只能在入门级系统(Power 520 和 Power 550)上使用,它的功能有限,比如只支持 IVM 和在 VIO 服务器中包含三个 LPAR。Standard 版提供所有虚拟化特性,但是不包括两个为 Enterprise 版保留的功能。Enterprise 版在 Standard 版的基础上增加了 live partition mobility 和 Active Memory Sharing 功能。
对于 POWER5 和 POWER6 服务器,总是运行 POWER Hypervisor,它提供把物理实体(CPU、内存和 I/O 设备等)与实际软件或 LPAR 隔离开的功能。通过运行 VIO 服务器支持客户机 LPAR 可以进一步增强虚拟化功能。VIO 服务器是定制的 LPAR,提供 SEA 和 Virtual SCSI 功能以及 live partition mobility 和 Active Memory Sharing。以前,即使 LPAR 很少使用 I/O 卡,也必须把整个槽分配给 LPAR;通过使用 VIO 服务器,可以在 LPAR 之间共享 PCI 槽中的卡。这可以显著减少 I/O 抽屉、I/O 卡和相关成本。
设置
一定要了解内存和 CPU 资源的三个设置。最小值是引导 LPAR 所需的最低量;在 LPAR 正常引导时,如果资源可用,它会使用期望值;最大值是正在运行的 LPAR 可以使用动态 LPAR 操作把资源提高到的上限。
Virtual Ethernet 和 SEA
Virtual Ethernet 是从 AIX V5.3 开始引入的,它并不需要 PowerVM。它让两个 LPAR 可以通过 Hypervisor 和 Vrtual Ethernet 通道通信。Virtual Ethernet 传输网络通信流需要一些 CPU 和内存。它还支持 Virtual LAN 和其他安全机制。
SEA 利用 Virtual Ethernet。SEA 并不把以太网适配器分配给 VIO 服务器上的每个 LPAR,而是把实际适配器(或聚合在一起的适配器组)分配给 VIO 服务器。LPAR 使用 Virtual Ethernet 与 VIO 服务器通信,必须传输到机器外的通信流都通过 VIO 服务器中的 SEA 发送出去。为了提供冗余,通常用两个 VIO 服务器作为 SEA,一个设置为主 SEA,另一个在执行故障转移时运行。SEA 可以减少系统上以太网卡的数量并提供故障转移和冗余。
Virtual SCSI
以前,如果希望为 LPAR 提供引导磁盘,就必须为连接磁盘的卡提供一个槽,这个槽是这个 LPAR 专用的。随着服务器越来越大、越来越快,需要在其中整合更多的 LPAR,这会显著增加引导 LPAR 所需占用的磁盘和槽数量,更何况还有实际数据磁盘。Virtual SCSI 让 VIO 服务器拥有适配器和磁盘,VIO 服务器可以分割磁盘并把部分磁盘(或整个磁盘)提供给 LPAR,让客户机 LPAR 认为自己拥有完整的引导磁盘。例如,根据 rootvg 的干净程度,大多数 LPAR rootvg 的大小在 30 到 45 GB 之间。目前最小的磁盘大约为 146 GB。通过使用 VIO 服务器,这个 146 GB 的磁盘可以轻松地分割为三个逻辑卷,每个逻辑卷可以作为一个 LPAR 的引导卷。即使为了提供冗余使用两个 VIO 服务器,这仍然可以显著减少磁盘、PCI 卡和 I/O 抽屉。
内存
直到不久之前,内存的情况还非常简单:内存是 LPAR 专用的。一定要记住,用来跟踪真实内存到虚拟内存映射的 Hypervisor 页面表条目的大小是根据 LPAR 的最大内存计算的,而不是根据期望内存。用户根据经验设置 LPAR 的最大内存,让 Hypervisor 的开销不会超过必要量太多。例如,如果服务器有 128 GB 内存,而 LPAR 的期望内存为 4 GB,那么把最大内存设置为 8 GB 左右而不是 128 GB。
这些页面表条目的 Hypervisor 开销的计算方法通常是,最大内存设置除以 64,然后向上取整到最接近的逻辑内存块大小。对于上面的示例,如果把最大内存设置为 128 GB,Hypervisor 就会为这个 LPAR 的页面表条目保留至少 2 GB 内存,尽管期望值只是 4 GB。如果最大内存设置为 8 GB,那么只保留 128 MB(根据逻辑内存块大小,也可能保留 256 MB)。
4 月,IBM 发布了 Active Memory Sharing 特性。这个工具提供可以由分区共享的内存池,允许在某些情况下过量使用内存,这样就不必购买很多内存。Active Memory Sharing 需要 AIX V6.1(或 IBM i 或 Linux)、POWER6 硬件和一些特定的固件版本。它还需要 PowerVM Enterprise 版,要求 LPAR 中的所有资源都是虚拟化的,LPAR 必须在共享处理器池中(使用 Micro-partitioning)。
Active Memory Sharing 是为内存需求变化大的 LPAR 设计的。VIO 服务器有一组特殊的 Active Memory Sharing 分页设备,在另一个 LPAR 需要内存时,可以根据设置时选择的选项交换出 LPAR 的内存。Active Memory Sharing 并不适用于内存使用量非常稳定或需要可预测的高性能的工作负载。它非常适合大多数测试和开发环境。关于 Active Memory Sharing 如何工作的更多信息,请参见 “Upping the Ante” (www.ibmsystemsmag.com/aix/junejuly09/coverstory/25427p1.aspx)。
CPU
讨论 CPU 时使用的术语也很混乱。在 IBM Power Systems 环境中,CPU 表示单一处理器或单一处理器核。对于其他厂商,不一定是这种含义,所以最好使用 “核” 这个词,尤其是在讨论许可证时。
核要么分配给 LPAR,要么放在共享处理器池中。有一个特性称为 dedicated donating,但是它的行为基本上与共享处理器池相似。对于专用的核,在引导时把物理核分配给 LPAR,同一个核一直由这个 LPAR 使用。因为一个时钟周期提供 10 毫秒 (ms) 的分派窗口,所以核的分派窗口是 10 ms。当前没有分配给专用 LPAR 的所有核通常都放在共享处理器池中。
在 POWER6 技术出现之前,只有一个共享处理器池。POWER6 服务器支持最多 64 个池,默认的池是 pool 0。如果把 LPAR 定义为使用共享处理器池,它们就可以使用 Micro-partitioning 功能。这意味着可以给 LPAR 分配一个核的十分之一,如果设置正确,LPAR 可以动态地收缩和增长。
基于 POWER5 处理器的 Power Systems 服务器支持 SMT。在基于 POWER5 和 POWER6 处理器的服务器上,许多寄存器是双重的,所以可以在同一个分派窗口中给同一个核分派两个线程,让它们同时运行,这样就可以利用流水线寄存器复制提供的优势。
虚拟 CPU、处理单元和逻辑 CPU 这三个概念会给理解处理能力设置造成困扰。首先,处理能力基本上是衡量可以使用的资源的指标。就像一品脱的瓶子有固定的容量,在给 LPAR 分配 CPU 和内存等资源时,也是指定可以使用的资源量。
专用的 CPU
在专用环境中,有一个核的服务器会显示一个处理器(可能在 lsdev –Ccprocessor 的输出中表示为 proc0)。如果关闭 SMT,vmstat 中的 lcpu 会显示有一个逻辑 CPU,lparstat 显示一个在线的虚拟 CPU。在这种情况下,这两个概念不会造成混淆。在关闭 SMT 时,vmstat 中的 lcpu=1 意味着一个真实的核分配给这个 LPAR。在分派线程时,它被分派给 proc0,proc0 代表真实的核。
如果打开 SMT 并运行 vmstat 和 lparstat,会在 vmstat 中看到 lcpu=2,而 lparstat 显示一个在线的虚拟 CPU。在专用环境中,没有虚拟 CPU 这样的概念,但是命令术语不变。lparstat 中的虚拟 CPU 实际上就是真实的 CPU。但是,如果打开 SMT,就会出现逻辑 CPU 的概念。每个逻辑 CPU 代表可以在同一个核上同时运行的线程之一。现在可以使用 mpstat –s 查看分派线程的情况。在打开 SMT 时,vmstat 中的 lcpu=2 意味着有一个核。在分派线程时,它被分派给逻辑 CPU,而逻辑 CPU 映射到 proc0,proc0 代表真实的核。
在专用环境中,有 5 个关键的设置:最小处理器数量、期望处理器数量、最大处理器数量、dedicated donating 以及一个决定在 LPAR 不运行时是否把核返回给池的选项。期望处理器数量是这个 LPAR 在引导时尽可能尝试使用的数量。专用 LPAR 的所有处理器设置都是表示核数的整数。
共享的 CPU
在共享 CPU 的环境中,虚拟处理器或 CPU 的概念是有意义的。核放在处理器池中,然后通过特定的设置给 LPAR 分配这个池。在核分配方面,现在有 6 个设置:最小、期望和最大处理器单元,最小、期望和最大虚拟处理器数量。因为可以把核的一部分分配给 LPAR,所以使用 “处理器单元 (PU)” 这个词,而不使用核。
例如,我们为一个 LPAR 设置最小值 0.1 PU、期望值 0.8 PU 和最大值 6 PU。还为它设置最小值 1 个虚拟处理器、期望值 2 个虚拟处理器和最大值 6 个虚拟处理器,而且它是不封顶的。打开 SMT。LPAR 按照期望设置(0.8 PU 和 2 个虚拟处理器)引导。
vmstat 命令显示 LCPU 为 4,lparstat 显示 2 个在线的虚拟 CPU。vmstat 和 lparstat 都显示标称处理能力为 0.8,vmstat 还显示 %entc 和 pc 字段。
PU 的期望设置(这里是 0.8)也称为标称处理能力。在 vmstat 中,%entc 是标称处理能力中正在使用的百分比,pc 是当前使用的处理器单元数量。在 LPAR 引导并获得期望的 PU 时,就会保证它随时可以使用期望的 PU。如果 LPAR 不使用这些 PU,Hypervisor 可以把它们分配给另一个 LPAR。如果 LPAR 是不封顶的,它可以超过它的标称处理能力,使用其他 LPAR 不使用的处理器资源。
虚拟处理器数量在共享的环境中有几个用途。首先,虚拟处理器数量决定 LPAR 认为它有多少个核。如果 VP=2,那么 LPAR 有 proc0 和 proc2,它认为自己有 2 个物理核。对于期望设置为 0.8 PU 的情况,这相当于有 2 个虚拟处理器,每个的初始分派窗口为 4 ms(对于完整的核应该为 10 ms)。在分派这两个虚拟处理器时,它们可以分派给相同或不同的核。系统会尝试把它们分派到以前运行它们的核上,但是不保证这一点。必须特别注意虚拟处理器设置,因为它们还告诉 LPAR 可以增长到多大,而且一些软件厂商使用它们计算许可证费用。
在前面的示例中,LPAR 是不封顶的,共享处理器池中有 6 个核,标称处理能力为 0.8,虚拟处理器数量设置为 2;打开了 SMT。在这种情况下,LCPU 显示为 4:因为有两个虚拟处理器,然后由于打开 SMT 而加倍。另外,尽管这个 LPAR 是不封顶的,但是它在增长时不能超过 2 PU,因为虚拟处理器数量实际上起到上限的作用。要想使用池中的所有 6 个核,必须把虚拟处理器数量设置为 6。不封顶的 LPAR 可以超过它的标称处理能力(期望的 PU),但是不能超过期望的虚拟处理器数量或池大小(以其中比较小的值为准)。
关于 Micro-partitioning 技术还要注意几点:
- 与专用的核一样,完整的核的分派时间是 10 ms 的时间片。
- 标称处理能力为 0.3 意味着一个核的百分之 30,即 3 ms 的时间片。
- 标称处理能力为 1.4 意味着,对于每个 10 ms 的时间片,LPAR 有 14 ms 的处理时间(显然需要跨多个核)。对于 2 个虚拟处理器,这相当于每个核上 7 ms。
- 对于一个核,分配的虚拟处理器越多,分派窗口就越小。
- 根据标称处理能力、虚拟处理器数量和中断数量,一个 LPAR 可以在多个核上运行。
- 期望的虚拟处理器数量不能超过标称处理能力的 10 倍或 64(以其中比较小的值为准)。
对于不封顶的 LPAR,每个虚拟处理器可以增加它使用的处理能力,但是不超过一个完整的核(即 10 ms)。因此,即使一个 LPAR 的标称处理能力只有 0.8,但是如果它有两个虚拟处理器而且不封顶,在有资源可用的情况下,它可以增长到 2 个完整的核。但是,如果虚拟处理器数量设置为 1,它就不能超过一个核。如果 LPAR 设置为封顶的,规则就不一样了;封顶的 LPAR 不能超过它的标称处理能力。因此,如果这个 LPAR 是封顶的,它就不能超过 0.8 PU(见表 1)。
>表 1.共享 CPU
标称数量 | 2.0 | 2.0 | 2.0 |
需要的虚拟处理器数量 | 4.0 | 6.0 | 4.0 |
最大增长 | 4 PU | 6 PU | 2.0 |
虚拟化的好处和困难
显然,明智地实现虚拟化可以显著地节省资源。但是,要想理解虚拟化背后的概念,一定要掌握相关术语。标称处理能力、处理器单元、虚拟处理器、处理能力和池尤其重要。
本文的英文原文最先在 IBM Systems Magazine 在线网站(www.ibmsystemsmag.com)上发布。
Jaqui Lynch 是 IBM Systems Magazine, Power Systems - AIX 版的技术编辑和 Mainline Information Systems 的资深系统工程师。可以通过 [email protected] 联系 Jaqui。