您的位置:首页 > 产品设计 > UI/UE

(升级修改版1.1)集群配置(Torque安装配置+Maui安装配置+SSH免验证设置+节点共享目录(NFS服务)设置+NIS服务设置+用户硬盘空间限制和核心使用限制设置)异常详细版

2017-09-16 19:39 1726 查看


(升级修改版1.1)集群配置(Torque安装配置+Maui安装配置+SSH免验证设置+节点共享目录(NFS服务)设置+NIS服务设置+用户硬盘空间限制和核心使用限制设置)异常详细版

 

 

制作者:甄江苏

制作时间:2017.07.03

上传时间:2017.9.16

单位:湘潭大学材料科学与工程学院

 







 

     ************************************** 待完成 ****************************************











 

本教程假设你已经在多台电脑上安装了CentOS 7.x 或RedHat 7.x版本的系统(建议每个机器上的root用户登录密码相同),并且强烈建议安装系统时选择系统语言选择英文。

本教程主要分为这几个方面:

1. IP设置、计算机名称设置及hosts文件修改

2. SSH双向免验证登录及其相关设置

3. 防火墙设置

4. 节点间共享文件夹(NFS服务)设置

5. NIS服务设置

6. Torque安装及其设置

7. Maui安装及其设置

8. 用户硬盘使用容量限制

9. 并行运行相关说明(比较重要!!!)

 

 

 

 

 

1. 设置计算机名称设置及hosts文件修改

1.1   IP设置(所有节点都要设置,只有主节点必须设置两个,外网和内网):

一般服务器电脑都有两个网络接口(至少主节点上面有两个接口吧),我们可以把主节点上的一个网络接口连接外网,以便在其他电脑上通过远程ssh来进行相关操作,比如修改配置,提交任务等。另一个接口来连接内网,以便和其他子节点相互通信。外网IP是网络管理中心分配的,内网IP可以自己分配。

 

用图形桌面的方式进入系统,点击右上角,会看见网络接口名称(比如我的这个显示enp2s0和enp3s0两个接口),前提是你的两个接口已经连上了网线。然后点击进去,会看见关闭(或打开)选项和设置选项,点击进去进行设置,我们现在先设置内网IP(我用enp2s0接口作为内网接口),像上面说的那样选择一个接口进去设置:

进去后,点击右下角的齿轮状图标进行设置,然后出现一个菜单,会发现左边有6项,选择第三项,进去后为左中下角的第一个“Connect automatically”打钩,然后选择左边的第四个选项(也就是“IPV4”那个选项),然后选择右上角的“ON”,“ON”的下边那个(有DHCP的那个)用鼠标点击一下,选择中间的选项(“Manual”选项),然后在出来的地方填写IP相关信息,第一行是IP地址,可以填比如:192.168.1.1(不能是192.168.1.0),其他节点可以是
.2,.3……等;第二行是掩码,所有节点都填写:255.255.255.0;第三个是网关,可以填:192.168.1.1(所有节点网关都一样),然后点击应用就可以了,而外网IP跟上面的设置方法差不多,只不过是在连接外网的网络接口里填写由网络管理中心给你的相关数据而已。

 

 

 

假如你现在设置了两台电脑,内网ip分别为:192.168.1.1和192.168.1.2,你想知道这两台电脑之间能不能通过内网通信,直接在一台机器上的终端执行:

[user]$  ping  IP

 

这里的IP是另一台机器的ip,如果数据一行一行刷下来,然后再在另一台机器上也像上面这样做,如果也是一样,说明两台机器能够相互通信,如果卡住半天不动,说明有问题,自行百度解决。

 

此外,这里顺便设置一下网络接口速度,设置成千兆的,不然可能会自动变成百兆的,降低节点间通信速度。先确定内网网络接口,假如是enp2s0,然后利用root权限执行:

[root]#  ethtool  -s  enp2s0  autoneg  off  speed 1000  duplex  full

注意,每台计算机都按照上述方式设置一下。

1.2   修改计算机名称:

为每台计算机修改适当的名称,如 node000,node001,node002……(如果在安装系统时已经设定了指定的计算机名称,那就不用设置了)

如果是CentOS 7.x或者RedHat 7.x版本的linux系统,则用root权限运行命令修改:

[root]#  hostnamectl  set-hostname  node000

 

然后用命令查看是不是修改了。

[root]#  hostname

 

修改所有节点(包括主节点)的名称,其他版本系统自行百度修改方法。

 

 

 

1.3   修改hosts文件:

在主节点上用root权限修改/etc/hosts文件:

[root]#  vim  /etc/hosts

 

然后将本机的内网IP和所有其他节点(包括主节点)的IP填写到最下边,IP后面跟上对应的计算机名,计算机名后面也可以写上别名,比如像这样:

192.168.1.1  node000 node0     #node0是别名,用于方便ssh管理其他节点

192.168.1.2  node001 node1     #这样后面就可以用ssh
node1来登录node001这个节点了


……                                         

 

后面设置了ssh免验证登陆后要把这个hosts文件复制到所有子节点,稍后会在2.4节讲。

注意,node000是计算机的名称,而这里的node0是别名,它就像一个变量一样,代指IP地址,以后需要输入这个IP的地方,直接用node0代替就行了。

 

 

 

 

 

2. SSH双向免验证登录及其相关设置

如果想要多节点并行运行,必须让各个节点间能够通过ssh相互登录且免验证。

方法:

一个简便的方法是在主节点上创建ssh密钥和公钥,然后将整个~/.ssh/这个文件夹拷贝到所有子节点相应位置即可,而对于设置了NIS服务的集群来说,除了root用户需要拷贝外,其他用户都不需要拷贝。

 

2.1 创建ssh秘钥:

在主节点上的root用户下,比如node000节点上,创建ssh秘钥,在终端执行:

[root]#  ssh-keygen  -t  rsa



然后一直确认下去。

然后进入~/.ssh/文件夹下,制作授权文件:

[root]#  cd  ~/.ssh/

[root]#  cp  id_rsa.pub  authorized_keys

[root]#  chmod  600  authorized_keys

 

 

2.2 将ssh设置文件并拷贝到所有子节点:

在主节点上的root用户下,直接将刚才生成的~/.ssh/文件夹拷贝到所有子节点相应位置即可:

[root]#  scp  -r  ~/.ssh/ node1:~/

[root]#  scp  -r  ~/.ssh/ node2:~/

[root]#  scp  -r  ~/.ssh/ node3:~/

……

 

在拷贝过程中会让你选择yes/no,统统选择yes,然后让你输入你想拷贝的那个节点的root用户的密码,输入就行了。

上面的手动拷贝很麻烦,特别当节点很多时,需要不停地输入密码等等,这里可以用一个脚本实现自动输入密码和拷贝,非常快(这会用到expect命令,请自行百度)。

弄好后,直接用ssh node1, ssh node2…..登录各个节点时(双向登录都可以)无需输入密码时,就设置正确了。

如果没有NIS服务,则其他非root用户想要实现免验证登录,也要像root用户一样这样设置。

 

 

2.3 有NIS服务时SSH免验证登录的设置(在设置NIS服务后设置非root用户时进行此步设置,此外,在每次创建新用户时也要执行此步设置):

这一步建议先按照2.2的方式设置好root用户的ssh免验证登录,然后根据第5节设置好NIS服务后,再按照本节设置其他非root用户的ssh免验证登录。

有NIS服务就不需要拷贝非root用户的ssh设置文件了,但是root用户的设置文件还是要向上面那样设置。

假设此时已经设置好root用户的免验证登录和配置好NIS服务了,然后设置普通用户的ssh免验证登录,此时只要设置主节点上的普通用户就行了,并且子节点都根本不需要创建这个用户。

比如我在主节点上创建一个test用户:

[root]#  useradd  test

[root]#  passwd  test

 

然后会叫你设置新用户的密码,还会让你确认,弄完后,登陆一下这个用户:

[root]#  su  test

 

设置好后,su 进入这个用户,设置ssh:

[user]$  ssh-keygen  -t  rsa

 

一直确认下去,然后创建authorized_keys并加上权限:

[user]$  cp  ~/.ssh/id_rsa.pub  ~/.ssh/authorized_keys

[user]$  chmod  600  ~/.ssh/authorized_keys

 

这样就设置完了,不过注意要把所有机器上的SELinux关闭,下面设置NIS服务时会讲。

 

 

2.4 SSH验证的额外设置:

登入所有节点的(包括主节点)的root用户下,修改/etc/ssh/ssh_config:

[root]#  vim  /etc/ssh/ssh_config

 

然后找到“#   StrictHostKeyChecking ask”这一行,把这一行的“#”去掉,把后面的“ask”改成“no”,然后保存,所有节点都要这么做。

当然这里可以用脚本实现。

 

上面1.3部分说的hosts文件拷贝可以在ssh免验证登录设置好后进行,在主节点上的root用户下用scp命令拷贝:

[root]#  scp  /etc/hosts  node1:~/

[root]#  scp  /etc/hosts  node2:~/

[root]#  scp  /etc/hosts  node3:~/

……

 

这样以后拷贝文件时就不需要输入密码了!

 

 

 

 

 

3. 防火墙设置

在第一步的时候已经知道主节点上一般需要两
1ba86
个网络接口,一个接内网,一个接外网,内网节点之间通信会受到防火墙的诸多限制,所以需要配置。当然可以把所有节点的防火墙都关闭,这样也行,不过这样的话,主节点因为还有外网接入,非常容易受到攻击(我们这里就被攻击过,结果把主节点的所有文件都删除了,这有两个可能原因,一个是防火墙关了,第二是密码设置的非常简单),所以强烈建议主节点不要关闭防火墙,可以把其他所有没连外网的子节点的防火墙都关闭,而主节点的防火墙需要设置一下(防火墙设置需要root权限)。

首先在主节点上查看防火墙的开启状况:

[root]#  firewall-cmd  --state

 

如果没有运行,则开启防火墙(一般是默认开启的):

[root]#  systemctl  start  firewalld.service

 

然后查看两个网络接口在什么区域:

[root]#  firewall-cmd  --get-active-zones

 

一般会发现两个网络接口都在public区域,然后找出这两个中的哪个是接内网的,比如我的两个网络接口名叫enp3s0和enp2s0,而我的enp2s0是接内网的,这在第1节IP设置那里就设置好的,所以接下来就是要把接内网的网络接口放到防火墙的“信任”区域里:

[root]#  firewall-cmd  --zone=trusted  --change-interface=enp2s0

[root]#  firewall-cmd  --reload

 

这样就行了,但是这样设置不是永久生效的,重启电脑或者重启防火墙服务就又会回到原始状态,就需要重新设置。对于重启电脑,可以将上面的命令加入开机自启动,首先把/etc/rc.d/rc.local文件加上可执行权限:

[root]#  chmod  +x  /etc/rc.d/rc.local

 

然后将这个文件打开,在里面加上:

firewall-cmd  --zone=trusted  --change-interface=enp2s0

firewall-cmd  --reload

 

这样启动电脑时就会自动设置了,但是不重启电脑而仅是重启防火墙服务后这个还是需要手动设置的(在终端输入这两个命令进行设置)。

然后进入其他所有没联外网的子节点(如果联外网的话,不想关闭防火墙的话也是按照上面的设置),将防火墙的开机自启动服务取消:

[root]#  systemctl  disable  firewalld.service

[root]#  systemctl  stop  firewalld.service

 

这样所有子节点在重启后就不会打开防火墙了。

 

4.节点间共享文件夹(NFS服务)设置

多节点并行运行软件时,需要在某一个节点的某个目录下提交任务(一般设置为主节点的某个目录),这个目录需要被各个其他节点相同的目录所挂载,注意,这些目录不能在任何用户的主目录(即各个用户的~/及其子目录)下,任何其他目录下都可以(事实上,后面要安装的软件,如VASP,LAMMPS等,也不能安装在任何用户的主目录下(root用户主目录也不行))。

 

为了使第5节设置的NIS服务对新建用户生效,我们直接把所有子节点的/home/目录挂载到主节点的/home/目录下。然后另外再创建一个用于共享应用程序的目录,并共享给所有子节点。此处我们用/opt/目录作为共享应用程序目录(这个目录是系统自动创建的,所以不需要手动创建了)。

首先在主节点上用root权限打开文件修改:

[root]#  vim  /etc/exports

 

在里面添加:

/home/  192.168.1.1/20(insecure,rw,async,no_root_squash)

/opt/  192.168.1.1/20(insecure,rw,async,no_root_squash)

 

前面的目录表示被挂载目录,后面的192.168.1.1/20表示一个IP地址段:

192.168.1.1 — 192.168.1.20

表示这个IP地址段中的所有计算机都可以挂载在此节点上。

这个IP地址段就是各个节点的内网IP,你的内网IP设置成哪一段就写成哪一段。

注意,“192.168.1.1/20(insecure,rw,async,no_root_squash)”这一字符串中间没有空格。

 

小提示(这个一般不会出现,如果出现这个错误,你要大概知道怎么错的):果你后面在主节点上建立一个新用户,而在子节点上将/home/目录挂载到主节点上的/home/目录下,则配置NIS服务后在子节点上登录这个新建用户时,如果这个新用户的UID大于1000 (貌似是1000,具体忘了)并且上面的exports文件中没有insecure这个参数时,则会出现。。。/.bashrc:Permission
denied的错误提示。这时应该加上insecure这个参数。

 

添加完成后,保存退出,然后更新这个文件:

[root]#  exportfs  -rv

 

最后在主节点上开启nfs服务,并将其设置为开机自启动:

[root]#  systemctl  start  nfs-server.service

[root]#  systemctl  enable  nfs-server.service

 

然后到子节点上挂载 (必须到其他节点上用root权限来挂载,不能在被挂载节点上操作):

[root]#  mount  -t  nfs  node0:/home/  /home/  -v

[root]#  mount  -t  nfs  node0:/opt/  /opt/  -v

 

挂载完成后,你到这个目录下就能看到node0节点下这个共享目录中的文件。

你想挂载几个节点,就需要到那些节点执行以上操作,所以这也可以用脚本完成。

 

如果想取消挂载某个节点,只要到那个节点上用root权限执行:

[root]#  umount  /home/  -v

[root]#  umount  /opt/  -v

 

就表示取消本节点的挂载。

 

注意:在重启子节点前,要将所有子节点的挂载目录取消挂载,然后再关机或重启;并且重启电脑后,需要重新在子节点上执行挂载命令,教程最后会有例子。

 

 

 

 

 

5. NIS服务设置

5.1 在主节点上下载NIS服务安装包:

下载安装yp-tools, ypbind,ypserv, 和rpcbind(不过rpcbind对于centos系统来说一般是已安装的,如果用在主节点上(假设主节点已经连接外网了)运行yum install rpcbind,等待一段时间出现提示这个已经安装上了,则不用下载这个,否则后面安装会出错,所以此处我就不下载安装了),下载方式为在主节点上的终端输入(前提是主节点已经联网了):

[root]#  yum  install  yp-tools  yp-bind  ypserv  --downloadonly  --downloaddir=/NIS/

 

然后进入NIS目录安装:

[root]#  cd  /NIS/

[root]#  yum  install  *  -y

 

安装完成后,将yp-tools和ypbind两个安装包拷贝到所有子节点 (用scp命令拷贝啊),然后进入子节点,找到这两个包的位置,执行下面命令安装之:

[root]#  rpm  -ivh  *.rpm

 

 

5.2 NIS服务端设置(在主节点上设置):

注意,所有节点上的SELinux服务必须关闭才行,不然新建用户后,在新用户下不能够实现各个节点的ssh免验证登录。关闭方式为打开/etc/selinux/config,然后修改里面的“SELINUX=”后面的字符串,改为disabled,然后重启电脑才行。

这里也可以用脚本实现。

 

首先指定NIS网域,打开文件:

[root]#  vim  /etc/sysconfig/network

在里面添加:

NISDOMAIN=zhjs     #等号后面的域名可随意写,后面设置时会用到

 

然后修改配置文件/etc/ypserv.conf:

[root]#  vim   /etc/ypserv.conf

 

可以在“# *         : *       : passwd.byuid     : port”下面添加上:

127.0.0.0/255.255.255.0       :*:*:none

192.168.1.0/255.255.255.0   :*:*:none

*                                             :*:*:deny

 

表示开放lo内部接口,开放网域为192.168.1的网域,阻止其他一切来源的NIS要求。

 

启动相关服务并加入开机自动:

[root]#  systemctl  enable  ypserv.service

[root]#  systemctl  start  ypserv.service

[root]#  chmod  754  /usr/lib/systemd/system/ypserv.service

[root]#  systemctl  enable  yppasswdd.service

[root]#  systemctl  start  yppasswdd.service

[root]#  chmod  754  /usr/lib/systemd/system/yppasswdd.service

 

然后检查设置:

[root]# rpcinfo  -u  localhost ypserv

 

如果出现:

program  100004  version  1  ready  andwaiting

program  100004  version  2  ready  andwaiting



表示设置正常(第一个可以不出现)。

最后生成NIS数据库:

[root]#  /usr/lib64/yp/ypinit  -m



然后会出现:

…….

nest host to add:node000         #这是你的主机的计算机名,是自动捕捉到的

nest host to add:

 

在出现这个的时候,按下Ctrl+d结束输入。

然后下面又出现叫你确认,填上y确认即可。

然后重启ypserv和yppasswdd服务:

[root]#  systemctl  restart  ypserv.service

[root]#  systemctl  restart  yppasswdd.service

注意,如果你在主节点上的用户和密码什么的动过(比如新建用户啦,在主节点上改用户密码啦等等),则要重新制作数据库(重复上面的NIS数据库生成步骤),并重启ypserv和yppasswdd服务(教程最后会有例子)。此外,如果重新设置了域名,最好重启电脑。

 

 

5.3 NIS客户端设置(所有子节点上设置):

在所有子节点上用setup命令设置:

[root]#  setup

 

出现如下所示(用远程ssh登录工具,可能这个界面部分显示乱码,但关键部分没乱码):

选择第一个进去。

 

选择“Use NIS”,按空格键就会在[]中出现*号,表示选中,然后把光标调到红色的NEXT位置继续设置。

Domain位置填写你之前在主节点上设置的域名,Server填写主节点的内网IP,然后确认,之后就会回到主界面,就可以退出了,如果没回到主界面,说明设置错误。

 

 

5.4 检验NIS客户端(子节点上):

先启动相关服务:

[root]#  rpcbind

[root]#  ypbind

 

可以把ypbind放到/etc/rc.d/rc.local中让其自启动:

[root]#  echo  "ypbind"  >>  /etc/rc.d/rc.local

 

注意,/etc/rc.d/rc.local这个文件必须具有可执行权限,不放心的话,可以加上:

[root]#  chmod  +x  /etc/rc.d/rc.local

 

然后检验:

[root]#  yptest

 

出现类似于下面的界面(Test 9也包含了),则说明设置正确

 

本教程根据鸟哥的教程设置:

http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631052873d590297634b818b4468d4e411d2234c413031b5fc3022674296d8223c5de8034bed847725774777f786ca8e4bdfe7c969388850762a5e92044f934fa0971d64&p=8b2a97378c9c0afe42bd9b7d0d16cc&newp=9b36d51985cc43b144bd9b7d0d16c4231610db2151d7d21161c8&user=baidu&fm=sc&query=NIS&qid=98261e4700030c0a&p1=2

 

 

 

 

 

6. Torque安装及其设置

在集群上安装软件,一般只需要安装在主节点上(但不能安装到任何用户主目录下,并且需要root权限),然后将软件安装目录共享给其他所有子节点即可,当然也可以把安装后的文件拷贝到所有子节点的相同目录下(前提是所有子节点与主节点的操作系统版本是一样的)。不过对于某些软件,可能子节点不需要或不需要它的全部,而主节点需要,比如这里的Torque和下面的Maui,则此时最好不要把它安装在共享目录里。

此处我把Torque安装在主节点的/Programs/目录里,这个目录并没有共享给其他子节点。

必须先安装Torque,然后才能安装后面的Maui。

 

6.1 安装Torque Server:

Torque可以直接在Linux上下载,也可以到官网下载后拷贝到Linux上。直接下载的方式是:

[root]#  wget  http://www.adaptivecomputing.com/download/torque/torque-6.1.0.tar.gz
 -O  torque-6.1.0.tar.gz


 

我这里是到官网下载的目前次新版的torque 6.1.0版本(目前最新版6.1.1与下面的Maui最新版3.3.1不兼容,所以不要用6.1.1),在主节点上解压:

[root]#  tar  -zxf  torque-6.1.0.tar.gz

 

解压后,进入解压目录,执行:

[root]#  ./configure  --prefix=/Programs/Torque  --enable-cgroups  --with-hwloc-path=/usr/local

 

表示我将会把torque安装在/Programs/Torque/目录下,configure完成后,执行:

[root]#  make  -j  8

 

表示用8个核心编译,如果你有更多的核心,可以用更多的核心编译(比如24核心用 -j 24)

make完成后,执行:

[root]#  make  install



修改环境变量/etc/profile,主节点和所有子节点都修改,在最下面加入:

export  PATH=/Programs/Torque/bin:/Programs/Torque/sbin:$PATH

export TORQUE_HOME=/var/spool/torque

 

保存并退出文件后,在终端执行:

[root]#  source  /etc/profile

 

现在初始化serverdb,在主节点上刚才的torque解压文件夹里,将root设为Torque管理账户(执行时会让你确认,直接确认就行):

[root]#  ./torque.setup  root

 

然后确认torque配置文件/var/spool/torque/server_name里的内容,如果是主节点名称,那就对了,如果不是或没有,则改为主机名称(是机器名称,如上面的node000,不是IP域名哈)

 

在主节点上,在/var/spool/torque/server_priv/文件夹下创建一个名为nodes的文本文件,在里面填写上主节点(如果不想让主节点参与运算,就不要填写主节点的)和各个子节点机器的计算机名,并且名称后面跟上核心数量,每行一个,比如:

node000 np=8

node001 np=8

…….

注意,是节点计算机名,不是IP域名。

 

然后将/var/spool/torque/下的spool和undelivered文件夹的权限设置为1777

(不过貌似默认就是这个权限):

[root]#  chmod  -R  1777  /var/spool/torque/spool  /var/spool/torque/undelivered

 

在主节点上刚才的torque解压文件夹里,配置pbs_server使其跟随系统自动启动,然后启动此进程:

[root]#  qterm

[root]#  chmod  754  /usr/lib/systemd/system/pbs_server.service

[root]#  systemctl  enable  pbs_server.service

[root]#  systemctl  start  pbs_server.service

  

6.2 配置trqauthd:

在主节点上刚才的torque解压目录下,配置trqauthd让它跟随系统启动,然后启动trqauthd进程:

[root]#  chmod  754  /usr/lib/systemd/system/trqauthd.service

[root]#  systemctl  enable  trqauthd.service

[root]#  systemctl  start  trqauthd.service

 

 

6.3 安装Torque MOMs服务:

每个参与运算的子节点上都要安装torque mom进程(主节点不需再安装,因为已经安装了)。

首先在主节点上,在刚才的torque解压目录下,创建自解压文件:

[root]#  make  packages

 

这会生成好几个torque-package-*.sh自解压文件,然后将其中一个拷贝到所有子节点上(Torque MOM Host):

[root]#  scp  torque-package-mom-linux-x86_64.sh  node1:~/

[root]#  scp  torque-package-mom-linux-x86_64.sh  node2:~/

……

当然节点很多的话,可以利用脚本执行。

 

然后进入各个子节点安装上面拷贝过来的自解压文件:

[root]#  ./torque-package-mom-linux-x86_64.sh  --install

[root]#  libtool  --finish  /Programs/Torque/lib

 

然后在主节点和所有子节点上配置pbs_mom服务跟随系统启动,并启动服务:

[root]#  chmod  754  /usr/lib/systemd/system/pbs_mom.service

[root]#  systemctl  enable  pbs_mom.service

[root]#  systemctl  start  pbs_mom.service

 

 

此时弄完后,在主节点上执行pbsnodes -a会看到所列出的节点的状态state都是free状态。如果不是,请将所有节点重启(或者关机后再开机,可能比重启好点),然后挂载所有子节点到主节点后再执行pbsnodes -a查看,如果还有错,那应该是其它错误了。

 

下面还要安装Maui任务调度服务,然后整个任务调度器才能使用。

 

 

 

 

 

7. Maui安装及其设置

Maui是与Torque配套的任务调度服务(虽然Torque本身也有,但一般使用Maui)。Maui只放在提交任务的节点上,我们这里只把主节点当做提交任务的节点,所以Maui只需安装在主节点上就行了。

 

7.1 Maui的安装:

到Torque官网下载最新版Maui(目前最新版是3.3.1),然后放到主节点上解压(全程root安装),然后进入解压目录,执行:

[root]#  ./configure  --prefix=/Programs/Maui/  LDFLAGS=/Programs/Torque/lib

[root]#  make  -j  8

[root]#  make  install

 

这就将Maui安装到了/Programs/Maui/这个目录里

 

 

7.2 Maui启动设置:

在Maui的解压目录里,找到/contrib/service-scripts/redhat.maui.d这个脚本文件,在里面找到并修改:

MAUI_PREFIX=/Programs/Maui                             #将其改为Maui的安装目录

daemon  --user  root  $MAUI_PREFIX/sbin/maui    #将用户名改为root

 

保存退出,将其拷贝到/etc/init.d/目录中,并改名和加可执行权限:

[root]#  cp  /contrib/service-scripts/redhat.maui.d  /etc/init.d/maui

[root]#  chmod  +x  /etc/init.d/maui

 

之后就可以通过这个脚本启动、停止maui了:

[root]#  /etc/init.d/maui  start        #启动maui

[root]#  /etc/init.d/maui  stop        #停止maui

[root]#  /etc/init.d/maui  restart    #重启maui

[root]#  /etc/init.d/maui  status     #查看maui开启状态

 

当然也可以将其加入环境变量,启动就不需要全路径了

可以将maui加入开机自启动:

[root]#  echo  " /etc/init.d/maui  start "  >>  /etc/rc.local

 

 

7.3 Maui中限制用户节点使用量的配置:

在/usr/local/maui/maui.cfg文件里,有Maui的相关配置,可以修改。

打开这个文件,在文件最下面那部分找到“# USERCFG[john]”这一段,将“#”号去掉,然后将john改为你想要限制的用户名,后面跟上相关信息:

USERCFG[username]    MAXJOB=2  MAXNODE=2  MAXPROC=10

其中,MAXJOB=2表示这个用户最多可以同时提交2个任务,这个一般都不需要设置;MAXNODE=2表示这个用户最多同时可以用2个节点;MAXPROC=10表示这个用户最多同时可以用10个核心。

这三个参数可以只设置其中一个。如果想限制多个用户,像上面那样写多个就行了。

有个我遇到的bug,就是当我像上面那样写三个的时候,会发现设置没用,然当我只设置MAXPROC的时候,设置就起作用了,所以我现在都是只设置第三个MAXPROC参数,其他两个没有加上。

 

修改完后开启或者重启Maui,方法是直接在主节点root终端输入:

[root]#  /etc/init.d/maui  restart

即可。

 

然后你可以检查一下PBS是否可用,进入一个非root用户或者新建一个非root用户,对这个用户进行ssh设置以及NIS设置之后,执行:
[user]$  echo  "sleep 60"  |  qsub

 

这会提交一个任务,这个任务会沉睡60s,然后任务就结束。执行后,用qstat查看任务状态,如果任务状态显示的是R,表示这个任务正在运行,就表示安装成功了:

 

注意,如果安装完Torque后,Maui没安装配置成功,则提交任务后不会进行计算,会显示Q状态(等待状态)。此外,如果maui服务没有启动,则任务也是Q状态,此时要像上面7.2节那样开启maui。

 

 

 

 

 

8. 用户硬盘使用容量限制(这个可以不设置,对计算无影响)

一般用户都是在主节点上提交任务,而所有用户都登录到主节点上,为了使各个用户有适当的存储空间,需要对每个用户的硬盘使用容量进行限制。

在上面我们把共享目录建立在/home/文件夹下的,用户提交任务时都要在共享目录下提交任务,才能实现并行计算,我们现对/home/目录进行设置。假设当初在装系统时专门给/home/目录分配了1TB的空间,所以我们可以为每个用户分配50GB的空间,这样就能建立20个用户。这里要使用磁盘配额命令quota,全程使用root权限(这里quota详细情况请看《鸟哥的linux私房菜基础学习篇》,讲得很好,或者自行百度):

 

8.1 /home/目录的quota设置:

首先我们查看/home/目录在哪个磁盘分区:

[root]#  df  -h  /home/

执行后会出现/home/目录所在的磁盘分区,我的这里/home/目录在/dev/sda2这个分区上

 

然后让/home/目录拥有quota支持:

[root]#  mount  -o  remount,usrquota,grpquota  /home/

注意usrquota的写法,不是user…

 

然后查看/home/目录是否拥有了quota支持:

[root]#  mount  |  grep home

会发现出现类似于这样的结果:

/dev/sda2  on /home  type  ext4 (rw,usrquota,grpquota)



出现了usrquota和grpquota,说明已经设置好了。

 

然后将配置写入配置文件中,直接修改/etc/fstab文件,文件类似于这样(这里我已经修改了的):

也就是将/home这一行后面的defaults后面填写上“,usrquota,grpquota”,然后保存,注意不要写错,不然会出现意想不到后果,所以最好用vim修改,它可以把关键字用颜色显示出来。

 

然后取消/home/目录的挂载,并重新挂载(我的在umount时出错了,没事,继续下面的就行):

[root]#  umount  /home/

[root]#  mount  -a

 

 

8.2 建立quota配置文件:

用quotacheck命令扫描并建立quota配置文件:

[root]#  quotacheck  -avug

扫描后就会自动建立了quota配置文件,可以查看:

[root]# ll  -d  /home/a*

(是L的小写,不是i的大写)会列出两个配置文件aquota.group和aquota.user

这分别是用户组和用户的配置文件。

 

 

8.3 quota启动、关闭与限制值设置:

利用quotaon命令启动quota服务:

[root]#  quotaon  -auvg

一般只要启动一次就够了,以后即使电脑重启,这个服务也会自动启动的。

 

也可以利用quotaoff命令关闭quota服务,这会永久关闭,即使重启电脑也不行,只能手动开启:

[root]#  quotaoff  -a

 

然后用edquota命令编辑磁盘的限制值和宽限时间:

[root]#  edquota  -u  test

表示要配置test这个用户的磁盘使用值,会出现一个文件,类似于这样:

blocks指的是磁盘容量,不要设置它,后面的soft和hard分别指的是你想要分配给这个用户的磁盘容量的软限制值和硬限制值,可以修改,单位是KB;

inodes指的是文件数量,也不要修改它,后面的soft和hard分别指inodes的软限制值和硬限制值,你可以修改(不过一般不需要修改这个)。

 

soft指的是你达到这个使用量的时候,会发出信息给你,提醒你使用量超过了,你就可以删除一些东西把使用量降低,当然你不理它也可以,但是超过宽限日期后,soft值就会变成hard的值,强制限制你的硬盘容量到soft设置的值 (也就是会自动删除一些文件使磁盘容量达到soft的值),超过的话根本不会让你的数据写入到磁盘。

 

上面的soft值和hard值为0时都表示不限制

 

然后就设置好了,如果想设置其他用户的磁盘限制,并且和这个用户的限制一模一样,可以用复制命令来复制设置:

[root]#  edquota  -p  test  -u  other_user1

[root]#  edquota  -p  test  -u  other_user2

……

表示把test用户的磁盘配额模式复制给other_user1用户和other_user2用户。

 

然后可以修改宽限时间:

[root]#  edquota  -t

自己设置吧

 

利用repquota命令查看限额报表:

[root]#  repquota  -auvs

这会显示所有用户的限额报表

 

 

关于quota的其他相关知识请查阅《鸟哥的linux私房菜—基础学习篇》,可以设置一下自动提醒功能。

设置完成后,建议将所有节点重启一下(重启前请看9.1)

 

 

 

 

 

9. 并行运行相关说明

9.1 开机和关机注意事项(只在主节点上设置,用root权限设置):

由于没有设置自动挂载,所以在每次启动节点之后,都要挂载共享目录可以写一个脚本放在主节点上,运行脚本就能挂载,例如新建名为mount.sh的文本文件并写入:

#!  bin/bash

for  i  in  node1 node2 node3

do

ssh  $i  "mount  -t  nfs  node0:/opt/  -v;  mount  -t  nfs  node0:/home/  -v"

ssh  $i  "ypbind"  ##在我的测试中,ypbind有时没有自动启动,这会导致NIS服务无法正确运行,所以最好加上这句

done

 

执行方式:

[root]#  sh  mount.sh

 

 

如果想要重启子节点或者主节点,则要先把这些挂载的目录取消挂载,也可以写一个脚本,例如新建名为umount.sh的文本文件并写入:

#!  bin/bash

for  i  in  node1 node2 node3

do

ssh  $i   "umount /home/  -v;  umount/opt/  -v"

done

 

执行方式:

[root]#  sh  umount.sh

 

9.2 新建用户注意事项(只在主节点上设置就行了,不需要在子节点设置):

新建用户并设置密码后,首先要进入这个用户,建立ssh秘钥和公钥,并把id_rsa.pub这个文件在相同文件夹下复制一份,命名为authorized_keys,并加上权限600(就是按照2.3的方式设置);然后按照5.2最后面的那个方式设置一下NIS服务;最后设置一下环境变量~/.bashrc,你要把那些需要并行的软件的环境变量写到这个文件中去,比如你在共享目录中安装了mpich,则你要在这个~/.bashrc文件中加入这个软件的环境变量。

9.3  Torque的一些常用命令:

提交任务:qsub  files   # files是一个脚本文件,见9.4

查看任务状态:qstat  #后面可以跟上参数 -r  -n  -f  等,效果自己试试

删除任务:qdel  job_NO.   #job_NO. 是一个数字,可用qstat查看

使某一个节点离线(不使用这个节点),需要root权限:pbsnodes
 -o  node_name   # node_name是节点计算机名称,不是那个hosts中设置的ip名称


使离线的节点重新上线,需要root权限:pbsnodes  -c  node_name    

 

注意,对于qstat命令,只有root用户才能查看所有用户的任务状态,而非root用户只能查看用户自己的任务状态。

 

 

9.4 Torque任务脚本的例子:

#PBS  -S  /bin/bash

#PBS  -N  job_name

#PBS  -lnodes=1:ppn=24   ##表示用1个节点,每个节点用24个核

#PBS  -lwalltime=5000:00:00  ##表示如果这个任务时间超过5000小时,就停止

 

cd  $PBS_O_WORKDIR

echo  Starting Time  is `date`  >  display  ##可以没有(这里的
' ` ' 是键盘的TAB键上面的反斜点)


echo  Directory  is  `pwd`  >>  display  ##可以没有

NPROCS=`wc  -l  <  $PBS_NODEFILE`  ##  -l 是L的小写

ulimit  -s  unlimited  # 可以没有,大家可以百度下这个干嘛用的,我就不多说了

mpirun  -np  $NPROCS  -hostfile  $PBS_NODEFILE  cp2k  batio3.in  >>  display

##上面这一行就是这个任务要干什么的,表示调用cp2k这个程序,使其读入batio3.in这个文件进行运算,注意的是如果你用的程序(如mpirun,cp2k)没有加入环境变量,则需要全路径

echo  End  time  is  `date`  >>  display  ##可以没有

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐