管理集群电脑最重要的工作不是象PC机那样启动,关闭电脑这么简单,也无需做磁盘整理。笔者认为管理集群电脑最重要的是资源的组合划分,任务的分配,节点性能的监控和负载。每个节点的资源(包括内存,磁盘,处理器,网络)通过网络消息传递组合起来,这有点象操作系统将处理器,内存,磁盘,各种卡通过数据总线组合起来变成我们概念中单一的电脑。另外一个很重要的工作就是对节点性能的监控,这和PC机上操作系统监控硬件有点类似。这里简单介绍一下管理工具C3的使用方法。
1. 集群命令行工具C3
前面安装OSCAR时候我们已周详介绍过了C3这个工具的一些情况,C3主要包含以下几个命令行:
• cexec: 调用linux的命令工具,能够在任何节点上运行任何linux的命令
• cget: 从集群的任何节点获取文档
• ckill: 在指定的节点上杀死一个特定的用户进程
• cpush: 分布文档和目录到集群中
• cpushimage: 使用systemimage工具更新任何节点上的映像
• crm: 从任何节点删除文档或目录
• cshutdown: 关闭或重新启动任何节点
• cnum: 返回节点范围数值,依赖于节点基本名
• cname: 返回节点名字,带范围数字
• clist: 返回配置文档中任何节点信息
cexec命令能够让任何节点同时并行运行一个命令,像操作一台机器相同。同时一个串行的cexec命令也在其中,他是用作确定命令运行和调试用的,为了避免误用他名字是cesecs而不是cexec。
在所以节点的/etc/c3.conf文档中定义了一些节点信息,比如一个64节点的集群配置内容为:
cluster cartman {
cartman-head:node0 #head node
node[1-64] #compute nodes
}
第一行是集群名字cartman,后面该集群的配置用{}包括。第二行显示这个集群的服务器节点是node0机器,后面是任何客户机节点范围。再如配置文档:
cluster kenny {
node0 #head node
dead placeholder #change command line to 1 indexing
node[1-32] #first set of nodes
exclude 30 #offline nodes in the range
exclude [5-10]
node100 #single node definition
dead node101 #offline node
dead node102
node103
}
其中有两种offline状态:exclude和dead,exclude指定离线的机器,dead指定无效的机器。假如有特别的范围写成:1-5,9,11代表1,2,3,4,5,9,11。在运行命令行的时候能够指定机器范围,也能够默认使用配上,比如要在任何节点上运行ls ?l 命令能够
$cexec ls ?l
又比如在1-5节点上运行ls ?l则命令是:
$cexec 1-5 ls ?l
其他的节点范围指定也能够使用,比如1-5,9,11下面的命令比上面命令多显示9,11两个节点。
$cexec 1-5,9,11 ls ?l
当然您也能够指定集群的名字,在集群的任何节点上面运行命令:
$cexec cartman: ls -l
假如要在指定名字的集群中启动某些节点上的命令则其格式是
$cexec cartman:1-5 ls ?l
C3能够运行linux中的大部分命令,他使用ssh来连接节点在上面运行命令。有了C3我们能够很方便地控制我们的集群,无需每台机器都telnet然后运行我们的命令。
使用PBS调度您的作业
搭建完成您的OSCAR集群后,维护工作除了管理监控以外很重要的一点是怎样调度您的作业。一个大型的集群系统可能有上千个节点,会同时运行多个作业,完成不同的任务,假如不作很好的规划很有可能造成任务之间相互争夺集群的资源,最后即没有充分利用资源也无法按时完成。在我们安装的集群上有个叫PBS的工具就是专门调度集群任务的工具。
PBS(Portable Batch System)是由NASA研发的灵活的批处理系统。他被用于集群系统、终极电脑和大规模并行系统。PBS更有除了调度作业以外还能够管理集群的资源,假如对他作个简单总结,PBS主要有如下特征:
l 易用性:为任何的资源提供统一的接口,易于配置以满足不同系统的需求,灵活的作业调度器允许不同系统采用自己的调度策略。
l 移植性:符合POSIX 1003.2标准,能够用于shell和批处理等各种环境。
l 适配性:能够适配和各种管理策略,并提供可扩展的认证和安全模型。支持广域网上的负载的动态分发和建立在多个物理位置不同的实体上的虚拟组织。
l 灵活性:支持交互和批处理作业。
PBS其实能够灵活地使用,他即能够被用来在单一节点的或大型集群上控制任务,也能够在多个系统之间均衡负载,还能够在多个节点的电脑上运行并行或串行的任务。以上这些在实际应用中也能够混合。
PBS主要分成三个部分:
l PBS server:他运行在集群的服务器节点上,由他来控制事务并启动运行任务。
l maui scheduler:Maui调度程式根据资源管理器得到各个结点上的资源状况和系统的作业信息生成一个优先级列表。
l mom后台进程:每个节点上有一个mom后台进程,由这个进程真正启动和停止每个节点上的任务。
PBS的几个主要部件位于每个节点的{$OSCAR_HOME}/sbin目录中,到该目录您能够找到
Pbs_server是PBS的服务器,pbs_mom是mom后台进程,pbs_sched是调度程式。一般启动linux以后pbs_server服务器和pbs_mom后台守候进程就起来了,您使用ps命令能够查看:
#ps ?ef | grep pbs_
pbs_server有帮助文档能够查man pbs_server,仔细看过以后您会发现他有很多配置选项,比如指定默认节点的,也就是假如pbs很难找到您指定的节点或没有指定节点则使用,则使用default_node参数指定。能够使用pbs工具qmgr来改变server的配置:
Qmgr: s s default_node=big (s s表示set server)指定了default_node的值
使用PBS主要是以命令方式来定您的作业,他的命令的周详参考在linux里面能够使用man帮助查看,假如您要查看PBS关于资源限制的资料能够浏览pbs_resources帮助,假如想查看PBS服务器的配置能够浏览pbs_server_attribute帮助。任何的命令能够在{$OSCAR_HOME}/pbs/bin中找到,下面列出了几个PBS常用的命令及其功能:
qsub:此命令是向PBS提交您的任务。
Qdel:此命令是删除PBSd的作业。
qstat [-n]:显示当前作业状态和关联的节点。
pbsnodes [-a]:显示节点的状态。
Pbsdsh:分布式处理发射台。
在这里举个简单的例子让读者有点感性的认识,下面的提交作业是在节点X上起Y个VP中运行my_script.sh脚本,注意提交任务一定要有个运行任务的脚本。
$ qsub -N my_jobname -e my_stderr.txt -o my_stdout.txt -q workq -l
nodes=X:ppn=Y:all,walltime=1:00:00 my_script.sh
-N选项指定任务名字,-e指定标准错误输出文档,-o指定标准输出文档,-q 是队列名字,-l是后面是指定资源限制,这里指定了节点,VP个数,最大运行时间。节点定位需要周详介绍一下,nodes参数的等号后面是以“+”号相连的节点定义,每个定义之间的属性以“:”分开。一般是 node number:node name (略写):ppn= (VP个数):all (或resource)。举个例子,比如2:red:ppn=2表示在节点名字有red的2台机器上,每个机器启动2个VP来运行任务。VP是虚拟的处理器,默认情况下一个CPU启动一个VP,但是您能够启动多个VP在一个CPU上面,PBS是以VP为处理单位的而不是真实的硬件CPU。
上面的命令提交一个任务以后,我们看他运行的脚本my_script.sh:
#!/bin/sh
echo Launchnode is ‘hostname‘
pbsdsh /path/to/my_executable
第一行将在输出文档打印出机器名字,让管理员知道是哪台电脑运行此脚本。后面是抛出运行的程式。
阅读(981) | 评论(0) | 转发(1) |