問題
フロントシステムからsinfo
コマンドを使ってSlurmの接続を確認し、idle
ではなくdown
になっているときがある。電力料金事情もあって、計算ノードは普段電源OFFして、利用時のみWake On LANで立ち上げたい。となると、起動時は自動でidle状態になって欲しい。
何とかしよう。
当環境: CentOS7.9、SLURM 19.05.5
SLURMのインストール方法はこちら
https://qiita.com/pochman/items/1353fc0d93d0f1bd9989
当環境での原因
当環境では計算ノード起動時に、munge
サービスが上手く立ち上がっていないことが原因だった。munge
が起動に失敗するのは、サービスの起動順序が早すぎるため。サービス起動順序の依存関係を設定することで、解決できた。サービスの依存関係は/etc/systemd/system/multi-user.target.wants/
の中のmunge.service
に書き込む(実はシンボリックリンクだけど)。その中のUnit
項目に、After
から始まる次の行を追加
[Unit]
Description=MUNGE authentication service
...
After=network.target ypbind.service
すると、ypbind
サービスが起動するまでmungeの起動を待つようになる。ちなみに、slurmdもmungeを待つようになっているはず。
計算ノード起動後に自動でscontrol update
計算ノードのrc.local
にscontrol update
コマンドを書きたいが、これも起動順序の関係で動かないことがある。そこで、システムの全てのサービス(default.target
)が起動した後に実行するスクリプトとしてrc.local.lastest
を作る。
vi /usr/lib/systemd/system/rc-local-lastest.service
#記述内容##########################
[Unit]
After=default.target
[Install]
WantedBy=default.target
[Service]
Type=forking
ExecStart=/etc/rc.local.lastest
これをサービスに登録
systemctl enable rc-local-lastest
これで、/etc/systemd/system/default.target.wants/
にシンボリックリンクができていれば成功
次に、rc.local.lastest
の中身は次のようにする。
vi /etc/rc.local.lastest
#中身
#!/bin/bash
#this script is expected to be performed after all default services
scontrol update nodename=hostname01 state=idle
また、実行権限も変更
chmod 755 /etc/rc.local.lastest
再起動してみる。
sinfoの情報がidleに設定された。
おわりに
誰かのお役に立てば幸いです。メリークリスマス!