しゅうせいちゅう
ubuntu向けのdebファイルを作ってみる
基本は /opt の配下にインストールして、それをパッケージ作成用の/WORKとかに移して「fakeroot dpkg-deb --build /WORK .」って感じ
目録とか依存パッケージの指定、インストール後のスクリプトもあるけど。
ここではごくごく簡単なもので行います
apt install libpam-dev libcgroup-dev libpam-cgroup libhwloc-dev libpmix-dev libdbus-1-dev libfreeipmi-dev libipmimonitoring-dev man2html libreadline-dev
./configure --prefix=/opt/slurm --sysconfdir=/opt/slurm/etc --enable-x11 --disable-selinux \
--enable-pam --with-pam_dir=/usr/lib/x86_64-linux-gnu/security --with-hdf5=no --without-ucx --without-ofed --with-nvml=/usr/local/cuda-12.3 --without-munge --with-pmix=/usr/lib/x86_64-linux-gnu/pmix2
ubuntu20.04はOS提供のパッケージがある. がだこのパッケージのversionは 19.05.5 でもし管理ノード(22.05.7)に繋ぐとエラーになる
slurmctld側(管理ノード)では「error: unpack_header: protocol_version 8704 not supported」と表記され
slurmd側(計算ノード)では「Unable to register: Zero Bytes were transmitted or received」と表記される
なのでソースから作る.
まずはGPUの制御のために「cuda-nvml-dev」を入れます. nvidiaドライバは登録済みですNVIDIA参照
root@n1:~# cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.5 LTS (Focal Fossa)"
:
root@n1:~# cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 525.60.11 Wed Nov 23 23:04:03 UTC 2022
GCC version: gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
root@n1:~# nvidia-smi -L
GPU 0: NVIDIA RTX A2000 (UUID: GPU-23cc3ee7-31d3-a068-2f61-5aa00052d084)
root@n1:~# bash ./cuda_12.0.0_525.60.13_linux.run (「cuda-nvml-dev」のみインストール)
その後 munge アカウントを作成してmungeをインストールします. slurm アカウントはnis/ldap/ad 由来でも可
root@n1:~# groupadd -g 5001 munge && useradd -d /var/lib/munge -s /bin/bash -u 5001 -g munge munge
root@n1:~# apt install munge
あとはslurmをソースから作ります
root@n1:~# apt install build-essential libmunge-dev libpam-dev libcgroup-dev libpam-cgroup \
libhwloc-dev libpmix-dev libdbus-1-dev
root@n1:~# tar xf slurm-22.05.7.tar.bz2
root@n1:~# cd slurm-22.05.7/
root@n1:~/slurm-22.05.7# ./configure --prefix=/opt/slurm --sysconfdir=/opt/slurm/etc --disable-x11 --disable-selinux \
--enable-pam --with-hdf5=no --without-ucx --without-ofed --with-nvml=/usr/local/cuda-12.0
root@n1:~/slurm-22.05.7# make -j 20; make install
(インストール後の微調整)
mkdir /opt/slurm/etc
mkdir -p /var/spool/slurm/d
echo "D /run/slurm 0755 root root -" > /usr/lib/tmpfiles.d/slurm.conf
/usr/bin/systemd-tmpfiles --create /usr/lib/tmpfiles.d/slurm.conf
echo -e "export PATH=\${PATH}:/opt/slurm/bin\nexport LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:/opt/slurm/lib64" > /etc/profile.d/slurm.sh
cp ./slurm-22.05.7/etc/slurmd.service /usr/lib/systemd/system/
systemctl daemon-reload
root@n1:~# /opt/slurm/sbin/slurmd -C
NodeName=n1 CPUs=1 Boards=1 SocketsPerBoard=1 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=16001 -> この内容を管理ノードのslurm.confに加える
UpTime=0-00:13:55
root@n1:~#
(管理ノードから)
[root@slurm ~]# scp /opt/slurm/etc/*.conf n1:/opt/slurm/etc/
[root@slurm ~]# scp /etc/munge/munge.key n1:/etc/munge/
(デーモン起動)
root@n1:~# chown -R munge. /etc/munge/
root@n1:~# systemctl enable slurmd munge --now
管理ノードで「Configless 」が有効ならslurm/manager#d2a5c73c slurm.conf らのファイル転送は不要
ubuntuには既定でfirewallが設置されていないのでこれで完了
ディストリビューター提供のパッケージは 21.08.5 で管理ノードが 22.05.7 なのでこれもソースから作っていく
root@n3:~# cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.1 LTS"
:
root@n3:~# apt search slurmd
:
slurmd/jammy 21.08.5-2ubuntu1 amd64
SLURM compute node daemon
:
root@n3:~#
構築方法は n1 と同じ
あと末端の微調整
apt install munge
mkdir /opt/slurm/etc ; mkdir -p /var/spool/slurm/d ; mkdir /run/slurm
echo -e "export PATH=\${PATH}:/opt/slurm/bin\nexport LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:/opt/slurm/lib64" > /etc/profile.d/slurm.sh
cp slurm-22.05.7/etc/slurmd.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl enable slurmd munge
root@n3:~# /opt/slurm/sbin/slurmd -C
NodeName=n3 CPUs=4 Boards=1 SocketsPerBoard=4 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=16000 -> この内容を管理ノードのslurm.confに加える
UpTime=0-00:05:15
(管理ノードから)
[root@slurm ~]# scp /etc/munge/munge.key n3:/etc/munge/
[root@slurm ~]# scp /opt/slurm/etc/*.conf n3:/opt/slurm/etc/
最後にデーモンを起動させます
[root@n3 ~]# chown -R munge. /etc/munge/ ; mkdir /run/munge/ ; chown -R munge. /run/munge/
[root@n3 ~]# echo "d /run/munge 0755 munge munge" > /usr/lib/tmpfiles.d/munge.conf
[root@n3 ~]# /usr/bin/systemd-tmpfiles --create /usr/lib/tmpfiles.d/munge.conf
[root@n3 ~]# systemctl enable munge slurmd --now