用Container实现Solaris10上的动态资源分配.doc
文本预览下载声明
HYPERLINK javascript:; 用Container实现Solaris 10上的动态资源分配 (2010-01-20 10:38)
分类: HYPERLINK /space.php?uid=685175do=blogfrmd=0classid=12736view=me Solaris
本文介绍了在Solaris 10中如何运用虚拟化技术来实现动态CPU资源管理。
关键字:Solaris 10, Container, 资源管理,resource management, CMT
Solaris 10中提供了一项强大的虚拟化技术:Container(容器),通过使用Container,我们可以在一个操作系统实例中虚拟出多个运行环境(Zone),每个Zone有自己的文件系统和网络地址,各个Zone中运行的应用互相不影响,从而实现应用级的隔离,并提高了安全性。如下图所示, 在一个Solaris 10 的操作系统中,划分了3个Container,分别运行App Server, Web Server和Database Server。
Container的使用非常简单,通常只需要5-10分钟的配置即可,所以Container的虚拟化技术得到了广泛的应用。
资源管理的作用
在缺省的情况下,各个Container都可以看见物理机器上的所有CPU 和内存,也就是说物理机上的所有CPU和内存在各个Container中是共享的。在实际运用中,往往需要对各个Container使用的资源加以指定,以便确保一些关键应用的资源。另外一种场景是需要动态调节各个Container中的资源,例如,在月末做报表时,希望临时给数据库的Zone多分配一些CPU资源,在月末压力高峰之后,就可以恢复成原来的CPU资源。动态资源调整(Dynamic Reconfiguration)的功能在中高端服务器上(如E25K,M4000-M9000等)可由硬件实现,在其他中低端类型的服务器中,我们可以用Container 来实现。
Container
Solaris 10 的Container 包括两层功能:Zone和Resource Management(RM)。Zone是指隔离的虚拟运行环境,RM是以前版本的Solaris就有的功能,可以结合Zone来动态分配资源。本文以T5220为例子加以说明,在实际中对所有运行Solaris10的多处理器机器都适用,包括X86机器。T5220 有一个UltraSPARC T2处理器,可以拥有8个核心(cores),每个核心有8个硬件线程,因此,T5220可以拥有64个硬件线程,在操作系统中可以看到有64个物理CPU,如
# psrinfo
0 on-line since 04/08/2009 14:22:42
1 on-line since 04/08/2009 14:22:45
2 on-line since 04/08/2009 14:22:45
3 on-line since 04/08/2009 14:22:45
4 on-line since 04/08/2009 14:22:45
5 on-line since 04/08/2009 14:22:45
6 on-line since 04/08/2009 14:22:45
( 略去部分输出)
61 on-line since 04/08/2009 14:22:45
62 on-line since 04/08/2009 14:22:45
63 on-line since 04/08/2009 14:22:45
创建Zone
1.创建Zone:
# mkdir –p /export/home/zones/zone1
# zonecfg -z zone1
zone1: No such zone configured
Use create to begin configuring a new zone.
zonecfg:zone1create
zonecfg:zone1set zonepath=/export/home/zones/zone1
zonecfg:zone1set autoboot=true
zonecfg:zone1add net
zonecfg:zone1:netset address=
zonecfg:zone1:netset physical=e1000g0
zonecfg:zone1:netend
zonecfg:zone1verify
显示全部