Commit 15b013b5 authored by Maysam Rahmanpour's avatar Maysam Rahmanpour
Browse files

Update README.md to add hsm_extension parts

parent b08cccc7
Loading
Loading
Loading
Loading
Loading
+26 −3
Original line number Diff line number Diff line
@@ -9,11 +9,15 @@ in a HPC cluster to produce a high-performance storage space that can be accesse
This storage space allows HPC applications and simulations to run in isolation from each other with regards
to I/O, which reduces interferences and improves performance.

HSM is part of Lustre, which can manage the transferred data on Lustre. With an HSM integration, it can transparently transfer data between Lustre and GekkoFS. When a job starts, it receives a config file from the user and starts to transfer files from Lustre to GekkoFS. When the job is done or another process from Lustre tries to access a transferred file from Lustre, it flushes back the data to Lustre to maintain consistency. It can also let the user run a separate job with shared data on two different filesystems, like Lustre as a backend filesystem and GekkoFS as a burst buffer cache.

# Dependencies

- \>gcc-8 (including g++) for C++11 support
- General build tools: Git, Curl, CMake >3.6 (>3.11 for GekkoFS testing), Autoconf, Automake
- Miscellaneous: Libtool, Libconfig
- Transfer tool: Cargo
- Lustre API library

### Debian/Ubuntu

@@ -29,21 +33,33 @@ GekkoFS base dependencies: `yum install gcc-c++ git curl cmake autoconf automake

GekkoFS testing support: `python38-devel` (**>Python-3.6 required**)

## Installing Cargo
1- Using the scripts on the script directory to install the cargo dependencies first
2- Installing Cargo:
cmake \
  -DCMAKE_PREFIX_PATH:STRING="$CMAKE_PREFIX_PATH" \
  -DCMAKE_INSTALL_PREFIX:STRING="$INSTALL_PATH" \
  -DCARGO_TRANSPORT_LIBRARY:STRING=libfabric \
  -DCARGO_BUILD_TESTS:BOOL=ON \
  ..

# Step-by-step installation

1. Make sure the above listed dependencies are available on your machine
2. Clone GekkoFS: `git clone --recurse-submodules https://storage.bsc.es/gitlab/hpc/gekkofs.git`
    - (Optional) (Optional) If you checked out the sources using `git` without the `--recursive` option, you need to
      execute the following command from the root of the source directory: `git submodule update --init`
3. Set up the necessary environment variables where the compiled direct GekkoFS dependencies will be installed at (we
3. Change the branch to mrahmanp/hsm_extension
4. Set up the necessary environment variables where the compiled direct GekkoFS dependencies will be installed at (we
   assume the path `/home/foo/gekkofs_deps/install` in the following)
    -
   `export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/foo/gekkofs_deps/install/lib:/home/foo/gekkofs_deps/install/lib64`
4. Download and compile the direct dependencies, e.g.,
5. Download and compile the direct dependencies, e.g.,
    - Download example: `gekkofs/scripts/dl_dep.sh /home/foo/gekkofs_deps/git`
    - Compilation example: `gekkofs/scripts/compile_dep.sh /home/foo/gekkofs_deps/git /home/foo/gekkofs_deps/install`
    - Consult `-h` for additional arguments for each script
5. Compile GekkoFS and run optional tests
6. Compile GekkoFS and run optional tests
    - For using the Lustre library, it is necessary to run this with administrative permissions.
    - Create build directory: `mkdir gekkofs/build && cd gekkofs/build`
    - Configure GekkoFS: `cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/home/foo/gekkofs_deps/install ..`
        - add `-DCMAKE_INSTALL_PREFIX=<install_path>` where the GekkoFS client library and server executable should be
@@ -66,6 +82,10 @@ following [README](scripts/spack/README.md) for details.

## General

For ruuning it is also necessary to run GekkoFS with administrative permissions. It sends a request to HSM API and without that it can not process the request.

It is also necessary to start cargo prior to run Gekkofs.

On each node a daemon (`gkfs_daemon` binary) has to be started. Other tools can be used to execute
the binary on many nodes, e.g., `srun`, `mpiexec/mpirun`, `pdsh`, or `pssh`.

@@ -79,6 +99,9 @@ The `-P` argument is used for setting another RPC protocol. See below.
- `ofi+psm2` for using the libfabric plugin with Intel Omni-Path (unstable) and requires
  the [opa-psm2](https://github.com/cornelisnetworks/opa-psm2>) library

## The user cache preference for HSM hsm_extension
The user can edit the existing file 'path.conf' in the etc directory to add the preferred file and directory addresses for caching purposes. It is necessary to edit this file before running the gekkofs deamon.

## The GekkoFS hostsfile

Each GekkoFS daemon needs to register itself in a shared file (*hostsfile*) which needs to be accessible to _all_