1. Obtaining and running mdtmFTP

There are different ways to obtain and run mdtmFTP:

  • to build, and install MDTM library and mdtmFTP programs from sources, or

  • to use Docker container images, or

  • to use Singularity container images.

This document discusses the source release. If you are looking for information on using Docker or Singuarity images, please find the manuals at http://mdtm.fnal.gov.

1.1. Requirements

mdtmFTP has been tested on Linux systems. The system must have a Linux kernel later than 3.12.23.

1.2. Building mdtm and mdtmFTP

To build mdtm library and mdtmFTP, the following tools are required:

  • C++ and C compilers.

  • GNU Autotools

  • Development packages for OpenSSL, numactl, hwloc, lvm2 mosquitto, json-c, krb5, ncurses.

1.2.1. Install dependencies

To install build tools and dependencies on RHEL and derivatives:

$ sudo yum install \
    gcc gcc-c++ make autoconf automake libtool m4 \
    numactl-devel hwloc-devel lvm2-devel libblkid-devel \
    openssl-devel mosquitto-devel json-c-devel \
    krb5-devel libtool-ltdl-devel ncurses-devel \
    libuuid-devel rrdtool-devel

On Debian and Ubuntu:

$ sudo apt install \
    gcc g++ make autoconf automake libtool m4 \
    libnuma-dev libhwloc-dev liblvm2-dev libblkid-dev \
    libssl-dev libmosquitto-dev libjson-c-dev \
    libkrb5-dev libltdl-dev libncurses5-dev \
    uuid-dev librrd-dev

1.2.2. Install mdtm library

  1. Create a building directory:

$ mkdir ~/build
$ cd ~/build
  1. Download mdtm-1.0.5.tar.gz software package from the project website, and extract it in ~/build.

  2. Build and install mdtm library:

$ tar –xvz mdtm-1.0.5.tar.gz
$ cd mdtm-1.0.3
$ ./autogen.sh
$ ./configure --prefix=$prefix
$ make
$ sudo make install

1.2.3. Install mdtmFTP

  1. Download mdtmFTP software package from the website.

  2. Extract the downloaded mdtmftp-1.1.1.tar.gz archive to ~/build.

  3. Build and install mdtmFTP:

$ tar xvfz mdtmftp-1.1.1.tar.gz
$ cd ~/build/mdtm
$ ./autogen.sh
$ ./configure --prefix=$prefix \
     PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/:$PKG_CONFIG_PATH
$ make && make install

Two major mdtmFTP binary programs will be generated: $prefix/bin/mdtm-ftp-client - the mdtmFTP client executable, and $prefix/sbin/mdtm-ftp-server - the mdtmFTP server exectuable.

1.3. Configuring and running mdtmFTP server

1.3.1. Decide whether to run mdtmFTP server as root or non-root

You can run mdtmFTP server either as root, or as non-root. If you choose to run the server as non-root, please add the needed capabilities to the server so that it can function correctly.

Please see Running mdtmFTP server with or without root privilege for details on how to run mdtmFTP server as a non-root user.

1.3.2. Create configuration files

1.3.3. Choose an authentication method

mdtmFTP supports two types of authentication:

  • Username/password authentication,

  • GSI certificate-based authentication

Please choose an authentication method that suits your needs. See Managing credentials for details.

1.3.4. Create local account(s) and grant user access to mdtmFTP server

First, create local user accounts in the host where mdtmFTP server will run.

Then, grant user access to mdtmFTP server:

1.3.5. Running mdtmFTP server

mdtmFTP server command syntax:

$ mdtm-ftp-server \
   -control-interface <ip_address> \
   -data-interface <ip_address> \
   -password-file <passwd_file> \
   -p <port_num> \
   -c <server.conf>

See section on Running mdtmFTP server for details.

1.4. Configuring and running mdtmFTP client

mdtmFTP client can be launched either as root or as non-root.

1.4.1. mdtmFTP client configuration file

1.4.2. Running mdtmFTP client

mdtmFTP client command syntax:

$ mdtm-ftp-client [-ipv6] -p <parallelism> [-splice] source_url destination_url

See section on Running mdtmFTP client for details.