皆さん、こんにちは!
前回までは公式サイトで紹介されていますdebuildによるDebianパッケージの作成とインストールをご紹介しました。
Slurm Debianパッケージらくらくインストールガイド
デフォルト設定であれば問題ないのですがビルドルールをカスタムする場合、通常はslurm-24.11.5/debian/rulesファイルを修正します。
例えば、
- インストールパスを「/usr/local/slurm/24.11 」
- コンフィグディレクトリを「/usr/local/slurm/24.11/etc」
としたい場合、slurm-24.11.5/debian/rulesファイルを以下のように修正します。
dh_auto_configure -- --prefix=/usr/local/slurm/24.11 --sysconfdir=/usr/local/slurm/24.11/etc --disable-debug (以降省略)
ところがこちらでdebuild -b -uc -usを実行するとエラーとなってしまいます。
: rm -r debian/tmp/usr/lib/*/slurm/src rm: 'debian/tmp/usr/lib/*/slurm/src' を削除できません: そのようなファイルやディレクトリはありません make[1]: *** [debian/rules:25: override_dh_auto_install] エラー 1 make[1]: ディレクトリ '/root/src/slurm-24.11.1' から出ます make: *** [debian/rules:6: binary] エラー 2 dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 debuild: fatal error at line 1182: dpkg-buildpackage -us -uc -ui -b failed
RHEL系のLinuxではRPMパッケージ作成時にビルドルールをカスタムする公式手順が紹介されていますが、Debianではdh_auto_configure以外にも修正が必要となる箇所が複数あるようで、このようなカスタムが難しいのです。🤔
そこで、今回のハンズオンでは、この問題を「checkinstall」を用いてスマートに解決し、SlurmのカスタムDebianパッケージを作成/インストールする方法をご紹介します!
checkinstallによるSlurm Debianパッケージ インストール
それでは、実際に手を動かしてSlurmをインストールしてみましょう!今回はDebianパッケージを作成するサーバをSlurm Controllerとし、別のサーバにComputeをインストールします。
前準備(Slurm Controller、以下CONTROLLER)
- mungeインストール、slurmユーザーを作成します。
# apt update # apt-get install munge libmunge-dev # sudo groupadd -g 64030 slurm # sudo useradd -u 64030 -g 64030 -m -d /var/lib/slurm -s /sbin/nologin -r slurm必要なパッケージのインストール(CONTROLLER)
- まず、ビルドに必要な基本的なツールとcheckinstallをインストールします。
# apt install libdbus-1-dev libmariadb-dev build-essential # apt install checkinstallSlurmソースコードのダウンロードと解凍(CONTROLLER)
# mkdir /root/src;cd /root/src # wget https://download.schedmd.com/slurm/slurm-24.11.5.tar.bz2 # tar -xaf slurm*tar.bz2 # ls -l drwxr-xr-x 10 life life 4096 1月 24 05:25 slurm-24.11.5 # cd slurm-24.11.5/コンパイルとカスタムインストールパスの指定(CONTROLLER)
💡 ポイント:
--prefixでインストール先ディレクトリを、--sysconfdirで設定ファイルのディレクトリを指定します。
これにより、Slurm関連のファイルが/usr/local/slurm/24.11以下に集約されます。# ./configure --prefix=/usr/local/slurm/24.11 --sysconfdir=/usr/local/slurm/24.11/etc # make -j 9 # 「9」は`nproc+1`などで決めた並列ビルド数ですDebianパッケージを作成(CONTROLLER)
- checkinstallコマンドを使って、これまでのインストール作業を元にDebianパッケージを作成します。
# checkinstall --defaultこのコマンドを実行すると、以下のようなDebianパッケージが作成されます。
# ls -l -rw-r--r-- 1 root root 44014626 2月 16 15:52 slurm_24.11.5-1_amd64.debインストールされたことの確認(CONTROLLER)
- パッケージを作成したサーバには自動的にSlurmがインストールされます。
# ls -l /usr/local/slurm/24.11/ total 24 drwxr-xr-x 2 root root 4096 2月 16 15:52 bin drwxr-xr-x 2 slurm slurm 4096 2月 16 15:52 etc drwxr-xr-x 3 root root 4096 2月 16 15:47 include drwxr-xr-x 3 root root 4096 2月 16 15:52 lib drwxr-xr-x 2 root root 4096 2月 16 15:52 sbin drwxr-xr-x 4 root root 4096 2月 16 15:47 shareDebianパッケージを作成する端末ではご覧の通り、指定した/usr/local/slurm/24.11/の下に、binやetcなどのSlurm関連ディレクトリが配置されていることが確認できますね。
関連ファイル・フォルダの作成(CONTROLLER)
- サービス起動に必要なファイル・フォルダを用意します。
# mkdir /var/log/slurm # mkdir /var/spool/slurm # mkdir /var/spool/slurmctld # mkdir /usr/local/slurm/24.11/etc # chown slurm:slurm /var/log/slurm # chown slurm:slurm /var/spool/slurm # chown slurm:slurm /var/spool/slurmctld # chown slurm:slurm -R /usr/local/slurm # cp -p /root/src/slurm-24.11.5/etc/slurmctld.service /usr/lib/systemd/system/slurmctld.service # systemctl daemon-reload # cp -p /root/src/slurm-24.11.5/etc/slurm.conf.example /usr/local/slurm/24.11/etc/slurmctldの設定(CONTROLLER)
- DBDは使わずComputer1台だけの設定とします。
# cd /usr/local/slurm/24.11/etc/ # chown slurm:slurm slurm.conf.example # cp -p slurm.conf.example slurm.conf # vi slurm.conf # diff slurm.conf slurm.conf.example 12c12 < SlurmctldHost=master --- > SlurmctldHost=linux0 118c118 < AccountingStorageType=accounting_storage/none --- > AccountingStorageType=accounting_storage/slurmdbd 152,153c152,153 < NodeName=node01 CPUs=4 State=UNKNOWN < PartitionName=debug Nodes=node01 Default=YES MaxTime=INFINITE State=UP --- > NodeName=linux[1-32] CPUs=1 State=UNKNOWN > PartitionName=debug Nodes=ALL Default=YES MaxTime=INFINITE State=UP前準備(Slurm Computer、以下COMPUTER)
- mungeインストール、slurmユーザーを作成します。
# apt update # apt-get install munge libmunge-dev # scp -p CONTROLLER:/etc/munge/munge.key /etc/munge/ # systemctl restart munge.service # sudo groupadd -g 64030 slurm # sudo useradd -u 64030 -g 64030 -m -d /var/lib/slurm -s /sbin/nologin -r slurmSlurm Debianパッケージのインストール(COMPUTER)
- CONTROLLERで作成したSlurm Debianパッケージを実行します。
# mkdir /root/src;cd /root/src # scp -p CONTROLLER:/root/src/slurm-24.11.5/slurm_24.11.5-1_amd64.deb /root/src/ # dpkg -i slurm_24.11.5-1_amd64.deb # ls -l /usr/local/slurm/24.11/ 合計 20 drwxr-xr-x 2 root root 4096 7月 1 18:37 bin drwxr-xr-x 3 root root 4096 7月 1 18:37 include drwxr-xr-x 3 root root 4096 7月 1 18:37 lib drwxr-xr-x 2 root root 4096 7月 1 18:37 sbin drwxr-xr-x 4 root root 4096 7月 1 18:37 shareDebianパッケージをインストールした端末で、指定した/usr/local/slurm/24.11/の下に、binやetcなどのSlurm関連ディレクトリが配置されていることが確認できますね。
関連ファイル・フォルダの作成(COMPUTER)
- サービス起動に必要なファイル・フォルダを用意します。
# mkdir /var/log/slurm # mkdir /var/spool/slurm # mkdir /var/spool/slurmctld # mkdir /usr/local/slurm/24.11/etc # chown slurm:slurm /var/log/slurm # chown slurm:slurm /var/spool/slurm # chown slurm:slurm /var/spool/slurmctld # chown slurm:slurm -R /usr/local/slurm # scp -p CONTROLLER:/root/src/slurm-24.11.5/etc/slurmd.service /usr/lib/systemd/system/slurmd.service # systemctl daemon-reload # scp -p CONTROLLER:/usr/local/slurm/24.11/etc/slurm.conf /usr/local/slurm/24.11/etc/ # chown slurm:slurm /usr/local/slurm/24.11/etc/slurm.confslurmdサービス起動(COMPUTER)
# systemctl start slurmd.servicesystemctl statusコマンドで、サービスがactive (running)になっていることを確認しましょう。
slurmctldサービス起動(CONTROLLER)
# systemctl start slurmctld.servicesystemctl statusコマンドで、サービスがactive (running)になっていることを確認しましょう。
Slurmの動作確認
最後に、sinfoコマンドでSlurmクラスターの状態を確認します。
# /usr/local/slurm/24.11/bin/sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST debug* up infinite 1 idle node01上記のように、設定したパーティションとノードが表示され、ノードがidle状態であれば、Slurmが無事に起動し、動作していることが確認できます!
まとめ
本記事では、Debian環境でSlurmを特定のカスタムパスにインストールするために、checkinstallを利用する方法をご紹介しました。
debuildでルールファイルを直接修正する際の複雑な問題点を回避し、手軽にカスタムパッケージを作成できることがお分かりいただけたかと思います。
作成したパッケージは、他のComputeノードにもscpで転送し、dpkg -iコマンドで簡単にインストールできます。
依存関係の問題が発生した場合は、apt-get install -fで解決できます。
Slurmの導入はHPC環境の効率化に不可欠です。もしSlurmの構築・運用でお困りでしたら、LifematicsのSlurm保守サービス」もぜひご検討ください!専門家チームが強力にサポートいたします。
ご質問やご意見がありましたら、お気軽にコメントください! 次回のブログもお楽しみに!