ジョブ管理ノードににOpenPBSにて構築した「openpbs-server-20.0.1-0.x86_64.rpm」パッケージをインストールしてみる

[root@openpbs ~]# yum localinstall openpbs-server-20.0.1-0.x86_64.rpm
(同時にPostgresql-serverパッケージがインストールされます)

*「/etc/profile.d/pbs.{sh|csh}」が用意されるので、環境変数には要注意

そして途中に下記メッセージが表示される

 :
 :
*** PBS Installation Summary
***
*** Postinstall script called as follows:
*** /opt/pbs/libexec/pbs_postinstall server 20.0.1 /opt/pbs /var/lib/pbs postgres
***
*** No configuration file found.
*** Creating new configuration file: /etc/pbs.conf
*** Replacing /etc/pbs.conf with /etc/pbs.conf.20.0.1
*** /etc/pbs.conf has been created.
***
*** Registering PBS as a service.
Created symlink from /etc/systemd/system/multi-user.target.wants/pbs.service to /usr/lib/systemd/system/pbs.service.
***
*** PBS_HOME is /var/lib/pbs
*** Creating new file /var/lib/pbs/pbs_environment
*** WARNING: TZ not set in /var/lib/pbs/pbs_environment
***
*** The PBS server has been installed in /opt/pbs/sbin.
*** The PBS scheduler has been installed in /opt/pbs/sbin.
***
*** The PBS communication agent has been installed in /opt/pbs/sbin.
***
*** The PBS MOM has been installed in /opt/pbs/sbin.
***
*** The PBS commands have been installed in /opt/pbs/bin.
***
*** End of /opt/pbs/libexec/pbs_postinstall
  Verifying  : openpbs-server-20.0.1-0.x86_64                                                                       1/2
  Verifying  : postgresql-server-9.2.24-6.el7_9.x86_64                                                              2/2
 
Installed:
  openpbs-server.x86_64 0:20.0.1-0
 
Dependency Installed:
  postgresql-server.x86_64 0:9.2.24-6.el7_9
 
Complete!

インストール後に各種確認・調整を加えます

  • /etc/pbs.conf
    PBS_EXEC=/opt/pbs
    PBS_SERVER=openpbs      <-- OpenPBS-serverを起動するサーバを指定します
    PBS_START_SERVER=1
    PBS_START_SCHED=1
    PBS_START_COMM=1
    PBS_START_MOM=0
    PBS_HOME=/var/lib/pbs
    PBS_CORE_LIMIT=unlimited
    PBS_SCP=/bin/scp
  • /var/lib/pbs/pbs_environment
    PATH=/bin:/usr/bin
    TZ=Asia/Tokyo         <-- TZを定義

OpenPBSサーバ起動

[root@openpbs ~]# systemctl start pbs

この際、同時にOpenPBS向けの「postgreSQL」サーバも起動します

[root@openpbs ~]# ps -ef |grep pbs
root      9060     1  0 17:25 ?        00:00:00 /opt/pbs/sbin/pbs_comm
root      9066     1  0 17:25 ?        00:00:00 /opt/pbs/sbin/pbs_sched
root      9265     1  0 17:25 ?        00:00:00 /opt/pbs/sbin/pbs_ds_monitor monitor
postgres  9296     1  0 17:25 ?        00:00:00 /usr/bin/postgres -D /var/lib/pbs/datastore -p 15007
postgres  9317  9296  0 17:25 ?        00:00:00 postgres: postgres pbs_datastore 192.168.0.70(48218) idle
root      9318     1  0 17:25 ?        00:00:00 /opt/pbs/sbin/pbs_server.bin
root      9322  7884  0 17:25 pts/0    00:00:00 grep --color=auto pbs
[root@openpbs ~]#

firewall

SELinuxもfirewallも止めたほうが楽なのだが、そいは行かない局面もある

[root@openpbs ~]# getenforce
Enforcing
[root@openpbs ~]# firewall-cmd --zone=public --permanent --add-port=15001-15004/tcp
[root@openpbs ~]# firewall-cmd --zone=public --permanent --add-port=17001/tcp
[root@openpbs ~]# firewall-cmd --zone=public --permanent --add-port=32768-61000/tcp      <--- インターラクティヴモード向け
[root@openpbs ~]# firewall-cmd --reload

とする
インターラクティヴモードはここからhttps://community.openpbs.org/t/interactive-job-errors-out-with-apparently-deleted/1112/14

qmgr

OpenPBSの設定状態をqmgrで確認します

[root@openpbs ~]# qmgr
Max open servers: 49
Qmgr: p s
#
# 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 resources_default.ncpus = 1
set server default_chunk.ncpus = 1
set server scheduler_iteration = 600
set server resv_enable = True
set server node_fail_requeue = 310
set server max_array_size = 10000
set server pbs_license_min = 0
set server pbs_license_max = 2147483647
set server pbs_license_linger_time = 31536000
set server eligible_time_enable = False
set server max_concurrent_provision = 5
set server max_job_sequence_id = 9999999
Qmgr: quit
[root@openpbs ~]#
  • 他人のジョブ状況を閲覧したい
    qmgrにて下記を実行します
    set server query_other_jobs = True

  • 他人のジョブの進捗(ログ)もみたい 倫理的には?だけど
    qmgrにて
    set server default_qsub_arguments= "-W umask=0022"
    とする. これで計算ノードの/var/lib/pbs/spool/に置かれるファイルは 0644 になります. 既定だと 0600 です.
    ジョブファイルで有効にするなら「#PBS -W umask=0022」とします

  • 既に終わったジョブ情報がみたい
    qmgrにて下記を実行します
    set server job_history_enable = True
    set server job_history_duration = 00:10:00
    そして「qstat -x」とすれば10分前まで過去の終了したジョブ情報が見える。
    詳しく見たければ「qstat -x -f <ジョブID>」を行う

  • requeue
    計算ノードの停止とかで通信が途切れて、計算ノードが復帰したらの取り扱い
    qmgrにて
    set server node_fail_requeue = 0
    0なら途切れればqeueuの条件にあう計算ノードに「requeue」しない。
    0以上ならその間はその指定時間(秒)は待機するが、それ以降は「requeue」される。既定で310秒

  • rerun
    そもそも「rerun」をさせない様にするには「#PBS -r n」をジョブスクリプトに記載すればいいのだが、
    既定でそのような使用にするにはqmgrにて
    set server default_qsub_arguments= "-r n"
    とする

  • メール送信
    qdelで殺された、自殺か、他殺かでメールとか、計算が終わったとかでもメールを送信することができる。
    っが、全てのメールを停止するには「qsub -m n sample.sh」でqueueを発行するか、
    qmgrにて
    set server default_qsub_arguments= "-m n"
    とする
  • ジョブ発行ノードからでもジョブを発行するようにする
    qmgrにて
    set server flatuid = True
    とする
    もし設定してないと「qsub: Bad UID for job execution」と表記されます
  • いま稼働中のOpenPBSのバージョンは?
    「qstat -fB | grep pbs_version」で得られる
  • job nameに「/」を許容するには?
    openpbs/src/lib/Libcmds/ck_job_name.cを修正

次に計算ノードを追加します OpenPBS/execution

postgresqlデータベースに直接アクセスする(未完成)

postgreSQLのデータソースは「/var/lib/pbs/datastore/」に置かれて、アクセス制御は「pg_hba.conf」が司ります。
このファイルの中身を見ると、

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# IPv4 local connections:
local   all             all                                     md5
host    all             all             0.0.0.0/0               md5
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

とローカルのアクセスでさえ、md5の暗号化したパスワードで保護されています。その保護されているファイルは
「/var/lib/pbs/server_priv/db_password」なのですが、元のパスワードは何だったのか分かりません。

なので初期パスワードをリセットします。リセット方法は「pbs_ds_password」を使います。

[root@c ~]# pbs_ds_password -C postgres
Enter the password:
Re-enter the password:
 
---> Updated user password
---> Success
[root@c ~]#

と成功したら、マスターパスワード(postgres)が変更されました。
試しにアクセスしてみます。

[illya@c ~]$ psql -U postgres -p 15007 -l
ユーザ postgres のパスワード:
                                           データベース一覧
     名前      |  所有者  | エンコーディング |  照合順序   | Ctype(変換演算子) |      アクセス権
---------------+----------+------------------+-------------+-------------------+-----------------------
 pbs_datastore | postgres | SQL_ASCII        | ja_JP.UTF-8 | ja_JP.UTF-8       |
 postgres      | postgres | SQL_ASCII        | ja_JP.UTF-8 | ja_JP.UTF-8       |
 template0     | postgres | SQL_ASCII        | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/postgres          +
               |          |                  |             |                   | postgres=CTc/postgres
 template1     | postgres | SQL_ASCII        | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/postgres          +
               |          |                  |             |                   | postgres=CTc/postgres
(4 行)
 
[illya@c ~]$

とpbsproの管理データベースは「pbs_datastore 」だと分かります。
さらにこのデータベースに入って、テーブルの中身を調べると

pbs_datastore=# \d
リレーションがありません。
pbs_datastore=#

と言われるが、スキーマ pbs で全て用意されているようで

pbs_datastore=# \dn
   スキーマ一覧
  名前  |  所有者
--------+----------
 pbs    | postgres
 public | postgres
(2 行)
 
pbs_datastore=#

となる。
現在のスキーマからpbsスキーマに移って

pbs_datastore=# select current_schema();
 current_schema
----------------
 public
(1 行)
 
pbs_datastore=# SET search_path = pbs;
SET
pbs_datastore=#

テーブルを調べてみると、

pbs_datastore=# \d
         リレーションの一覧
 Schema |     Name     | Type  |  Owner
--------+--------------+-------+----------
 pbs    | info         | table | postgres
 pbs    | job          | table | postgres
 pbs    | job_scr      | table | postgres
 pbs    | mominfo_time | table | postgres
 pbs    | node         | table | postgres
 pbs    | queue        | table | postgres
 pbs    | resv         | table | postgres
 pbs    | scheduler    | table | postgres
 pbs    | server       | table | postgres
(9 行)
 
pbs_datastore=#

と出てくる。

...これを使ってどのくらい使っているかを調べようとしたけど、、、currentしかない....


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2021-05-17 (月) 01:56:46 (36d)