volclava


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

root@n1:~# echo $SHELL
/bin/bash

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
...

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:~#

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.

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:~# 

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:~#

chengcui/volclava (last edited 2025-11-20T17:58:56+0000 by chengcui)