CVMFS Repositories

Modified

November 21, 2023

Abstract

The distribution of custom software for users to the HPC infrastructure is provided using the CernVM File-System (CernVM-FS). CernVM-FS is a read-only network file system based on HTTP and optimized to deliver software in a fast, scalable and reliable way. Files and meta-data distributed with CernVM-FS are cached and downloaded on demand to the individual nodes of the compute cluster.

Software Repositories

Multiple software repositories are provided using CernVM-FS 1. A software repository hosts custom build software for an experiment or working group affiliated to GSI or FAIR. Follow instructions in the FAQ to request a new CVMFS repository. All cluster nodes mount software repositories in the directory /cvmfs/.

Every sub-directory in /cvmfs uses an @fqrn@ a Full Qualified Repository Name (FQRN) for example vae.gsi.de (cf. Virtual Application Environments). Sub-directories in /cvmfs/@fqrn@ will be automatically mounted on demand as soon as they are accessed. This means directories are visible when listing with the ls command only if they are mounted already.

Please contact your account coordinator to inquire about more details of the available software landscape. Following is a list of the repositories available on the compute cluster:

Repository (@fqrn@) Contact
aph.gsi.de
cbm.gsi.de
eel.gsi.de
fairsoft.gsi.de
hadessoft.gsi.de
htit.gsi.de
panda.gsi.de
phelix.gsi.de
radprot.gsi.de
theory.gsi.de

Client Configuration

In case you want to mount one or more cvmfs repositories on your machine, proceed with the following four steps. Install cvmfs using your distribution’s package manager, and copy the following master public key to /etc/cvmfs/keys/masterkey.gsi.de.pub:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwK1G5ScR02rvc7nZCo4m
wGyKnSUyDVJUVjKjOm6+ftBb+KAUNfHdsXgq8nx8WYjpEowWEuvr36pohmuDpLby
/FKchIHO89MrJtLNmbLG7+/BI0B0E/W4UznCFrYnD+dgcMKkXLDZTtEpLD6veSYC
XKi9p9yjMxjHecRYVfOum5qWsYAfQ9p9AxbrnkUdiP6B9TQ0BVriPtXU5UybydH1
Otby08DRD7YTXTiG+59hExzcEZEsx1qIX/1fdV0PnNFowlnw5rc+02v2a0C+FnV/
mbjzEAWz28q0jbw9vkaMOOO1fe+jrHziuxfvL7Qlj2kx7cIHvbyca0O5OEU/ajZv
wwIDAQAB
-----END PUBLIC KEY-----

Place the repository-specific configuration file to /etc/cvmfs/config.d/cvmfstest.gsi.de.conf. Users inside the GSI networks use the internal Stratum 1 (an HTTP proxy is usually used automatically on centrally managed GSI machines).

CVMFS_SERVER_URL="http://cvmfs-s1.gsi.de/cvmfs/cvmfstest.gsi.de"
CVMFS_HTTP_PROXY="DIRECT"
CVMFS_PUBLIC_KEY="/etc/cvmfs/keys/masterkey.gsi.de.pub"

User outside the GSI networks us the publicly reachable repositories provided by the external Stratum 1:

CVMFS_SERVER_URL="http://cvmfs-s1-int.gsi.de/cvmfs/cvmfstest.gsi.de"
CVMFS_HTTP_PROXY="DIRECT"
CVMFS_PUBLIC_KEY="/etc/cvmfs/keys/masterkey.gsi.de.pub"

Instead of duplicating the repo name in the CVMFS_SERVER_URL, you can also use @fqrn@ there like this: CVMFS_SERVER_URL="http://cvmfs-s1-int.gsi.de/cvmfs/@fqrn@". Mount the desired repository through any of the available mechanisms. Example for a Systemd unit file cvmfs-cvmfstest.gsi.de.mount:

[Unit]
Description=Mount /cvmfs/cvmfstest.gsi.de
After=network.target

[Mount]
What=cvmfstest.gsi.de
Where=/cvmfs/cvmfstest.gsi.de
Type=cvmfs

[Install]
WantedBy=multi-user.target

Software Modules

It is up to the maintainers how to structure the software inside a repository and how to enable users to load required environment variables to use it. However it is recommended to use Environment Modules. Environment modules dynamically change the users shell environment through modulefiles in order to make software components available. Following is a summary of the important functionality of the module command:

module help             # list of all the commands that module knows
module list             # list the modules loaded
module avail            # find out what modules are available
module help $name       # access a modulefile’s help
module load $name ...   # load a module into the environment 
module unload $name ... # remove a module from the environment
module reset            # back to an initial set of modules
module is-loaded $name  # test whether certain modules is loaded
module whatis $name     # short description of a module
module keyword $text    # keyword search tool

It is recommended to read Lmod: A New Environment Module System 2 for details about the module command.

Footnotes

  1. CernVM-FS Project, CERN
    http://cernvm.cern.ch/portal/filesystem↩︎

  2. Lmod: A New Environment Module System
    https://lmod.readthedocs.io/en/latest/↩︎