分类:
2009-04-06 17:10:30
|
辛 旻 (), IBM 主机工程师, 上海宝信软件股份有限公司
2009 年 2 月 05 日
本文结合作者几年来对 IBM 虚拟化微分区的成熟经验,并以宝信实验室的 2 台 55A 的实际部署为例,论述了 IBM 的 PowerVM 虚拟化服务的详细过程,对有兴趣和开始实施 PowerVM 的同仁相信有很大的帮助。
利用 IBM 的 PowerVM 技术,我们实现了 1 台 p570 划分 20 个分区,如果实际购买机器,至少需要 20 台 p510。
显而易见,服务器虚拟化可以省电省散热省空间,大量减少 PCI 卡等等投资。拿宝信实验室举例,1 台 p55A 能顶掉原来 10 台 p52A,空间节省 75%,电节省 80%,散热减少 80%,投资也至少减少 70%,长期下来节能效果相当惊人。
利用 IBM 的 PowerVM 技术,可以使得服务器的环境完全一致,使得加上 NIM 安装技术的成功率大大提高,可以在短短 60 分钟内,部署 8 台以上的虚拟服务器,由于 APV 和 IBM 硬件控制台(HMC)密不可分,也就可以很方便地实现了这些虚拟服务器远程管理,包括启停、调整系统资源等等。
对于 IBM 的 PowerVM 技术,目前支持 AIX5.3、AIX6.1,部分 Linux,可以模拟多台从 0.1CPU,128 MB 到小于物理机器资源的机器。
|
最新的 PowerVM 是在基于 IBM POWER 处理器的硬件平台上提供的具有行业领先水平的虚拟化技术家族。它是 IBM Power System 虚拟化技术全新和统一的品牌(逻辑分区,微分区,Hypervisor,虚拟 I/O 服务器,APV,PowerVM Lx86,Live Partition Mobility)。大家对 2004 年即出现的 APV 应该记忆犹新,随着 Power6 的推出和 i 和 p 系列的合并,APV 也发展成为 PowerVM。 PowerVM 有三个版本,分别是 PowerVM Express Edition,PowerVM Standard Edition,PowerVM Enterprise Edition。对于 Power6,PowerVM 新支持 Multiple Shared Processor Pools 功能和 Live Partition Mobility 功能。
下面就其主要部分介绍一下,以方便后面实战部分的阅读。
微分区(Micro-Partitioning)
微分区改变了 POWER 系列服务器的整个规划结构。实施 APV 后,可以在资源分配方面提供更大的灵活性和细分能力。添加处理器的部分处理能力而不是整个处理器,还能够帮助客户更好地利用服务器。使用工作负载管理器(WLM)和 PLM 有助于更好地优化这些资源。
现在,分区要么是专用的处理器分区(按整个处理器的增量来分配处理能力),要么是共享的处理器分区(使用微分区);不会出现两者的组合。使用微分区时,可以将一组处理器分配到共享处理器池(SPP),然后使 LPAR 可以(根据在池中获得的容量和优先级)使用这些处理器。此时,服务器上仅有一个 SPP 可用,但多个 LPAR 可以共享这些资源。
虚拟 I/O 服务器
APV 功能部件的关键组件之一是虚拟 I/O 服务器。该设施可以提供 I/O 虚拟化和网络资源虚拟化。虚拟 I/O 服务器是一个分区,用于提供 I/O 资源共享,还用于为一个或多个客户机 LPAR 托管虚拟盘、光存储和 SEA。
虚拟 LAN
虚拟 LAN 不是 APV 的一部分,它只需要 POWER5 系统上有 AIX 5L V5.3 或支持的 Linux 版本。HMC 用于定义虚拟 LAN 设备,从而使 LPAR 通过内存而非以太网卡连接。一个 LPAR 可支持多达 256 个虚拟 LAN,每个虚拟 LAN 的传输速度都在 1 到 3 Gbps 之间。在这里,性能是值得关注的一点。如果在分区之间使用物理 LAN 连接,则适配器以 LAN 的传输速度运行,而不是以通常快许多的内存传输速度运行。由于适配器能够自行处理其任务,所以需要的处理器开销非常少。如果使用 VLAN,数据传输/交换速度会更快,因为两个分区之间基本上是内存传送。但是,这种传输需要处理器的参与。这两种传输方式的速度可能各有不同,视具体情况而定。但总的来说,VLAN 比物理互连要快。
共享以太网适配器
SEA 是一种与 APV 一起提供的 POWER5 中的新服务,它支持多个分区共享虚拟 I/O 服务器上的物理适配器。它实际上起着第 2 层网桥的作用,在客户机中的虚拟以太网适配器和主机服务器中的实际适配器之间路由数据。网络适配器共享是通过虚拟 I/O 服务器上配置的 SEA 实现的。通过虚拟 I/O 服务器,数据或者在实际网络中流动,或者经由 Hypervisor 流向实际分区。
虚拟 SCSI
在 I/O 方面,使用虚拟 SCSI 服务器共享磁盘和适配器。虚拟 SCSI 服务器运行在虚拟 I/O 服务器上,它能够支持您在一个物理磁盘上分配多个逻辑卷(LV)。然后,您可以将每个 LV 导出到不同的客户机 LPAR。客户机 LPAR 会将这些 LV 视为常规 SCSI 磁盘,而它们实际上可能是通过光纤连接到服务器。例如,您可以使用一个 146GB 磁盘驱动器,将它划分为 3 个 45 Gb LV 并将它们用作 3 个不同 LPAR 的引导磁盘。
总的来说,这些概念相互独立。为便于后面阅读和实践,我们主要弄清 2 个大的概念:微分区和 VIO server 即可,以下是我个人的白话理解:
微分区 可以理解成可以小于 1 个 CPU 并和其他分区充分共享 CPU 的 LPAR,内存的使用和 LPAR 没有什么不同。它可以使用 VIO server 共享出来的网卡和存储,也可以不用。
VIO server 是一个特殊的分区,负责共享 I/O( 网卡和存储 ) 供其他分区使用。不仅仅是微分区,实际也可以供一般 LPAR 使用,只是考虑到性能的原因,一般不这么做。其中网卡通过实际网卡通过 SEA 勾连转换为共享虚拟网卡,通过 虚拟 LAN 和各个分区连通,同时使得各个分区可以通过共享虚拟网卡的桥接与外界联系。共享存储是通过设置虚拟 SCSI 卡 vhost,可以把 VIO server 的 lv 或磁盘,(新 powerVM 还可以包括文件)映射给 vhost,实际 vhost 对应到其他分区就是一块 SCSI卡,可以供其他分区使用。
|
在做规划之前,或者说一个准备实施微分区的服务器来说,至少需要调查了解各个分区系统的以下相关情况,这些都可能影响到微分区的配置和划分。
如 CPU、内存、网络等特别是 I/O 的负载的侧重。
包括网段的划分、路由、网络设备的冗余等等在系统上线前的状况和可提供条件,以及实施运行过程中可能出现的变更。
包括存储的大小,性能的要求,以后扩展的需要。
本文由于是实验室环境,性能要求不高,所以网卡和 HBA 卡设备都由 VIO server 共享出来。实际使用时,对于性能要求较高的微分区,网卡和 HBA 卡可以单独划分给某个分区。当然需要设计和购买相应的卡。
考虑到实验室实际情况,本次实施只划分了 10 个微分区,但实际可以更多,可以事后再追加。
分区名 | 名称 |
---|---|
ss55aa01 | vio server |
ss55aa11 | 微分区 1 |
ss55aa12 | 微分区 2 |
ss55aa13 | 微分区 3 |
ss55aa14 | 微分区 4 |
ss55aa15 | 微分区 5 |
ss55aa16 | 微分区 6 |
ss55aa17 | 微分区 7 |
ss55aa18 | 微分区 8 |
ss55aa19 | 微分区 9 |
ss55aa20 | 微分区 10 |
这些微分区为开发测试分区,开发测试的人员为同一批人,所以不太可能所有的分区都同时繁忙,所以做了如下设计:
分区名 | min | desire | max | v_min | v_desire | v_max | share_mode | 权重 |
---|---|---|---|---|---|---|---|---|
ss55aa01 | 0.3 | 0.5 | 1 | 1 | 2 | 4 | uncapped | 128 |
ss55aa11 | 0.1 | 0.3 | 4 | 1 | 2 | 4 | uncapped | 64 |
ss55aa12 | 0.1 | 0.3 | 4 | 1 | 2 | 4 | uncapped | 64 |
ss55aa13 | 0.1 | 0.3 | 4 | 1 | 2 | 4 | uncapped | 64 |
ss55aa14 | 0.1 | 0.3 | 4 | 1 | 2 | 4 | uncapped | 64 |
ss55aa15 | 0.1 | 0.3 | 4 | 1 | 2 | 4 | uncapped | 64 |
ss55aa16 | 0.1 | 0.3 | 4 | 1 | 2 | 4 | uncapped | 64 |
ss55aa17 | 0.1 | 0.3 | 4 | 1 | 2 | 4 | uncapped | 64 |
ss55aa18 | 0.1 | 0.3 | 4 | 1 | 2 | 4 | uncapped | 64 |
ss55aa19 | 0.1 | 0.3 | 4 | 1 | 2 | 4 | uncapped | 2 |
ss55aa20 | 0.1 | 0.3 | 4 | 1 | 2 | 4 | uncapped | 2 |
权重越高,是当 CPU 不够分配的时候,按此比例来分配,即 2 个学习分区的权重最低,分配的 CPU 会最少。
注意,此处 VIO server 的 CPU 也为共享,优先级最高,基于以下原因:
另外,设计虚拟 CPU 时需注意,由于在微分区实际使用时,实际可使用物理 CPU 的个数受限于虚拟 CPU 的个数,即虽然你物理 CPU 的最大值为 16,但如果虚拟 CPU 个数为 4,实际能使用的 CPU 个数即为 4,所以其最大值最好接近于整个机器的物理 CPU 个数。
考虑到实际情况,前 8 个分区为开发测试环境,后 2 个为学习环境,具体调整根据实际运行后再修正。
分区名 | min | desire | max |
---|---|---|---|
ss55aa01 | 512M | 768 | 1G |
ss55aa11 | 1G | 3G | 6G |
ss55aa12 | 1G | 3G | 6G |
ss55aa13 | 1G | 3G | 6G |
ss55aa14 | 1G | 3G | 6G |
ss55aa15 | 1G | 3G | 6G |
ss55aa16 | 1G | 3G | 6G |
ss55aa17 | 1G | 3G | 6G |
ss55aa18 | 1G | 3G | 6G |
ss55aa19 | 128M | 512M | 1G |
ss55aa20 | 128M | 512M | 1G |
由于开发测试也需要模拟运行环境,有可能 2 个网段,并可能做 HA,所以做以下设计:
所有微分区网卡可设计成一样,当然也可不同 :
SCSI ID | VLAN | IEEE 802.1q 兼容适配器 | 访问外部网干线优先级 | 连接外网 |
---|---|---|---|---|
4 | 1 | 无 | 无 | 否 |
5 | 1 | 无 | 无 | 否 |
6 | 98 | 无 | 无 | 否 |
7 | 98 | 无 | 无 | 否 |
由于这些微分区作为开发测试环境的网络负载不是很高,且由于此 55A 仅 2 个内置网口,2 个外置网口,而微分区的网口需求多达 40 个,只能采用 VIO server 来设计网络需求,也同时有力佐证了 PowerVM 的好处。
这里可以看到,每个微分区的 SCSI 存储卡实际是可以对应 VIO server 上的 profile 里一个虚拟 SCSI 卡,即 VIO Server 操作系统里的 vhost。
分区名 | 微分区 SCSI ID:2 | 微分区 SCSI ID:3 |
---|---|---|
ss55aa11 | 111 | 112 |
ss55aa12 | 121 | 122 |
ss55aa13 | 131 | 132 |
ss55aa14 | 141 | 142 |
ss55aa15 | 151 | 152 |
ss55aa16 | 161 | 162 |
ss55aa17 | 171 | 172 |
ss55aa18 | 181 | 182 |
ss55aa19 | 191 | 192 |
ss55aa20 | 201 | 202 |
考虑到前 6 个分区会安装数据库,临时性的文件较多,设置 100G 的 tempvg,可以根据今后实际情况加以调整。
分区名 | rootvg1 | rootvg2 | datavg | tempvg |
---|---|---|---|---|
ss55aa01 | 139G | 139G | ||
ss55aa11 | 20G | 20G | 50G | 100G |
ss55aa12 | 20G | 20G | 50G | 100G |
ss55aa13 | 20G | 20G | 50G | 100G |
ss55aa14 | 20G | 20G | 50G | 100G |
ss55aa15 | 20G | 20G | 50G | 100G |
ss55aa16 | 20G | 20G | 50G | 100G |
ss55aa17 | 20G | 20G | 50G | |
ss55aa18 | 20G | 20G | 50G | |
ss55aa19 | 20G | 20G | 50G | |
ss55aa20 | 20G | 20G | 50G |
|
由于通常 rootvg 对磁盘读写性能要求不高,为了便于管理,将 rootvg 放在 2 个大的 vg,然后划分出 lv 来对应,其他划分磁盘 hdisk 一一对应。
lun_id | vg | disk | 大小 |
---|---|---|---|
0x000 | 55a01_rootvg1 | hdisk2 | 200G |
0x001 | 55a11_datavg | hdisk3 | 50G |
0x002 | 55a12_datavg | hdisk4 | 50G |
0x003 | 55a13_datavg | hdisk5 | 50G |
0x004 | 55a14_datavg | hdisk6 | 50G |
0x005 | 55a15_datavg | hdisk7 | 50G |
0x006 | 55a16_datavg | hdisk8 | 50G |
0x007 | 55a17_datavg | hdisk9 | 50G |
0x008 | 55a18_datavg | hdisk10 | 50G |
0x009 | 55a19_datavg | hdisk11 | 50G |
0x00A | 55a20_datavg | hdisk12 | 50G |
0x00B | ss55a01_tempvg1 | hdisk13 | 100G |
0x00C | ss55a01_tempvg2 | hdisk14 | 100G |
0x00D | ss55a01_tempvg3 | hdisk15 | 100G |
0x00E | ss55a01_tempvg4 | hdisk16 | 100G |
0x00F | ss55a01_tempvg5 | hdisk17 | 100G |
0x010 | ss55a01_tempvg6 | hdisk18 | 100G |
0x011 | ss55a01_rootvg2 | hdisk19 | 200G |
rootvg 设计
考虑到空间的原因,rootvg 尽量节省,所以保留的 20G 一个,对于磁盘紧张的机器,可以放在内置盘。如果配置 146G 一个内置盘,取出 VIO server 自身使用约 30G,可以配置 5 个分区,如果配置目前常见的 300G 一个内置盘,也是一个不错的选择。
55aa01_rootvg1:
LV | TYPE | SIZE |
---|---|---|
rootvg1_55a11 | jfs2 | 20G |
rootvg1_55a12 | jfs2 | 20G |
rootvg1_55a13 | jfs2 | 20G |
rootvg1_55a14 | jfs2 | 20G |
rootvg1_55a15 | jfs2 | 20G |
rootvg1_55a16 | jfs2 | 20G |
rootvg1_55a17 | jfs2 | 20G |
rootvg1_55a18 | jfs2 | 20G |
rootvg1_55a19 | jfs2 | 20G |
rootvg1_55a20 | jfs2 | 20G |
55aa01_rootvg2:
LV | TYPE | SIZE |
---|---|---|
rootvg2_55a11 | jfs2 | 20G |
rootvg2_55a12 | jfs2 | 20G |
rootvg2_55a13 | jfs2 | 20G |
rootvg2_55a14 | jfs2 | 20G |
rootvg2_55a15 | jfs2 | 20G |
rootvg2_55a16 | jfs2 | 20G |
rootvg2_55a17 | jfs2 | 20G |
rootvg2_55a18 | jfs2 | 20G |
rootvg2_55a19 | jfs2 | 20G |
rootvg2_55a20 | jfs2 | 20G |
对于微分区,内部网卡此处设计为 2 个网段,即 2 个 VLAN,一个为 1,一个为 98,和 VIO server 内部 vlan 一一对应;对于 VIO server 对外,可以互通,都是新 vlan 为 1。即此处 2 和 99 留有今后扩充,没有使用。因为事后添加需要重起 VIO server。
SCSI ID | VLAN | IEEE 802.1q 兼容适配器 | 新 VLAN 标示 | 访问外部网干线优先级 | 连接外网 |
---|---|---|---|---|---|
11 | 1 | 是 | 1 | 1 | 是 |
12 | 2 | 是 | 1 | 2 | 是 |
13 | 98 | 是 | 1 | 3 | 是 |
14 | 99 | 是 | 1 | 4 | 是 |
此处设置为任意分区,这样今后方便变化,可根据实际情况加以调整。这里只设计 20 个 vhost,但建议可以设计更多,因为事后添加需要重起 VIO server。
SCSI ID | vhost | 规划微分区 | 任意插槽任意分区 | rootvg | data vg |
---|---|---|---|---|---|
111 | vhost0 | ss55aa11 | 是 | rootvg1_55a11 | 55a11_datavg |
112 | vhost1 | ss55aa11 | 是 | rootvg1_55a11 | 55a11_tempvg |
121 | vhost2 | ss55aa12 | 是 | rootvg1_55a12 | 55a11_datavg |
122 | vhost3 | ss55aa12 | 是 | rootvg2_55a12 | 55a11_tempvg |
131 | vhost4 | ss55aa13 | 是 | rootvg1_55a13 | 55a11_datavg |
132 | vhost5 | ss55aa13 | 是 | rootvg2_55a13 | 55a11_tempvg |
141 | vhost6 | ss55aa14 | 是 | rootvg1_55a14 | 55a11_datavg |
142 | vhost7 | ss55aa14 | 是 | rootvg2_55a14 | 55a11_tempvg |
151 | vhost8 | ss55aa15 | 是 | rootvg1_55a15 | 55a11_datavg |
152 | vhost9 | ss55aa15 | 是 | rootvg2_55a15 | 55a11_tempvg |
161 | vhost10 | ss55aa16 | 是 | rootvg1_55a16 | 55a11_datavg |
162 | vhost11 | ss55aa16 | 是 | rootvg2_55a16 | 55a11_tempvg |
171 | vhost12 | ss55aa17 | 是 | rootvg1_55a17 | 55a17_datavg |
172 | vhost13 | ss55aa17 | 是 | rootvg2_55a17 | |
181 | vhost14 | ss55aa18 | 是 | rootvg1_55a18 | 55a18_datavg |
182 | vhost15 | ss55aa18 | 是 | rootvg2_55a18 | |
191 | vhost16 | ss55aa19 | 是 | rootvg1_55a19 | 55a19_datavg |
192 | vhost17 | ss55aa19 | 是 | rootvg2_55a19 | |
201 | vhost18 | ss55aa20 | 是 | rootvg1_55a20 | 55a20_datavg |
202 | vhost19 | ss55aa20 | 是 | rootvg2_55a20 |
根据微分区的 4 块网卡 2 个网段的需求,并考虑可靠性,VIO server 将主板的网卡和外置 PCI 网卡绑成 2 块对外聚合网卡,设计如下:
phy ent | ethernet_Channel | visual ent | vadapter id | SEA |
---|---|---|---|---|
ent0 | ent8 | ent4 | 11 | ent10 |
ent2 | ent8 | ent4 | 11 | ent10 |
ent1 | ent9 | ent5 | 12 | ent11 |
ent3 | ent9 | ent5 | 12 | ent11 |