全部博文(36)
分类: LINUX
2011-09-19 16:33:23
环境设置:两台 Redhat LINUX5-32 机器,分别为 green 和 blue,已配置 NFS 共享目录为 /upcnfs,已配置 SSH 无密码互登陆(包括 root 用户和普通用户 guser)
(一)建立用户
建立用户 guser,ID:1000
注:guser用户用作 PBS 的提交作业用户,用于一般的作业提交任务,这个用户的id在每个节点机器上的id必须是一样的,我们在建立用户时手动指定其id,guser用户的id为1000
具体步骤为,直接添加用户,指定ID即可
(二)NFS共享文件系统
为简单省事,共享目录和目标的挂载目录均为 /upcnfs,也就是说 NFS 主节点直接使用该目录,就不用执行 mount 命令挂载到别的地方了。
注:guser 用户根目录保存到该目录下,即 /upcnfs/home/guser
(三)SSH无密码登陆
配置普通用户 guser 时注意权限问题就是了。
(四)PBS详细安装部署过程
1.1首先关闭所有节点上的防火墙!!否则server_logs日志中可能可能出现:
WARNING;ALERT: unable to contact node node13-2
04/06/2006 16:24:51;0008;PBS_Server;Job;165.node13-2.cern.ch;unable to run job, MOM rejected/rc=2
04/06/2006 16:24:51;0080;PBS_Server;Req;req_reject;Reject reply code=15041(Execution server rejected request MSG=send failed, PRERUN), aux=0, type=RunJob, from ……
1.2配置所有节点上的guser用户的UID和GID相同
1.3配置NFS,并在所有节点上挂载该NFS
1.4SSH设置,由于采用scp传输,所以需要节点之间无密码的ssh互通,但是需要注意,在进行ssh设置时,运行命令“ssh <主机名>”<主机名>不能采用简写,要同$torque_home/server_priv/nodes文件中相一致,否则无法传回运行结果。参看二。否则可能在调试pbs_mom时出现:
Host key verification failed.
lost connection
对应就行,都是简写也行,然后要调通scp,结果和日志是通过guser用户创建和传递的,要调通不同机器guser用户之间的scp,第一次yes,以后就好了,把root和guser之间的ssh都yes通
一、Torque安装
master(green) 为管理结点,others(blue) 为其他计算节点。
1、解压安装包
[root@master tmp]# tar zxvf torque-2.3.0.tar.gz
2、进入到解压后的文件夹(master为主机名)
//采用scp,默认是rcp
./configure --prefix=/usr/local/pbs --with-default-server=master --with-scp --enable-syslog
make
make install
3、
在此之前要加入环境变量
在/etc/profile中,指定PATH的变量值,添加上/usr/local/pbs/bin和/usr/local/pbs/sbin
#vi /etc/profile
在path抛出之前加入
PATH=/usr/local/pbs/bin:$PATH
PATH=/usr/locals/pbs/bin:$PATH
完成后使配置生效
#source /etc/profile
测试是否生效
(1)[root@master torque-2.3.0]#./torque.setup guser
(2)[root@master torque-2.3.0]#make packages
把产生的 tpackages , torque-package-clients-linux-x86-64.sh,
torque-package-mom-linux-x86-64.sh 拷贝到所有节点。
(3)在others上安装mom(可以省略)
[root@others torque-2.3.0]# ./torque-package-clients-linux-x86_64.sh --install
[root@others torque-2.3.0]# ./torque-package-mom-linux-x86_64.sh --install
Clients在提交作业的机子上安装,mom在计算节点上安装,server在主节点上安装
安装后并用pbs_server pobs_mom启动后qnodes里才显示free状态
(4)在master上增加计算节点
编辑/var/spool/torque/server_priv/nodes (需要自己建立)
加入如下内容
master np=4
node01 np=4
........
node09 np=4
(5)启动pbs_server,pbs_sched,pbs_mom,并把其写到/etc/rc.local里使其能开机自启动。
(pbs_server:network:Address already in use
解决方法:
查看占用端口进程 查杀
#ps -e |grep pbs_
#kill -9 <进程号>
然后[root@blade01 msi]# pbs_server
成功
)
(6)创建队列(可以省去,现在已经有默认的队列了,无须执行该步骤)
[root@master ~]# qmgr
create queue students
set queue students queue_type = Execution
set queue students Priority = 40
set queue students resources_max.cput = 96:00:00
set queue students resources_min.cput = 00:00:01
set queue students resources_default.cput = 96:00:00
set queue students enabled = True
set queue students started = True
4、在node0x (x=1-9,计算结点上)
[root@node0x torque-2.3.0]# ./torque-package-clients-linux-x86_64.sh --install
[root@node0x torque-2.3.0]# ./torque-package-mom-linux-x86_64.sh --install
然后启动pbs_mom ,把pbs_mom写入/etc/rc.local未
二、配置普通用户的ssh
1、master上
#ssh-keygen -t rsa
#cd .ssh
#cp id_pub.dsa(id_rsa.pub) authorized_keys
2、others上(反过去认证)
#ssh-keygen -t rsa
会重复吧?重命名一下?
#cd .ssh
#scp id_pub.dsa(id_rsa.pub) master:///home/guser/others
3、返回master
#cat others >> authorized_keys
三、Torque PBS使用
1、简单命令测试
使用guser用户
$echo 'sleep 10; hostname' | qsub
$qstat
查看作业运行情况。
2、编写并行作业脚本
[test1@master t]vi pbsjob
#!/bin/tcsh
#PBS -o /home/test1/pbstest/t/output 标准输出文件
#PBS -e /home/test1/pbstest/t/error 错误输出文件
#PBS -l nodes=5:ppn=4 规定使用的节点数以及每个节点能跑多少核
#PBS –q students 把任务提交到students队列中
cd $PBS_O_WORKDIR 到工作目录下(此为PBS提供的环境变量)
mpirun –machine $PBS_NODEFILE -np 20 ./vasp
4、启动mpd
mpdboot -n 10 -f mfa
mfa内容:
master:4
node01:4
….
node09:4
5、提交,查询,删除作业
提交作业:qsub pbsjob
作业提交后会有一个作业号
[test1@master pbstest]$ qsub pbsjob
48.master
查询作业:qstat
[test1@master pbstest]$ qstat
Job id Name User Time Use S Queue
------------------------- ---------------- --------------- -------- - -------------------------------
48.master pbstest test1 00:00:00 R students
删除作业:qdel 作业号
[test1@master pbstest]$ qdel 48
其他节点提交时出现这个错误
如上修改即可
解决:
在提交节点要运行该命令,修改服务器的属性
#qmgr –c “set server allow_node_submit=true”
这样其他节点才能提交任务
但是目前其他节点提交的任务不会出现STDIN.o*文件Scp的问题,调通guser之间的scp就ok了,guser之间的无密码登录和scp日志在/var/spool/torque/mom_logs里,qstat -f 可显示作业详细状态
还有个问题:提交作业后有时在/mountnfs/usr/home/guser中出现 STDIN.o*,有时不出现
解决:
要在/mountnfs/usr/home/guser目录下提交才可以,这就是利用nfs的原因了,程序和数据都要拷贝到这个目录才可以提交作业!!