Skip to content

XRootD Installation (RPMs)#

The following documentation describes how to install XRootD using RPMs.
The old page (with legacy instructions) can be found here

For questions and support, please contact Adrian Sevcenco.

Packages Installation#

Prerequisites

These instructions assume EL9 x86_64 platform.

* configurations and scripts make no difference between EL7 and EL9


Redirector on disk server configuration is not supported nor foreseen.

Preparation of storage locations

It is assumed that the server is already prepared with the necessary directories and correct rights and ownership.

  1. Install required tools (root user is assumed):

    ~# dnf install epel-release
    ~# /usr/bin/crb enable
    
  2. Install the WLCG repository, for example for EL9:

    ~# rpm --import http://linuxsoft.cern.ch/wlcg/RPM-GPG-KEY-wlcg
    
    ~# dnf -y install https://linuxsoft.cern.ch/wlcg/el9/x86_64/wlcg-repo-1.0.0-1.el9.noarch.rpm
    

    Updating from XRootD v4 to v5 case

    Because of configuration fixes (and not only) the minimum version is 5.1 (but recommended to use latest version available)

  3. Install the required packages
    3.1 One can install either the epel version or the upstream XRootD version
    (N.B.!! epel have no downgrade path)
    (see 'Official RPM Repositories' section from XRootD downloads)
    then:

    ~# dnf install -y xrootd-client xrootd-server
    

    The ALICE XRootD plugins needed are:
    - alicetokenacc (dependent on XRootD)
    - xrootd-aggregatingname2name (dependent on XRootD)

    These can be downloaded from here
    chose the relevant distro, e.g. for EL9 family chose el9 directory

XRootD Management Script#

Change of management tools!!! (and configuration template)

The former xrd.sh was re-wrote and splited in xrdctl service management script and xrd_mk_config configuration generation script
See the github repository alicexrd
When upgrading, recreate system.cnf file (it has new content/organization) and run xrd_mk_config for XRootD configuration generation.

Tested: Running of XRootD as non-privileged user
Not yet tested: use of xrd_mk_config generated systemd service files.

  1. Deployment and setting up the environment:
    xrdctl and xrd_mk_config scripts and configuration files can be automatically deployed from github as follows:

    ~$ bash <(curl -fsSLk https://gitlab.cern.ch/jalien/alicexrd/-/raw/master/deploy_alicexrd)
    
    The script will place the scripts within ${XRDCTLDIR:=~/alicexrd} and configurations in ${XRDCONFDIR:=~/alicexrdconf}

    Within XRDCONFDIR:
    ~$ cp system.cnf_CHANGEME system.cnf
    Then set SE_NAME, LOCALROOT, OSS_SPACE_DIRS as all former others are detected automatically.

  2. After completing the configuration run the script: $XRDCTLDIR/xrdctl -c.
    (one can symlink xrdctl into $HOME/bin/)
    Usage: xrdctl arg [configuration_file], where argument is one of :

    Argument Description
    -l | --l | -list | --list list found configuration files
    -s | --s | -status | --status show status of services
    -c | --c | -check | --check check and restart if not running
    -k | --k | -kill | --kill kill running processes
    -f | --f | -restart | --restart force restart
    -logs | --logs manage the logs
    -addcron | --addcron add/refresh cron line
    -removecron | --removecron remove the cron line

    optionaly the configuration file can be explicitly declared.

    Note

    The operations will be applied on
    - specified configuration file
    OR
    - on ALL .xrdcfg files from $XRDCONFDIR

    Environment variables for xrdctl:

    Argument Description
    XRD_READONLY checked by xrootd configuration; if set the export (for ALL found configurations) will be declared as notwritable
    XRDCTL_CMD_XRD/XRDCTL_CMD_CMSD xrootd and cmsd executables (other than the defaults from /usr/bin)
    XRDCTL_PRELOAD use LD_PRELOAD for xrootd/cmsd processes
    XRDRUNDIR location of admin,core,logs,logsbackup dirs; if not set it will be XRDCTLDIR/run/
    XRDCONFDIR location (directory) of .xrdcfg configuration file(s); if not set it wll be XRDCTLDIR/xrootd.conf/
    XRDCTL_DEBUG if set (any value) it will enable various printouts of xrdctl
    XRDCTL_DEBUG_SETX bash enable -x
    XRDCTL_DEBUG_XRD if set enable debug flag for xrootd process
    XRDCTL_DEBUG_CMSD if set enable debug flag for cmsd process

Script Configuration#

The following table highlights environment variables that influence how xrd_mk_config works:
Usage: xrd_mk_config [template_configuration_file]
where the specified argument is a custom path for template configuration (otherwise the ${XRDCONFDIR}/xrootd.xrootd.cf.tmp is used)
It will parse/source ${XRDCONFDIR}/system.cnf and generate the xrootd configuration.

${XRD_MULTISRV} usage

If "${XRD_MULTISRV}" is set, it will enable the spawning of an xrootd/cmsd process FOR EACH OSS_SPACE_DIRS
In this mode, oss.space declaration will be commented/omitted, and a distinct xrootd configuration file will be generated for each directory specified by OSS_SPACE_DIRS

OSS_SPACE_DIRS will be explicitly listed, so globbing will be expanded to all possible directories.
Example: /storage*/xrddata will be expanded by ls to all existing directories

Environment Variable Description
XRDRUNDIR location of admin,core,logs,logsbackup dirs; if not set it will be XRDCTLDIR/run/
XRDCONFDIR location (directory) of .xrdcfg configuration file(s); if not set it wll be XRDCTLDIR/xrootd.conf/

XRootD MonaLisa monitoring#

The monitoring of XRootD is done by MonaLisa agent - MLSensor
This is deployed as a distinct service, found within WLCG repository.

~# dnf -y install mlsensor

There is a required configuration of service (as root):

~# cd /etc/mlsensor
~# mlsensor_config mlsensor.properties.tmp <name of ALICE storage name>

Multiple services/custom ports

if multiple XRootD services are used (or custom ports), make sure to modify mlsensor.properties file
and update lia.Monitor.modules.monXrdSpace.args variable to a space separrated list of XRootD ports, e.g.:
lia.Monitor.modules.monXrdSpace.args=1094 1095

then the normal system enablement procedure can take place

systemctl enable mlsensor
systemctl start mlsensor

Support for MLSensor

For the package and deployment details (configuration): adrianDOTsevcencoATNOSPAMcernDOTch
For the monitoring mechanics and features of java package: costinDOTgrigorsATNOSPAMcernDOTch