IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope:Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Linux | IBM Systems  >

Linux on POWER 上的动态逻辑分区

设置和使用动态 LPAR

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

讨论


级别: 初级

Clifford Spinac (spinac@us.ibm.com), 资深软件工程师, IBM

2005 年 11 月 07 日

POWER5™体系结构的一个强大特性是它可以支持通过逻辑分区(LPAR)进行服务器的合并。动态逻辑分区提高了分区系统的灵活性,它让管理员可以添加、删除或在分区之间移动系统资源,而不用重新启动分区。本文是为 Linux® on POWER™ 系统管理员或应用程序开发人员而编写的,帮助他们学习如何在 Linux 上使用动态 LPAR,如何使用它来控制一个分区的资源,如何确定这些资源的变化。

简介

通过使用逻辑分区(LPAR),采用 POWER 处理器的 IBM 服务器可以在一台机器中支持多种系统需求。LPAR 提供了对服务器进行合并的功能,这可以帮助对系统资源进行优化,并降低系统的复杂性。在那些采用了 POWER5 处理器的服务器上,每个处理器都可以定义成 10 个逻辑分区。每个分区都可以当作一个单独的服务器使用,这样就可以提供更加有效的整体解决方案。然而,根据应用程序环境的不同,这可能是一个产品和测试环境的混合体,它可能会需要控制其他分区上的资源。动态逻辑分区提供了这种必须的灵活性来控制资源的分配。

动态 LPAR 让系统管理员可以添加、删除或在分区之间移动系统资源,例如 I/O 适配器和 CPU 的分配,而不需要在修改之后重新启动分区。动态 LPAR 让您不但可以移动虚拟资源,而且还可以移动物理资源。这样管理员就可以在需要时将资源动态分配到需要的地方。这样系统管理员就可以调整 LPAR 硬件的分配情况,而不会影响系统的可用性。

下面有几个利用动态 LPAR 提高服务器资源利用率的应用示例。一个例子包括在需要适配器的多个分区之间移动一个 PCI I/O 适配器。当一个分区中的应用程序需要使用这个适配器时,就可以将这个资源移动到这个分区中。另外一个例子是根据任务负载对分区的需求,在分区之间移动 CPU 资源。这种情况对于那些对分区的需求常常变化的系统来说是非常常见的。例如有这样一个服务器:它上面有一个电子商务应用程序分区和一个报表生成应用程序分区,它可以在第一次和第二次迁移时将主要的 CPU 资源提供给电子商务分区使用,而在第三次迁移时将 CPU 资源提供给报表生成分区使用。

要启用动态 LPAR 的支持必须安装 IBM for Linux on POWER 的产品包。在安装这些包之后,就可以在正在运行的分区上动态添加或者删除处理器或 I/O 插槽,这可以使用硬件管理终端(HMC)实现。本文将展示如何为动态 LPAR 设置 Linux 环境,如何使用动态功能,以及这些软件如何检测资源的变化。





回页首


使用动态 LPAR

本文假设读者已经了解了有关 Linux、基于 POWER5 处理器的服务器硬件、分区概念和 HMC 的知识。要设置并使用动态 LPAR,我们需要执行以下步骤:

  1. 设置安装了 Advanced Virtualization Feature 的基于 POWER5 处理器的服务器。
  2. 连接并配置到服务器的 HMC,并确保这个 HMC 可以连接到 Linux 分区上。
  3. 创建逻辑分区,并安装 SUSE LINUX Enterprise Server 9(SLES9)或 Red Hat Enterprise Linux AS 4(RHEL4)。

    注意: 对于最新的动态 LPAR 支持来说,必须安装 SLES9 Service Pack 2。请记住及时安装最新的 SLES9 Service Pack 或 RHEL4 Update。

  4. 下载并安装 IBM 支持动态 LPAR 的产品工具。
  5. 使用 HMC 来修改动态 LPAR 的资源。
  6. (可选)安装支持动态 IDE CD/DVD ROM 的 libATA 模块。
  7. 创建一个 hotplug 脚本来检测某个分区中 PCI 适配器或处理器资源的动态变化。

有关第一项到第三项的信息可以在 Linux on POWER ISV Resource Center 和 Linux on POWER Architecture 开发人员之角的文章中找到,也可以在 IBM 红皮书中找到(请参阅参考资料)。本文将着重介绍第四项到第七项的内容。





回页首


安装 Linux 对动态 LPAR 的支持

在安装 Linux 之后,必须安装支持动态 LPAR 功能所需要的产品工具包。这些包中还包含了资源监视和控制(RMC)守护进程,它负责与 HMC 进行通信。

动态 LPAR 的支持可以在运行 SUSE LINUX Enterprise Server 9 或 Red Hat Enterprise Linux AS 4 的 POWER5 机器上使用。这些包可以从下面的 Web 页面上下载:

正如前面介绍的一样,要使用完整的动态 LPAR 功能也需要安装 SLES9 Service Pack 2。另外,rpm 包 rdistcompat 都是必不可少的,我们在 SLES9 发行版本中必须安装这两个包。对于以后提供的动态 LPAR 工具支持所需要的其他包,请随时查看服务和产品工具的 Web 站点。

还要从 Web 站点上下载并安装最新的服务和产品工具包。另外,还应该考虑从 Linux 发行版的站点上安装所有的包,这可能包括可靠性、可用性和可服务性(RAS)工具。

在编写本文时,动态 LPAR 工具包括以下产品工具:


表 1. 动态 LPAR 产品工具
平台启用库librtas-1.2-1.ppc64.rpm
SRCsrc-1.2.2.1-05054.ppc.rpm
RSCT 工具rsct.core.utils-2.4.1.2-05070.ppc.rpm
RSCT 核心rsct.core-2.4.1.2-05070.ppc.rpm
CSM 核心csm.core-1.4.0.12-98.ppc.rpm
CSM 核心csm.client-1.4.0.12-98.ppc.rpm
ServiceRMdevices.chrp.base.ServiceRM-2.2.0.0-2.ppc.rpm
DynamicRMDynamicRM-1.1-2.ppc.rpm
PCI Hotplug 工具rpa-pci-hotplug-1.0-12.ppc64.rpm
动态重配置工具rpa-dlpar-1.0-13.ppc64.rpm


在下载动态 LPAR 的工具包之后,请使用 rpm 命令按照表 1 中所给出的顺序来安装这些包。例如:

# rpm –Uvh librtas-1.2-1.ppc64.rpm

RPM 会安装并启动动态 LPAR 服务。等待服务启动,或者重新启动系统。要查看服务是否正在运行,可以使用 lssrc -a 命令:

# lssrc –a

以下服务应该显示为活动状态:

  • ctrmc
  • IBM.ERRM
  • IBM.AuditRM
  • IBM.DRM
  • IBM.CSMAgentRM
  • IBM.ServiceRM
  • IBM.HostRM

当服务处于活动状态(运行)之后,就可以启用分区来从 HMC 接收动态 LPAR 命令了。为了成功地进行通信,Linux 分区和 HMC 必须能够访问相同的网络,并且能够彼此连通。因此,HMC 既不能与分区隔离,也不能有防火墙会阻塞连接。





回页首


修改逻辑分区资源

现在动态 LPAR 工具已经安装好了,服务也已经开始运行了,就可以使用 HMC 对 CPU 或 I/O 适配器插槽资源进行动态修改了。目前,动态 LPAR 并不支持对内存进行修改,这是由于 SLES9 和 RHEL4 所采用的 Linux 内核的限制。

使用 HMC 来修改分区资源

要修改一个动态 LPAR 的资源,需要在 HMC 上执行以下步骤:

  1. 打开 Server and Partition,并选择 Server Management
  2. 打开包含这个分区的服务器,并打开这个分区。
  3. 右键点击这个逻辑分区,并选择 Dynamic Logical Partitioning
  4. 选择应该修改的资源类型(Physical Adapter Resources、Processor Resources 或 Virtual Adapter Resources)。
  5. 选择 AddRemoveMove

继续使用这个对话框来完成动态修改。

图 1 给出了一个使用 Physical Adapter Resources - Add 来添加 PCI I/O 适配器插槽的例子。


图 1. 添加物理适配器资源



图 2 给出了将一个 PCI 1Gbps 以太网适配器添加到这个分区的过程。


图 2. 将一个 PCI 1Gbps 以太网适配器添加到分区中



类似地,也可以修改 CPU 资源。图 3 给出了修改共享处理器分区中虚拟处理器数量的对话框。这个对话框也可以用来增加处理单元的数目和处理器的能力。


图 3. 将虚拟处理器添加到分区中



验证分区资源的变化

在使用 HMC 动态修改 LPAR 之后,可以验证分区资源的变化,从而了解这些变化的影响。要查看该分区的 PCI 设备,请使用 lspci 命令:

# lspci
PCI bridge: IBM RADS-X PCI-X to PCI-X Bridge 
Ethernet controller: Intel Corporation 82545GM Gigabit 

/proc/ppc64/lparcfg 文件的内容提供了 LPAR 处理器资源的当前状态。清单 1 给出了这个分区在添加虚拟处理器之后 lparcfg 文件的内容。虚拟处理器的个数(即专用分区中处理器的个数)可以在 partition_active_processors 中看到。共享处理器分区的处理单元可以在 partition_entitled_capacity 中看到。还要注意 shared_processor_mode=1,因为这是一个共享处理器分区。


清单 1. 一个分区的样例 lparcfg 文件
# cat /proc/ppc64/lparcfg
lparcfg 1.6 
serial_number=IBM,0210BE5ED
system_type=IBM,9113-550
partition_id=7
R4=0x32
R5=0x0
R6=0x80070000
R7=0xc80000040004
BoundThrds=1
CapInc=1
DisWheRotPer=2070000
MinEntCap=20
MinEntCapPerVP=10
MinMem=512
MinProcs=1
partition_max_entitled_capacity=50
system_potential_processors=4
partition_entitled_capacity=40
group=32775  
system_active_processors=4
pool=0
pool_capacity=400
pool_idle_time=0
pool_num_procs=0
unallocated_capacity_weight=0
capacity_weight=128
capped=0
unallocated_capacity=0
purr=3347190012092
partition_active_processors=3
partition_potential_processors=4
shared_processor_mode=1

有关使用动态 LPAR 和 HMC 来修改资源的其他信息,以及有关安装和动态 LPAR 产品工具的信息,可以在 IBM eServer Hardware Information Center 中找到。(请参阅 参考资料。)





回页首


添加对 IDE CD/DVD ROM 的动态支持

用于 CD/DVD ROM 的 Linux IDE 设备接口并不支持热交换。因此,它不能用来将动态 LPAR 修改到一个 IDE CD/DVD ROM 驱动器上。然而,在 Linux Parallel ATA(PATA)和 libATA 模块中的最新支持可以以动态 LPAR 设备形式支持 IDE CD/DVD ROM 驱动器。启用这种支持之后,IDE CD/DVD ROM 在 Linux 中就可以作为 SCSI 设备使用了。这种支持已经包含在 SLES9 Service Pack 2 中了。

要使用动态 LPAR IDE CD/DVD ROM 的支持,pata_pdc2027x 模块必须作为 INITRD 模块进行安装。在文件 /etc/sysconfig/kernel 中,在 INITRD_MODULES 的开头添加 pata_pdc2027x,如 清单 2 所示。


清单 2. 加入 pata_pdc2027x initrd 模块的 /etc/sysconfig/kernel 文件
## Path: System/Kernel
## Description:
## Type: string
## Command:     /sbin/mkinitrd
#
# This variable contains the list of modules to be added to the
# initial ramdisk by calling the script "mk_initrd"
# (like drivers for scsi-controllers, for lvm or reiserfs)
#
INITRD_MODULES="pata_pdc2027x ibmvscsic"

现在使用 /sbin/mkinitrd 命令创建 initrd 文件,然后重新启动系统。

# mkinitrd
# shutdown –r now

现在可以使用 lsmod 命令来查看所加载的模块,寻找 pata_pdc2027x 和 libATA 模块:

# lsmod
Module                  Size  Used by
evdev                  31416  0
joydev                 31520  0
st                     73464  0
ipv6                  478392  29
sg                     74560  0
ibmveth                44800  0
usbcore               185404  1
subfs                  30168  1
dm_mod                112744  0
ibmvscsic              44552  2
pata_pdc2027x          33908  0
libata                 97304  1 pata_pdc2027x
sr_mod                 44508  0
sd_mod                 44736  3
scsi_mod              199424  6 st,sg,ibmvscsic,libata,sr_mod,sd_mod

现在 libATA 设备模块已经加载了,HMC 可以用来添加 IDE CD/DVD ROM 驱动器。HMC I/O 适配器中所列出的驱动器适配器会作为 Other Mass Storage Controller 出现。

图 4 显示了选择 “Other Mass Storage Controller” 作为 I/O 适配器来添加到这个分区中。


图 4. 将一个 IDE CD/DVD ROM 驱动器添加到分区中



在添加 CD/DVD ROM 驱动器适配器之后,要检查这个分区的 PCI 设备,请使用 lspci 命令:

# lspci 
0000:00:02.3 PCI bridge: IBM EADS-X PCI-X to PCI-X Bridge (rev 03)
0000:cc:01.0 Unknown mass storage controller: Promise Technology, 
Inc. 20275 (rev 01)

要查找 CD/DVD ROM 驱动器的 SCSI 名字,可以使用 lsscsi 命令显示所有的 SCSI 设备,并使用 grep 来查找 cd/dvd:

# lsscsi | grep cd 
[1:0:0:0]    cd/dvd  IBM     RMBO0020501    H106  /dev/sr0

现在请使用 mount 命令使用 iso9660 文件类型将这个设备只读地挂载到 /media/cdrom 中:

# mount –t iso9660 –r /dev/sr0 /media/cdrom

当这个分区不再需要 DVD/CD ROM 驱动器时,可以卸载 /media/cdrom 目录,并使用 HMC 来删除这个 “Other Mass Storage Controller” I/O 适配器。





回页首


HOTPLUG 脚本

从 2.4 版本的内核开始,对于设备的 Hotplug(热插拔)支持已经成了 Linux 的一个标准特性。它最初包含的是对 USB 和 PCI 设备的支持,以及对某些网络接口的自动配置的支持。有了热插拔的支持之后,就可以插入一个新设备并立即使用这个设备了,因为系统可以使用一个热插拔的事件来自动配置它。

热插拔事件可以用来调用一个代理任务来配置适配器、子系统或程序。代理任务利用脚本来处理并管理这种配置。这种脚本的框架就称为热插拔策略代理。这些代理与 /sbin/hotplug 脚本中的一项绑定在一起。这个脚本可以用来调试和记录事件的变化,并控制系统的热插拔代理。热插拔代理是目录 /etc/hotplug 中的一些脚本文件。一个热插拔事件可以调用一个或多个代理类型,其名字格式为 type.agent。

使用 HOTPLUG 脚本来检测资源的变化

基于 POWER5 处理器并运行 SLES9 或 RHEL4 的服务器,如果安装了 IBM 的产品工具,就可以支持 /sbin/hotplug 事件通知。这些事件包括 PCI I/O 适配器插槽的变化。

例如,当一个以太网适配器被动态添加到一个分区中时,以下代理就会被调用,从而对这个适配器和网络进行配置: pci_bus.agent、pci.agent 和 net.agent。有些事件会被调用多次从而允许捕捉事件不同状态的变化。

除了动态 LPAR I/O 的变化之外,SLES9 Service Pack 2 还支持在虚拟处理器或专用处理器数量方面发生动态 LPAR 的变化时调用 cpu.agent。因此,我们可以在 /etc/hotplug 目录中添加一个 cpu.agent 来启用对 CPU 变化事件的监视。这个脚本代理可以用来伸缩多线程的应用程序,也可以用于许可证管理的软件和系统管理工具,例如性能监视工具。这个脚本可以用来修改用户空间的参数,或根据 CPU 的变化来调用不同的应用程序。

处理单元的变化不会作为 Linux 热插拔事件进行报告,因为这些事件对于操作系统来说是透明的。

在 RHEL4 中对于 cpu.agent 的支持在撰写本文时尚不完整。有关这个支持的其他内容请查看对 RHEL4 将来的更新。

创建一个 CPU 代理脚本

动态 LPAR 事件脚本可以使用标准的热插拔事件脚本编程技术。在 /etc/hotplug 中可以找到几个事件脚本,可以用作事件编程的指南。

对于 SLES9 SP2 的 CPU 事件代理可以使用 /etc/hotplug/generic_empty.agent 样例模板来创建。清单 3 给出了一个 cpu.agent 脚本的例子。当热插拔操作出现时,动态 LPAR CPU 变化事件就可以调用这个脚本。


清单 3. 一个 /etc/hotplug/cpu.agent 脚本样例
#!/bin/bash
# $Id: cpu.agent
# Kernel hotplug params include:
#ACTION=%s [online or offline]
#DEVPATH=%s
#
cd /etc/hotplug
. ./hotplug.functions
case $ACTION in
    online)
        echo `date` ":cpu.agent" add cpu >> /tmp/hotplug.txt
        ;;
    offline)
        echo `date` ":cpu.agent" remove cpu >>/tmp/hotplug.txt
        ;;
    *)
        debug_mesg CPU $ACTION event not supported
        exit 1
        ;;  
esac





回页首


结束语

逻辑分区为基于 POWER 处理器的服务器提供了进行服务器合并和优化系统资源的能力。动态逻辑分区通过对资源的分配提供控制而不影响逻辑分区的可用性来增强这种能力。Linux on POWER 可以支持动态 LPAR 对物理 I/O、虚拟 I/O 和处理器资源的修改。

本文介绍了如何在 Linux on POWER 中启用动态 LPAR 的支持,如何使用硬件管理终端进行控制。还说明了如何使用软件监视这些动态 LPAR 资源的变化。有关 Linux on POWER 上动态 LPAR 的更多信息,请参阅下面的 参考资料





回页首


致谢

感谢 Linda Kinnunen 和 James Mathewson 帮助审阅本文。还要感谢 John Rose、Doug Maxey 和 Joel Schopp 为本文提供的技术帮助。



参考资料

学习

讨论


关于作者

Clifford Spinac 是位于德州奥斯汀的 IBM Systems and Technology Group 的一名资深软件工程师。他是一名 Linux on POWER 技术顾问,主要负责 IBM eServer ISV Solutions Enablement 方面的工作。在 IBM 工作期间,Cliff 曾经从事过很多软件开发、设计、架构、规划和咨询方面的工作。他提出了 88 项专利申请,其中有 14 项美国专利已经正式授予;他还发表了 13 篇论文,是 IBM 的一位杰出的发明家。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

将您的建议发给我们或者通过参加讨论与其他人分享您的想法.




回页首


The following terms are trademarks of International Business Machines Corporation in the United States, other countries, or both:

  • IBM®
  • POWER
  • POWER5
Red Hat, the Red Hat "Shadow Man" logo, and all Red Hat-based trademarks and logos are trademarks or registered trademarks of Red Hat, Inc., in the United States and other countries. Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both. 其他公司、产品或服务的名称可能是其他公司的商标或服务标志。

IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款