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 EL7/CC7 x86_64 platform that is supported and tested.
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):

    ~# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    
  2. Install the WLCG repository, for example for CC7:

    ~# rpm --import http://linuxsoft.cern.ch/wlcg/RPM-GPG-KEY-wlcg
    
    ~# yum -y install http://linuxsoft.cern.ch/wlcg/centos7/x86_64/wlcg-repo-1.0.0-1.el7.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) See upgrading below

  1. Install the required packages
    3.1 If fresh install, install the metapackage that will pull XRootD as a dependency (when present in epel):

    ~# yum -y install alicexrdplugins
    

    3.2 For upgrade from v4 case it's best to remove all XRootD packages

    ~# yum remove -y xrootd*
    

    Then one can install either the epel version or the upstream XRootD version (N.B.!! epel have no downgrade path)
    (see Yum repositories section from XRootD downloads)

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

    The ALICE XRootD plugins are:
    - alicetokenacc (dependent on XRootD)
    - xrootd-aggregatingname2name (dependent on XRootD)
    - alicexrdplugins (metapackage, will pull the above packages)

    Until these pluggins are accepted in WLCG repository, alicetokenacc, xrootd-aggregatingname2name, alicexrdplugins can be downloaded from here otherwise they are usually found in WLCG repository. (chose the relevant distro, for centos 7, chose el7 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://raw.githubusercontent.com/adriansev/alicexrd/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.

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