[클러스터] PBS(Portable Batch System) 설치하기

PBS(Portable Batch System) 설치하기

이 문서는 PBS(Portable Batch System) 을 설치하고 사용하는 방법을 설명한다.

설치에 사용된 운영체제는 RedHat 7.1이고, 이 문서에서 설치된 OpenPBS 버젼은

2.3.16이다. 소스 코드와 RPM 패키지로 설치하는 방법을 설명한다.

문서 업데이트

2002-10-16: 버그 수정, RPM 제거 방법

2002-10-17: PBS 제시작 스크립트

목차

1. 소스로 설치하기

  1.1. 마스터 노드에 설치

    0) 다운로드 받기

    1) 압축풀기

    2) 컴파일하기

    3) 설치하기

    4) 서버 설정

    5) 서버 데몬 시작하기

    6) 클라이언트 노드 접속 확인

    7) 서버 데몬 제시작 시키기

    8) PBS 제거하기

  1.2. 클라이언트 노드에 설치

    1) 압축풀기

    2) 컴파일하기

    3) 설치하기

    4) 클라이언트 설정

    5) 클라이언트 데몬 시작하기

2. RPM으로 설치

  2.1. 마스터 노드에 설치

    1) RPM 패키지 설치

    2) 환경 변수의 추가

    3) 서버 설정

    4) 서버 데몬 시작하기

  2.2. 클라이언트 노드에 설치

    1) RPM 패키지 설치

    2) 클라이언트 설정

    3) 클라이언트 데몬 시작하기

    4) PBS 제거하기

3. 기타

  3.1. MAN 페이지 참조

  3.2. PBS 데몬의 종류

  3.3. 네트웍 주소와 포트

  3.4. 부팅시 데몬을 자동으로 실행하기

  3.5. PBS 제시작 스크립트

참고자료

——————————————————————————–

1. 소스로 설치하기  [[목차]]

1.1. 마스터 노드에 설치  [[목차]]

0) 다운로드 받기

http://www.openpbs.org에서 PBS 최신 버젼을 다운로드 받는다.

또는 KISTI Grid Testbed의 ‘소프트웨어 다운로드 디렉토리’에서

(http://gridtest.hpcnet.ne.kr/software/index.php?dir=/OpenPBS)

OpenPBS_2_3_16.tar.gz을 다운 받는다.

1) 압축풀기

$ tar zxvf OpenPBS_2_3_16.tar.gz

$ cd OpenPBS_2_3_16

2) 컴파일하기

–enable-docs 옵션이 없으면 man 문서가 설치되지 않는다.

$ ./configure –prefix=/usr/pbs –enable-docs –disable-mom

$ make

주의>>

OpenPBS 2.3.12등의 이전 버젼에서는 컴파일과정에서

“‘CLK_TCK’ undeclared” 등의 에러가 발생할 수 있으나 헤더화일 include등을

수정하면 컴파일이 가능하다.

3) 설치하기

/usr/pbs에 바이너리가 설치되고,

/usr/spool/PBS에 환경설정 및 로그화일 디렉토리 등이 설치된다.

$ su

# make install

4) 서버 설정

# cd /usr/spool/PBS

서버 이름을 지정하여 준다.

# cat server_name

sdd114.foobar.com

서버에 연결된 노드들을 명시하여 준다.

# vi server_priv/nodes

sdd105

sdd106

sdd107

:wq

참고>> nodes 화일의 형식은 다음과 같다.

node_name[:ts] [property …] [np=NUMBER]

노드 이름 다음에 ts는 timeshared를 의미한다.

np=NUMBER 는 VP(virtual processor)의 개수를 지정한다.

자세한 것은 참고자료를 참고 할 것.

소스로 설치할 경우 설정 화일이 생성되지 않으므로 만들어 준다.

# vi /usr/spool/PBS/pbs_server.conf

#

# Create queues and set their attributes.

# Create and define queue workq

#

create queue workq

set queue workq queue_type = Execution

set queue workq enabled = True

set queue workq started = True

#

# Set server attributes.

#

set server scheduling = True

set server default_queue = workq

set server log_events = 511

set server mail_from = adm

set server query_other_jobs = True

set server scheduler_iteration = 600

:wq

serverdb 화일 생성, 큐 생성 등의 초기화

# /usr/pbs/sbin/pbs_server -t create

# /usr/pbs/bin/qmgr < /usr/spool/PBS/pbs_server.conf

Max open servers: 4

# /usr/pbs/bin/qterm

5) 서버 데몬 시작하기

# /usr/pbs/sbin/pbs_server

# /usr/pbs/sbin/pbs_sched

# ps -ax | grep pbs

15038 ?        S      0:00 /usr/pbs/sbin/pbs_server

15040 ?        S      0:00 /usr/pbs/sbin/pbs_sched

6) 클라이언트 노드 접속 확인

# /usr/pbs/bin/pbsnodes -a

sdd105

     state = free

     np = 1

     ntype = cluster

sdd106

     state = free

     np = 1

     ntype = cluster

sdd107

     state = free

     np = 1

     ntype = cluster

7) 서버 데몬 제시작 시키기

# killall pbs_server ; killall pbs_sched ; \\

/usr/pbs/sbin/pbs_server ; /usr/pbs/sbin/pbs_sched

8) PBS 제거하기

# killall pbs_sched pbs_server

# killall pbs_mom

# rm -rf /usr/spool/PBS /usr/pbs

1.2. 클라이언트 노드에 설치  [[목차]]

1) 압축풀기

$ tar zxvf OpenPBS_2_3_16.tar.gz

$ cd OpenPBS_2_3_16

2) 컴파일하기

$ ./configure –help

$ ./configure –prefix=/usr/pbs –disable-server –enable-mom \\

  –set-default-server=sdd114.foobar.com

참고>> –set-default-server 옵션의 값은 server_name 화일에 저장된다.

$ make

3) 설치하기

$ su

# make install

/usr/pbs에 바이너리가 설치되고,

/usr/spool/PBS에 환경설정 및 로그화일 디렉토리 등이 설치된다.

4) 클라이언트 설정

# cd /usr/spool/PBS

# cat server_name

sdd114.foo.bar.com

# vi mom_priv/config

$clienthost sdd114.foo.bar.com

:wq

5) 클라이언트 데몬 시작하기

# /usr/pbs/sbin/pbs_mom

# ps -ax | grep pbs

17812 ?        S      0:00 /usr/pbs/sbin/pbs_mom

2. RPM으로 설치  [[목차]]

www.openpbs.org에서 PBS 최신 버젼을 다운로드 받는다.

또는 KISTI Grid Testbed의 ‘소프트웨어 다운로드 디렉토리’에서

(http://gridtest.hpcnet.ne.kr/software/index.php?dir=/OpenPBS)

openpbs-2.3pl2-1.i386.rpm (마스터 노드용)

openpbs-exechost-2.3pl2-1.i386.rpm (계산 노드용)

위의 두 화일을 다운 받는다.

2.1. 마스터 노드에 설치  [[목차]]

1) RPM 패키지 설치

tcl, tk 패키지등의 의존성 문제가 있으므로 –nodeps 옵션을 주어 설치한다.

# rpm -ivh –nodeps openpbs-2.3pl2-1.i386.rpm

Preparing…                ########################################### [100%]

   1:openpbs                ########################################### [100%]

2) 환경 변수의 추가

# vi ~/.bashrc



# PBS

export PATH=/usr/pbs/bin:/usr/pbs/sbin:$PATH

export PBS_SERVER_HOME=/usr/spool/PBS

export PBS_HOME=/usr/spool/PBS



:wq

# source ~/.bashrc

3) 서버 설정

# cd /usr/spool/PBS

# vi server_priv/nodes

sdd105

sdd106

sdd107

:wq

# vi server_name

sdd114.foo.bar.com

:wq

4) 서버 데몬 시작하기

# /usr/pbs/sbin/pbs_server

# /usr/pbs/sbin/pbs_sched

# ps -ax | grep pbs

15270 ?        S      0:00 /usr/pbs/sbin/pbs_server

15274 ?        S      0:00 /usr/pbs/sbin/pbs_sched

2.2. 클라이언트 노드에 설치  [[목차]]

1) RPM 패키지 설치

# rpm -qpl openpbs-exechost-2.3pl2-1.i386.rpm

/etc/rc.d/init.d/pbs

/usr/doc/openpbs-exechost-2.3pl2



/usr/spool/PBS

/usr/spool/PBS/aux

/usr/spool/PBS/checkpoint

/usr/spool/PBS/mom_logs

/usr/spool/PBS/mom_priv

/usr/spool/PBS/mom_priv/jobs

/usr/spool/PBS/pbs_environment

/usr/spool/PBS/server_name

/usr/spool/PBS/spool

/usr/spool/PBS/undelivered

tcl, tk 패키지등의 의존성 문제가 있으므로 –nodeps 옵션을 주어 설치한다.

# rpm -ivh –nodeps openpbs-exechost-2.3pl2-1.i386.rpm

Preparing…                ########################################### [100%]

   1:openpbs-exechost       ########################################### [100%]

2) 클라이언트 설정

# cd /usr/spool/PBS

# vi server_name

sdd114.foo.bar.com

:wq

# vi mom_priv/config

$clienthost sdd114.foo.bar.com

:wq

3) 클라이언트 데몬 시작하기

# /usr/pbs/sbin/pbs_mom

# ps -ax | grep pbs

4178 ?        S      0:00 /usr/pbs/sbin/pbs_mom

4) PBS 제거하기

RPM으로 PBS를 설치하였을 경우 PBS를 제거하려면 실행중인 프로세스를 죽이고,

패키지를 제거하면 된다.

# killall pbs_server ; killall pbs_sched ; killall pbs_mom

# ps -ax | grep pbs

# rpm -qa | grep pbs

openpbs-2.3pl2-1

openpbs-exechost-2.3pl2-1

# rpm -e openpbs



error: cannot remove /usr/spool/PBS – directory not empty

# rpm -e openpbs-exechost



error: cannot remove /usr/spool/PBS – directory not empty

# rpm -qa | grep pbs

# rm -rf /usr/spool/PBS

3. 기타  [[목차]]

3.1. MAN 페이지 참조  [[목차]]

–enable-docs 옵션을 주어 컴파일 하면 /usr/pbs/man 에 메뉴얼 페이지가 설치된다.

이것을 MANPATH에 추가 하여 두려면 다음 행을 .bashrc 에 추가해 두자.

# export MANPATH=`man –path`:/usr/pbs/man

3.2. PBS 데몬의 종류  [[목차]]

Job Server (pbs_server)

사용자로 부터 배치 작업을 받거나 생성한는 역할을 한다. 작업을 수정하거나,

시스템 정지로 인한 작업의 손실을 방지하는 역할도 한다.

Job Executor (pbs_mom)

실제로 작업을 실행시키는 역할을 한다. 모든 실행중인 작업의 mother 라는 뜻으로

mom 이라고 부른다. 작업의 출력을 서버로 전달하는 역할을 한다.

Job Scheduler (pbs_sched)

어떤 작업을 어디에서 언제 실행시킬지를 결정하는 역할을 한다. Mom 들로 부터

시스템의 자원상태를 모니터링 하기 위한 정보를 수집하며, Server로 부터 수행해야

될 작업에 대한 정보를 수집한다.

3.3. 네트웍 주소와 포트  [[목차]]

PBS의 데몬들과 명령어들은 사용할 포트 번호를 알아내기 위해서 /etc/services를

검색한다. 포트 번호는 모든 서버와 클라이언트에 동일하게 지정되어 있어야 한다.

만약 /etc/services에 포트 번호를 지정해 주지 않았을 경우에는 다음의 포트들이

사용된다.

pbs                15001/tcp        # pbs server (pbs_server)

pbs_mom                15002/tcp        # mom to/from server

pbs_resmom        15003/tcp        # mom resource management requests

pbs_resmom        15003/udp        # mom resource management requests

pbs_sched        15004/tcp        # scheduler

참고>>pbs_resmom 은 이전 버전의 PBS에서 사용되던 포트번호이다. 지금은

pbs_mom 데몬으로 그 기능이 합쳐졌다.

3.4. 부팅시 데몬을 자동으로 실행하기  [[목차]]

데몬을 자동으로 실행하려면 /etc/rc.d/rc.local 화일에 데몬 실행 명령을 추가해 준다.

마스터 노드

# vi /etc/rc.d/rc.local



# PBS daemons (master node)

/usr/pbs/sbin/pbs_server

/usr/pbs/sbin/pbs_sched

:wq

클라이언트 노드

# vi /etc/rc.d/rc.local

# PBS daemons (client nodes)

/usr/pbs/sbin/pbs_mom

:wq

3.5. PBS 제시작 스크립트  [[목차]]

전체 클러스터의 PBS 시스템을 중지시키고, 설정화일을 복사한 후 다시 제시작

시키는 스크립트이다. rsh과 rcp가 동작하여야 한다.

$ cat pbsrestart.sh

#!/bin/sh

# stop server

killall pbs_server

killall pbs_sched

ps -ax | grep pbs_

sleep 1

# stop moms

rsh sdd105 “killall pbs_mom”

rsh sdd106 “killall pbs_mom”

rsh sdd107 “killall pbs_mom”

rsh sdd105 “ps -ax | grep pbs_”

rsh sdd106 “ps -ax | grep pbs_”

rsh sdd107 “ps -ax | grep pbs_”

sleep 1

# copy mom.conf to client nodes

# mom.conf should be under the current directory

rcp mom.conf sdd105:/usr/spool/PBS/mom_priv/config

rcp mom.conf sdd106:/usr/spool/PBS/mom_priv/config

rcp mom.conf sdd107:/usr/spool/PBS/mom_priv/config

sleep 1

# start moms

rsh sdd105 /usr/pbs/sbin/pbs_mom

rsh sdd106 /usr/pbs/sbin/pbs_mom

rsh sdd107 /usr/pbs/sbin/pbs_mom

rsh sdd105 “ps -ax | grep pbs_”

rsh sdd106 “ps -ax | grep pbs_”

rsh sdd107 “ps -ax | grep pbs_”

sleep 1

# start server

/usr/pbs/sbin/pbs_server

/usr/pbs/sbin/pbs_sched

ps -ax | grep pbs_

sleep 1

# set server attributes

# e.g.

# qmgr -c “s q workq max_running=10”

# show nodes status

pbsnodes -a | more

$

참고자료  [[목차]]

1. Portable Batch System Administrator Guide (Release 2.3)

  http://www.openpbs.org/docs.html

-EOF- PBS 설치하기 [[TOP]]

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.