- はじめに
- インストール環境
- 事前準備
- mungeインストール、設定
- MariaDBインストール、設定
- Slurm rpmパッケージ作成
- Slurm rpmパッケージインストール・セットアップ
- テストジョブの実行
はじめに
Slurmは、高性能計算クラスタのジョブスケジューラで、効率的なリソース管理とジョブ実行を提供します。
スケーラブルで、柔軟な設定が可能、オープンソースでコミュニティサポートも充実しています。
弊社のワークステーションにも標準でインストールされますので、ご購入後すぐにご利用いただけます。
Slurmではジョブスケジューリング、リソース管理、ジョブの監視と管理などが行え、様々なプラグインと拡張があります。
この記事ではSlurmの基本的なインストール方法をご紹介します。
インストール環境
今回のインストール検証環境は次の通りです。
項目 | 内容 |
---|---|
タイプ | 仮想マシン |
vCPU | 8コア |
メモリ | 32GB |
HDD | 200GB |
OS | Rocky Linux 9.4 |
OS設定は次の通りです。
項目 | 内容 |
---|---|
ホスト名 | slurmsrv |
IPアドレス | 10.100.110.172/24 |
デフォルトゲートウェイ | 10.100.110.254 |
DNS | 10.100.1.1 |
Slurmでは様々な役割(管理、計算、アカウンティング、etc)を持つサーバがありますが、今回は1台だけのシンプルな構成です。
また、インストールはRPMをビルドする方法で行います。(他にはリポジトリからインストール方法もあります。)
事前準備
hostsファイル設定
- slurmサーバの行を追記
# echo 10.100.110.172 slurmsrv >> /etc/hosts
リポジトリの追加
- crb(CodeReady Builder)リポジトリを有効化
# dnf config-manager --set-enabled crb
- EPELリポジトリを追加
# dnf -y install epel-release
mungeインストール、設定
パッケージインストール
- パッケージインストール
# dnf install -y munge munge-libs munge-devel
- インストールの確認
# rpm -qa|grep munge munge-libs-0.5.13-13.el9.x86_64 munge-0.5.13-13.el9.x86_64 munge-devel-0.5.13-13.el9.x86_64
>> 3つインストールされていることを確認
# id munge uid=978(munge) gid=977(munge) groups=977(munge)
>> mungeユーザーが作成されたことを確認
munge-keyの作成
- munge-keyの作成
# /usr/sbin/create-munge-key
- 確認
# ls -la /etc/munge -r-------- 1 munge munge 1024 6月 18 15:48 munge.key
>> 作成された鍵があることを確認
サービス起動と確認
- サービス起動と自動起動設定
# systemctl enable --now munge.service
- 動作確認
# munge -n | unmunge | grep STATUS STATUS: Success (0)
>> 上記結果となることを確認
MariaDBインストール、設定
パッケージインストール、設定
- パッケージインストール
# dnf install -y mariadb-server mariadb-devel
- conf設定
# cp -p /etc/my.cnf.d/mariadb-server.cnf /etc/my.cnf.d/mariadb-server.cnf_org # vi /etc/my.cnf.d/mariadb-server.cnf
[mysqld]フィールドに以下の記述を追加します。
# diff /etc/my.cnf.d/mariadb-server.cnf_org /etc/my.cnf.d/mariadb-server.cnf 21c21,22 < --- > innodb_buffer_pool_size=4096M > innodb_lock_wait_timeout=900
データベース登録、確認
- サービス起動と自動起動設定
# systemctl enable --now mariadb
- データベース登録
# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.3.39-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database slurm_acct_db;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> create user 'slurm'@'localhost' identified by 'SLURM';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> set password for slurm@localhost = password('Passw0rd');
>> パスワードは適切なものに変更(今回はPassw0rd)
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> grant all on slurm_acct_db.* TO 'slurm'@'localhost';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> Ctrl-C
Aborted
- 確認
# mysql --user=slurm --password=password slurm_acct_db -e 'show databases;' +--------------------+ | Database | +--------------------+ | information_schema | | slurm_acct_db | +--------------------+
>> 上記と一致することを確認
Slurm rpmパッケージ作成
必要パッケージのインストール
- 必要パッケージのインストール
# dnf install -y gcc-c++ gcc-gfortran
- rpmビルド関連のパッケージインストール
# dnf install -y rpm-build pam-devel perl readline-devel dbus-glib-devel
ソースファイルをダウンロード
- ソースファイルをダウンロード
# cd ~; wget https://download.schedmd.com/slurm/slurm-24.05.3.tar.bz2
>> インストールするバージョンはダウンロードサイトで確認(今回は2024年09月時点で最新の24.05.3)
rpmビルド
- rpmビルド
# rpmbuild -ta slurm-24.05.3.tar.bz2
- 作成されたrpmパッケージを確認
# ls -lt /root/rpmbuild/RPMS/x86_64/ slurm-24.05.3-1.el9.x86_64.rpm slurm-slurmctld-24.05.3-1.el9.x86_64.rpm slurm-perlapi-24.05.3-1.el9.x86_64.rpm slurm-slurmd-24.05.3-1.el9.x86_64.rpm slurm-slurmdbd-24.05.3-1.el9.x86_64.rpm slurm-devel-24.05.3-1.el9.x86_64.rpm slurm-example-configs-24.05.3-1.el9.x86_64.rpm slurm-sackd-24.05.3-1.el9.x86_64.rpm slurm-openlava-24.05.3-1.el9.x86_64.rpm slurm-contribs-24.05.3-1.el9.x86_64.rpm slurm-pam_slurm-24.05.3-1.el9.x86_64.rpm slurm-libpmi-24.05.3-1.el9.x86_64.rpm slurm-torque-24.05.3-1.el9.x86_64.rpm
>> 上記RPMパッケージが作成されたことを確認
Slurm rpmパッケージインストール・セットアップ
rpmパッケージのインストール
- 必要なrpmパッケージをインストール
# rpm -ivh slurm-24.05.3-1.el9.x86_64.rpm # rpm -ivh slurm-slurmctld-24.05.3-1.el9.x86_64.rpm # rpm -ivh slurm-slurmdbd-24.05.3-1.el9.x86_64.rpm # rpm -ivh slurm-slurmd-24.05.3-1.el9.x86_64.rpm
- 確認
# rpm -qa|grep slurm slurm-24.05.3-1.el9.x86_64 slurm-slurmctld-24.05.3-1.el9.x86_64 slurm-slurmdbd-24.05.3-1.el9.x86_64 slurm-slurmd-24.05.3-1.el9.x86_64
>> 上記4つがインストールされたことを確認
slurmユーザーとディレクトリの整備
- slurmユーザーを追加
# useradd -m -d /var/lib/slurm -s /sbin/nologin -r slurm
- 確認
# cat /etc/passwd|grep -i slurm uid=977(slurm) gid=976(slurm) groups=976(slurm)
>> ユーザーが作成されたことを確認
- ディレクトリ作成、所有ユーザー設定
# mkdir /var/spool/slurmctld; chown -R slurm:slurm /var/spool/slurmctld # mkdir /var/spool/slurmd; chown -R slurm:slurm /var/spool/slurmd # mkdir /var/log/slurm; chown -R slurm:slurm /var/log/slurm # mkdir /etc/slurm; chown -R slurm:slurm /etc/slurm
Slurm設定ファイル作成
- 設定ファイルの用意
# cp -p /root/rpmbuild/BUILD/slurm-24.05.3/etc/slurm.conf.example /etc/slurm/ # cp -p /root/rpmbuild/BUILD/slurm-24.05.3/etc/slurmdbd.conf.example /etc/slurm/ # cp -p /root/rpmbuild/BUILD/slurm-24.05.3/etc/cgroup.conf.example /etc/slurm/ # cp -p /etc/slurm/slurm.conf.example /etc/slurm/slurm.conf # cp -p /etc/slurm/slurmdbd.conf.example /etc/slurm/slurmdbd.conf # cp -p /etc/slurm/cgroup.conf.example /etc/slurm/cgroup.conf # chown -R slurm:slurm /etc/slurm
- slurm.confの設定
# vi /etc/slurm/slurm.conf
次の値を環境に合わせて修正する。
- SlurmctldHost=linux0
- #AccountingStorageHost=
- NodeName=linux[1-32] CPUs=1 State=UNKNOWN
# diff /etc/slurm/slurm.conf /etc/slurm/slurm.conf.example 12c12 < SlurmctldHost=slurmsrv --- > SlurmctldHost=linux0 115c115 < AccountingStorageHost=slurmsrv --- > #AccountingStorageHost= 152c152 < NodeName=slurmsrv CPUs=8 State=UNKNOWN --- > NodeName=linux[1-32] CPUs=1 State=UNKNOWN
- slurmdbd.confの設定
# vi /etc/slurm/slurmdbd.conf
次の値を環境に合わせて修正する。
DbdHost=localhost
StoragePass=# diff /etc/slurm/slurmdbd.conf /etc/slurm/slurmdbd.conf.example 20c20 < DbdHost=slurmsrv --- > DbdHost=localhost 36c36 < StoragePass=Passw0rd --- > StoragePass=password
- ファイルパーミッションを変更
# chmod 600 /etc/slurm/slurmdbd.conf
Slurmサービス起動・確認
- サービス起動と自動起動設定
# systemctl enable --now slurmdbd # systemctl enable --now slurmd # systemctl enable --now slurmctld
- サービス起動の確認
# systemctl status slurmdbd.service # systemctl status slurmd # systemctl status slurmctld
>> すべて正常に起動していることを確認
- Slurmの確認
# sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST debug* up infinite 1 idle slurmsrv
>> 計算ノード(ここではマネージャ兼計算ノード)が表示されることを確認
# scontrol show nodes slurmsrv
>> 計算ノード(ここではマネージャ兼計算ノード)に関する情報が表示されることを確認
テストジョブの実行
テストスクリプト作成
- 一般ユーザーへ切り替え
# su - lifematics
- スクリプト作成
$ vi testjob.sh 以下の内容で作成する。 #!/bin/bash id pwd hostname date sleep 60 date
ジョブ実行、確認
- ジョブ実行
$ sbatch testjob.sh
- 進捗確認
$ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 1 debug testjob. lifemati R 0:02 1 slurmsrv
>> ジョブが実行していることを確認
- 終了確認
$ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
>> ジョブがなくなったことを確認
- 結果ファイルの確認(1)
$ ls -lt -rw-r--r-- 1 lifematics lifematics 178 9月 12 10:59 slurm-1.out
>> 結果ファイル(slurm-1.out)が作成されたことを確認
- 結果ファイルの確認(2)
$ cat slurm-1.out uid=1000(lifematics) gid=1000(lifematics) groups=1000(lifematics) /home/lifematics slurmsrv 2024年 9月 12日 木曜日 10:58:58 JST 2024年 9月 12日 木曜日 10:59:58 JST
>> 実行結果が正しいことことを確認
Slurmの基本的なインストールは以上となります。