网格环境配置(三):安装SGE

安装 SGE
开始安装 SGE vm1作为 sge master主机。用户账号和系统服务这些信息都通过 NIS服务器来统一管理。 master主机和执行机通过 NFS服务共享 $SGE_ROOT sge_qmaster服务的端口号为 6444/tcp sge_execd的端口号为 6445/tcp。没有 shadow主机。采用 classic spooling
其中 master主机和所有的 exec主机共享 $SGE_ROOT,这是最容易管理、测试、调试的方法。 sge网站上的一篇文章 (链接: http://gridengine.sunsource.net/howto/nfsreduce.html )总共给了四种方案,摘录如下:

Configuration
Description
Advantage
Disadvantage
default
executables, configuration files, spool directories: all shared
simple to install
easy to upgrade
easy to debug
potentially significant NFS traffic
local spool directories
executables, configuration files: shared .
spool directories: local to each compute host
simple to install
easy to upgrade
significant reduction in NFS traffic
less convenient to debug (must go to individual host to see execd messages file)
local executable files
configuration files: shared
executables, spool directories: local to each compute host
near-elimination of NFS traffic (NOTE: consequences especially seen when running massively parallel jobs across many nodes)
less convenient to install and upgrade (must modify files on every host)
less convenient to debug
local configuration files
executables, configuration files, spool directories: all local to each compute host
elimination of NFS requirement
less convenient to install and upgrade
less convenient to debug
less convenient to change some configuration parameters (must modify files on every host)
loss of shadow master functionality; partial loss of qacct functionality

上面第四种, local configuration files的方式,完全不需要 NFS。这篇文章随后介绍了如何用这种“完全不需要 NFS”的方式安装 SGE,方法如下:

  1. 在所有机器上把 SGE的安装包 (一个 common包和一个平台相关的包 )解压到同名路径下,这个路径就是 $SGE_ROOT
  2. master主机上运行 install_qmaster,完成 master主机上的安装;
  3. 在完成 master主机的安装后,在 master主机上做好一切配置 (所有站点相关的配置文件都在 $SGE_ROOT/$SGE_CELL/common目录下 )
  4. master主机上把 $SGE_ROOT/$SGE_CELL/common目录 (在第 3步完成以后,这个目录包含完整的配置文件 )打包;
  5. 在每个执行机上,解压第 4步创建的 archive
  6. 在每个执行机上,运行 install_execd完成执行机的安装,安装过程会自动从解压的目录中读取配置文件。

在每台机器上都设置 SGE_ROOT=/opt/sge,在 vm1上创建 sgeadmin用户,修改 /etc/services文件,加入下面两行:
sge_qmaster 6444/tcp
sge_execd 6445/tcp
然后, /usr/lib/yp/ypinit -m重新构建 NIS数据库。
[root@vm1 sge]# tar zxvf /software/sge-6.1u5-common.tar.gz
[root@vm1 sge]# tar xvf /software/sge-6.1u5-bin-lx24-x86.tar.gz
[root@vm1 sge]# chown -R sgeadmin:sgeadmin $SGE_ROOT
[root@vm1 sge]# util/setfileperm.sh $SGE_ROOT
注:因为安装时出现“不能创建 default目录“的错误,所以先把 $SGE_ROOT的所有者改为 sgeadmin,然后运行 util/setfileperm.sh脚本设置文件权限。
[root@vm1 sge]# ./install_qmaster
一路回车就好。
[root@vm1 sge]# . default/common/settings.sh
[root@vm1 sge]# ps ax | grep sge
5016 ? S 0:00 /opt/sge/bin/lx24-x86/sge_qmaster
5044 ? S 0:00 /opt/sge/bin/lx24-x86/sge_schedd
安装执行机:
[root@vm1 sge]# qconf -sh
vm1
[root@vm1 sge]# ./install_execd
一路回车。
[root@vm1 sge]# ps ax | grep sge
5016 ? S 0:00 /opt/sge/bin/lx24-x86/sge_qmaster
5044 ? S 0:00 /opt/sge/bin/lx24-x86/sge_schedd
5444 ? S 0:00 /opt/sge/bin/lx24-x86/sge_execd
vm2,vm3上安装执行机。
首先导出 $SGE_ROOT。修改 vm1上的 /etc/exports
/home * (rw,sync)
/opt/sge * (rw,sync)
重启 nfs服务:
[root@vm1 sge]# service nfs restart
[root@vm1 sge]# qconf -ah vm2
vm2 added to administrative host list
[root@vm1 sge]# qconf -as vm2
vm2 added to submit host list
vm2上:
[root@vm2 root]# echo $SGE_ROOT
/opt/sge
[root@vm2 root]# mount -t nfs vm1:/opt/sge /opt/sge
[root@vm2 root]# cd $SGE_ROOT
中途出现错误:
The current hostname is resolved as follows:



Hostname: vm2
Aliases: localhost.localdomain localhost
Host Address(es): 127.0.0.1



It is not supported for a Grid Engine installation that the local hostname
contains the hostname "localhost" and/or the IP address "127.0.x.x" of the
loopback interface.
于是,把 vm2上的 /etc/nsswitch.conf中的 hosts: files nis dns改成 hosts: nis files dns,问题解决。
但是安装之后用 ps查看并没有在 vm2上看到 sge_execd进程,在 /tmp下找到错误信息:
[root@vm2 sge]# vim /tmp/execd_messages.2684
错误提示是不能创建目录 vm2,于是:
[root@vm2 sge]# cd default/spool/
[root@vm2 spool]# ls
qmaster spooldb vm1
[root@vm2 spool]# mkdir vm2
mkdir: cannot create directory `vm2': Permission denied
看来是 NFS的问题。查看 NFS文档,发现 NFS服务器上 /etc/exports中的权限设置有这么一个选项: no_all_squash,这个选项表示不要改变向 NFS服务器发送请求的用户的映射。因为 $SGE_ROOT是所有机器的公共目录,并且希望它在任何系统上的任何用户眼里都没有差别。所以用上了这个选项 。这样, vm1上的 /etc/exports文件如下:
/home * (rw,sync)
/opt/sge * (rw,sync,no_all_squash)
vm1上重启 nfs,在 vm2上再安装 install_execd,这次成功。
[root@vm2 sge]# ps ax | grep sge
3447 ? S 0:00 /opt/sge/bin/lx24-x86/sge_execd
3499 pts/0 S 0:00 grep sge
vm3上:
[root@vm3 root]# mkdir -p $SGE_ROOT
[root@vm3 root]# mount -t nfs vm1:/opt/sge $SGE_ROOT
[root@vm3 root]# cd $SGE_ROOT



[root@vm1 sge]# qconf -ah vm3
vm3 added to administrative host list
[root@vm1 sge]# qconf -as vm3
vm3 added to submit host list



但是在 vm3上安装也出现了不能创建 vm3目录的错误。这说明在 NFS服务器上加的那个 no_all_squash选项没有任何作用。为了验证又以 root@vm2 $SGE_ROOT default/spool中创建目录,仍然出现 Permission denied错误,说明在 vm2上成功不是依靠那个 no_all_squash选项。那么 vm2上为什么会成功的呢?奇怪的是,在 vm3上失败一次以后再次安装,居然就成功了,给人感觉这是一个时间相关的问题,猜想可能与 NFS服务器上那个 sync选项有关,安装时创建目录没有及时响应导致超时错误。 无论如何,问题误打误撞解决了,也不再细究了。



vm3上把 vm1导出的 /home目录 mount上去,提交一个作业测试一下。
先修改 vm1上的 /etc/exports文件,使得 /home导出时也带上 no_all_squash参数。
修改一下队列的相关参数:
[root@vm1 sge]# qconf -sql
all.q
[root@vm1 sge]# qconf -mq all.q
把其中的 slots一行改成:
slots 1,[vm1=1],[vm2=2],[vm3=2]
qstat -f看一下:
[root@vm1 sge]# qstat -f
queuename qtype used/tot. load_avg arch states
----------------------------------------------------------------------------
all.q@vm1 BIP 0/1 0.00 lx24-x86
----------------------------------------------------------------------------
all.q@vm2 BIP 0/2 0.00 lx24-x86
----------------------------------------------------------------------------
all.q@vm3 BIP 0/2 0.00 lx24-x86
另外把 shell从以前的 /bin/csh改成 /bin/bash
vm3上切换到 sgeadmin用户,因为作业执行结果会放到每个执行机的当前用户的 HOME目录中,而 vm1上的 /root并没有导出,如果用 root提交,则结果会分散到每个执行机中。
这是在 vm1上用 root用户提交 10个作业用 qstat -f查看的用户截图:
[root@vm1 sge]# qstat -f
queuename qtype used/tot. load_avg arch states
----------------------------------------------------------------------------
all.q@vm1 BIP 1/1 0.00 lx24-x86
1 0.55500 simple.sh root r 11/26/2009 20:12:22 1
----------------------------------------------------------------------------
all.q@vm2 BIP 2/2 0.00 lx24-x86
2 0.55500 simple.sh root r 11/26/2009 20:12:22 1
5 0.55500 simple.sh root r 11/26/2009 20:12:22 1
----------------------------------------------------------------------------
all.q@vm3 BIP 2/2 0.00 lx24-x86
3 0.55500 simple.sh root r 11/26/2009 20:12:22 1
4 0.55500 simple.sh root r 11/26/2009 20:12:22 1



############################################################################
- PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS
############################################################################
6 0.55500 simple.sh root qw 11/26/2009 20:12:17 1
7 0.55500 simple.sh root qw 11/26/2009 20:12:18 1
8 0.55500 simple.sh root qw 11/26/2009 20:12:19 1
9 0.55500 simple.sh root qw 11/26/2009 20:12:19 1
10 0.55500 simple.sh root qw 11/26/2009 20:12:20 1
[root@vm1 root]# ls
anaconda-ks.cfg install.log.syslog simple.sh.e6 simple.sh.o6
install.log simple.sh.e1 simple.sh.o1
看到,在作业 执行完成后,只有作业 1和作业 6的结果在 vm1上。
这是在 vm3上以 sgeadmin用户身份提交 10个作业的状态:
[sgeadmin@vm3 sge]$ bin/lx24-x86/qstat -f
queuename qtype used/tot. load_avg arch states
----------------------------------------------------------------------------
all.q@vm1 BIP 1/1 0.00 lx24-x86
11 0.55500 Sleeper sgeadmin r 11/26/2009 20:15:22 1
----------------------------------------------------------------------------
all.q@vm2 BIP 2/2 0.00 lx24-x86
12 0.55500 Sleeper sgeadmin r 11/26/2009 20:15:22 1
14 0.55500 Sleeper sgeadmin r 11/26/2009 20:15:22 1
----------------------------------------------------------------------------
all.q@vm3 BIP 2/2 0.02 lx24-x86
13 0.55500 Sleeper sgeadmin r 11/26/2009 20:15:22 1
15 0.55500 Sleeper sgeadmin t 11/26/2009 20:15:22 1



############################################################################
- PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS
############################################################################
16 0.55500 Sleeper sgeadmin qw 11/26/2009 20:15:14 1
17 0.55500 Sleeper sgeadmin qw 11/26/2009 20:15:14 1
18 0.55500 Sleeper sgeadmin qw 11/26/2009 20:15:15 1
19 0.55500 Sleeper sgeadmin qw 11/26/2009 20:15:15 1
20 0.55500 Sleeper sgeadmin qw 11/26/2009 20:15:16 1
执行完以后:
[sgeadmin@vm3 sgeadmin]$ ls
Sleeper.e11 Sleeper.e14 Sleeper.e17 Sleeper.e20 Sleeper.o13 Sleeper.o16 Sleeper.o19
Sleeper.e12 Sleeper.e15 Sleeper.e18 Sleeper.o11 Sleeper.o14 Sleeper.o17 Sleeper.o20
Sleeper.e13 Sleeper.e16 Sleeper.e19 Sleeper.o12 Sleeper.o15 Sleeper.o18

你可能感兴趣的:(list,服务器,Parameters,jobs,作业,网格)