volclava
Contents
description
The volclava 2.1.0 is developed based on OpenLava 2.0 and follows its license of GPL 2.0.
reference: https://github.com/bytedance/volclava
install volclava in Ubuntu 24.04 LTS
under the bash shell
root@n1:~# echo $SHELL /bin/bash
- install depending packages
root@n1:~ # apt install libtirpc-dev libnsl-dev libnsl2
* /local/lava/src << used for volclava code repository * /local/lava/obj << used for volclava build repository
root@n1:~ # git clone https://github.com/bytedance/volclava.git /local/lava/src Cloning into '/local/lava/src'... root@n1:~ # cd /local/lava/src/ root@n1:/local/lava/src # bash volcinstall.sh --type=code --prefix=/local/lava/obj/2.1.0 --hosts="n1" --interactive=N ... Congratulates, installation is done and enjoy the journey! root@n1:~ # ll /local/lava/obj/2.1.0/ total 24K drwxr-xr-x 3 volclava volclava 4.0K Nov 12 03:51 work drwxr-xr-x 3 volclava volclava 4.0K Nov 12 03:51 share drwxr-xr-x 2 volclava volclava 4.0K Nov 12 03:51 log drwxr-xr-x 2 volclava volclava 4.0K Nov 12 03:51 include drwxr-xr-x 3 volclava volclava 4.0K Nov 12 03:51 exec drwxr-xr-x 2 volclava volclava 4.0K Nov 12 03:51 etc
adjust/correction
## replace the "shebang line" (first line) with `bash` interpreter root@n1:~# head -n1 /etc/init.d/volclava #!/bin/sh root@n1:~# sed -i '1s|^#!/bin/sh|#!/bin/bash|' /etc/init.d/volclava root@n1:~# head -n1 /etc/init.d/volclava #!/bin/bash ## change the default `shell` to `bash` for user `volclava` root@node0:~# chsh -s /bin/bash volclava
start and verify services
root@n1:~# systemctl daemon-reload
root@n1:~# service volclava start
root@n1:~# service volclava status
● volclava.service - LSB: volclava
Loaded: loaded (/etc/init.d/volclava; generated)
Active: active (running) since Wed 2025-11-12 04:06:42 MST; 6s ago
Docs: man:systemd-sysv-generator(8)
Process: 8341 ExecStart=/etc/init.d/volclava start (code=exited, status=0/SUCCESS)
Tasks: 5 (limit: 14249)
Memory: 10.3M (peak: 11.5M)
CPU: 682ms
CGroup: /system.slice/volclava.service
├─8350 /local/lava/obj/2.1.0/exec/ubuntu-24-x86_64/sbin/lim
├─8352 /local/lava/obj/2.1.0/exec/ubuntu-24-x86_64/sbin/res
├─8354 /local/lava/obj/2.1.0/exec/ubuntu-24-x86_64/sbin/sbatchd
├─8355 /local/lava/obj/2.1.0/exec/ubuntu-24-x86_64/sbin/pim
└─8362 /local/lava/obj/2.1.0/exec/ubuntu-24-x86_64/sbin/mbatchd -d /local/lava/obj/2.1.0/etc
Nov 12 04:06:42 n1.image.fbsd-transport.emulab.net systemd[1]: Starting volclava.service - LSB: volclava...
Nov 12 04:06:42 n1.image.fbsd-transport.emulab.net volclava[8341]: Starting daemons...
Nov 12 04:06:42 n1.image.fbsd-transport.emulab.net volclava[8341]: lim started
Nov 12 04:06:42 n1.image.fbsd-transport.emulab.net volclava[8341]: res started
Nov 12 04:06:42 n1.image.fbsd-transport.emulab.net volclava[8341]: sbatchd started
Nov 12 04:06:42 n1.image.fbsd-transport.emulab.net systemd[1]: Started volclava.service - LSB: volclava.
root@n1:~#
root@n1:~# ll /etc/profile.d/volclava.sh
lrwxrwxrwx 1 root root 37 Nov 12 03:51 /etc/profile.d/volclava.sh -> /local/lava/obj/2.1.0/etc/volclava.sh*
root@n1:~# source /etc/profile.d/volclava.sh
root@n1:~#
root@n1:~# lsid
volclava project 2.1.0, Nov 12 2025
My cluster name is volclava
My master name is n1
root@n1:~# lshosts
HOST_NAME type model cpuf ncpus maxmem maxswp server RESOURCES
n1 linux IntelI5 100.0 8 11947M 8191M Yes (cs)
root@n1:~# lsload
HOST_NAME status r15s r1m r15m ut pg ls it tmp swp mem
n1 ok 0.0 0.0 0.1 0% 0.0 1 1 56G 8192M 11G
root@n1:~# bhosts
HOST_NAME STATUS JL/U MAX NJOBS RUN SSUSP USUSP RSV
n1 ok - 8 0 0 0 0 0
root@n1:~#
## stop and disable
root@n1:~# systemctl stop volclava
root@n1:~# systemctl disable volclava
set up a cluster
Save above OS into a image and load the same image on all the nodes of this cluster: node0(master), node1 and node2.
root@node0:~# tail -n3 /etc/hosts root@node1:~# tail -n3 /etc/hosts root@node2:~# tail -n3 /etc/hosts << make sure /etc/hosts contains these nodes ... 10.10.1.1 node0 10.10.1.2 node1 10.10.1.3 node2 root@node0:~# vim /local/lava/obj/2.1.0/etc/lsf.cluster.volclava << add the nodes ... Begin Host HOSTNAME model type server r1m RESOURCES node0 IntelI5 linux 1 3.5 (cs) node1 IntelI5 linux 1 3.5 (cs) node2 IntelI5 linux 1 3.5 (cs) End Host ...
setup computing nodes: node1 and node2
root@node1:/local/lava/src# bash volcinstall.sh --type=server --env=/local/lava/obj/2.1.0 root@node2:/local/lava/src# bash volcinstall.sh --type=server --env=/local/lava/obj/2.1.0 ... Congratulates, installation is done and enjoy the journey! root@node1:~# sed -i '1s|^#!/bin/sh|#!/bin/bash|' /etc/init.d/volclava root@node1:~# head -n1 /etc/init.d/volclava #!/bin/bash root@node2:~# sed -i '1s|^#!/bin/sh|#!/bin/bash|' /etc/init.d/volclava root@node2:~# head -n1 /etc/init.d/volclava #!/bin/bash root@node1:~# systemctl daemon-reload root@node1:~# service volclava restart root@node1:~# root@node2:~# systemctl daemon-reload root@node2:~# service volclava restart root@node2:~#
- verify services
root@node0:~# lsid volclava project 2.1.0, Nov 12 2025 My cluster name is volclava My master name is node0 root@node0:~# bhosts HOST_NAME STATUS JL/U MAX NJOBS RUN SSUSP USUSP RSV node0 ok - 8 0 0 0 0 0 node1 ok - 8 0 0 0 0 0 node2 ok - 8 0 0 0 0 0 root@node0:~# bqueues QUEUE_NAME PRIO STATUS MAX JL/U JL/P JL/H NJOBS PEND RUN SUSP normal 30 Open:Active - - - - 0 0 0 0 root@node0:~#
auto-build a volclava cluster
The above logic is integrated into a script that can build up a volclava cluster on demand, through dynamically reserved resources from Emulab.net.
- demo 1: small cluster
root@node0:~# lsid volclava project 2.1.1, Nov 18 2025 My cluster name is volclava My master name is node0 root@node0:~# lshosts HOST_NAME type model cpuf ncpus maxmem maxswp server RESOURCES node0 pc3000 Xeon2 100.0 2 1966M 8191M Yes (cs) node1 d710 Xeon8 400.0 8 11942M 8191M Yes (cs) node2 d710 Xeon8 400.0 8 11947M 8191M Yes (cs) root@node0:~# lsload HOST_NAME status r15s r1m r15m ut pg ls it tmp swp mem node0 ok 0.0 0.0 0.0 7% 0.0 1 1 56G 8192M 1675M node1 ok 0.0 0.0 0.0 0% 0.0 0 28 56G 8188M 11G node2 ok 0.0 0.1 0.0 0% 0.0 0 28 56G 8188M 11G root@node0:~# bhosts HOST_NAME STATUS JL/U MAX NJOBS RUN SSUSP USUSP RSV node0 ok - 2 0 0 0 0 0 node1 ok - 8 0 0 0 0 0 node2 ok - 8 0 0 0 0 0 root@node0:~#
- demo 2: hybrid cluster (5 compute nodes per-hardware type)
root@node0:~# lsid volclava project 2.1.1, Nov 18 2025 My cluster name is volclava My master name is node0 root@node0:~# lshosts HOST_NAME type model cpuf ncpus maxmem maxswp server RESOURCES node0 pc3000 Xeon2 100.0 2 1966M 8191M Yes (cs) node1 pc3000 Xeon2 100.0 2 1966M 8191M Yes (cs) node2 pc3000 Xeon2 100.0 2 1966M 8191M Yes (cs) node3 pc3000 Xeon2 100.0 2 1966M 8191M Yes (cs) node4 pc3000 Xeon2 100.0 2 1966M 8191M Yes (cs) node5 pc3000 Xeon2 100.0 2 1966M 8191M Yes (cs) node6 d710 Xeon8 400.0 8 11942M 8191M Yes (cs) node7 d710 Xeon8 400.0 8 11942M 8191M Yes (cs) node8 d710 Xeon8 400.0 8 11942M 8191M Yes (cs) node9 d710 Xeon8 400.0 8 11942M 8191M Yes (cs) node10 d710 Xeon8 400.0 8 11942M 8191M Yes (cs) node11 d430 Xeon32 1600.0 32 64295M 8191M Yes (cs) node12 d430 Xeon32 1600.0 32 64298M 8191M Yes (cs) node13 d430 Xeon32 1600.0 32 64298M 8191M Yes (cs) node14 d430 Xeon32 1600.0 32 64298M 8191M Yes (cs) node15 d430 Xeon32 1600.0 32 64298M 8191M Yes (cs) root@node0:~# lsload HOST_NAME status r15s r1m r15m ut pg ls it tmp swp mem node0 ok 0.0 0.1 0.0 8% 0.0 1 0 56G 8192M 1658M node11 ok 0.0 0.0 0.0 0% 0.0 0 43 56G 8188M 62G node12 ok 0.0 0.0 0.0 1% 0.0 0 43 56G 8188M 62G node13 ok 0.0 0.0 0.0 0% 0.0 0 42 56G 8188M 62G node14 ok 0.0 0.0 0.0 0% 0.0 0 39 56G 8188M 62G node15 ok 0.0 0.0 0.0 0% 0.0 1 39 56G 8188M 62G node6 ok 0.0 0.0 0.0 3% 0.0 0 51 56G 8188M 11G node7 ok 0.0 0.0 0.0 0% 0.0 0 51 56G 8188M 11G node8 ok 0.0 0.0 0.0 3% 0.0 0 52 56G 8188M 11G node9 ok 0.0 0.0 0.0 3% 0.0 0 51 56G 8188M 11G node10 ok 0.0 0.0 0.0 0% 0.0 0 51 56G 8188M 11G node1 ok 0.0 0.0 0.0 7% 0.0 0 52 56G 8188M 1652M node2 ok 0.0 0.0 0.0 7% 0.0 0 52 56G 8188M 1648M node3 ok 0.0 0.0 0.0 7% 0.0 0 52 56G 8188M 1659M node4 ok 0.0 0.0 0.0 1% 0.0 0 52 56G 8188M 1670M node5 ok 0.0 0.0 0.0 14% 0.0 0 51 56G 8188M 1626M root@node0:~# bhosts HOST_NAME STATUS JL/U MAX NJOBS RUN SSUSP USUSP RSV node0 ok - 2 0 0 0 0 0 node1 ok - 2 0 0 0 0 0 node10 ok - 8 0 0 0 0 0 node11 ok - 32 0 0 0 0 0 node12 ok - 32 0 0 0 0 0 node13 ok - 32 0 0 0 0 0 node14 ok - 32 0 0 0 0 0 node15 ok - 32 0 0 0 0 0 node2 ok - 2 0 0 0 0 0 node3 ok - 2 0 0 0 0 0 node4 ok - 2 0 0 0 0 0 node5 ok - 2 0 0 0 0 0 node6 ok - 8 0 0 0 0 0 node7 ok - 8 0 0 0 0 0 node8 ok - 8 0 0 0 0 0 node9 ok - 8 0 0 0 0 0 root@node0:~#