Lifematics Corporate Blog

Lifematics社のコーポレートブログへようこそ!

Slurmの基本的なインストール

はじめに

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
  • SELinuxの無効化
  • IPv6の無効化
  • 最新のセキュリティアップデート済み(dnf -y update)

Slurmでは様々な役割(管理、計算、アカウンティング、etc)を持つサーバがありますが、今回は1台だけのシンプルな構成です。
また、インストールはRPMをビルドする方法で行います。(他にはリポジトリからインストール方法もあります。)

事前準備

  1. hostsファイル設定

    • slurmサーバの行を追記
     # echo 10.100.110.172 slurmsrv >> /etc/hosts
    
  2. リポジトリの追加

     # dnf config-manager --set-enabled crb
    
     # dnf -y install epel-release
    

mungeインストール、設定

  1. パッケージインストール

    • パッケージインストール
     # 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ユーザーが作成されたことを確認

  2. munge-keyの作成

    • munge-keyの作成
     # /usr/sbin/create-munge-key
    
    • 確認
     # ls -la /etc/munge
     -r--------    1 munge munge 1024  6月 18 15:48 munge.key  
    

    >> 作成された鍵があることを確認

  3. サービス起動と確認

     # systemctl enable --now munge.service
    
    • 動作確認
    #  munge -n | unmunge | grep STATUS
     STATUS:           Success (0)  
    

    >> 上記結果となることを確認

MariaDBインストール、設定

  1. パッケージインストール、設定

    • パッケージインストール
     # 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]フィールドに以下の記述を追加します。

    • innodb_buffer_pool_size=4096M
    • innodb_lock_wait_timeout=900
     # 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  
    
  2. データベース登録、確認

     # 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パッケージ作成

  1. 必要パッケージのインストール

    • 必要パッケージのインストール
     # dnf install -y gcc-c++ gcc-gfortran
    
    • rpmビルド関連のパッケージインストール
     # dnf install -y rpm-build pam-devel perl readline-devel dbus-glib-devel
    
  2. ソースファイルをダウンロード

    • ソースファイルをダウンロード
     # cd ~; wget https://download.schedmd.com/slurm/slurm-24.05.3.tar.bz2
    

    >> インストールするバージョンはダウンロードサイトで確認(今回は2024年09月時点で最新の24.05.3)

  3. 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パッケージインストール・セットアップ

  1. 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つがインストールされたことを確認

  2. 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
    
  3. 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   
    
  4. 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
    

    >> 計算ノード(ここではマネージャ兼計算ノード)に関する情報が表示されることを確認

テストジョブの実行

  1. テストスクリプト作成

    • 一般ユーザーへ切り替え
     # su - lifematics
    
     $ vi testjob.sh
     以下の内容で作成する。
     #!/bin/bash
     id
     pwd
     hostname
     date
     sleep 60
     date
    
  2. ジョブ実行、確認

    • ジョブ実行
     $ 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の基本的なインストールは以上となります。