Skip to content

pdlfs/deltafs-proto

Repository files navigation

Massive serverless client middleware for fast distributed file system metadata functions.

CI DOI Build Status GitHub Release License

DeltaFS Prototype

XXXXXXXXX
XX      XX                 XX                  XXXXXXXXXXX
XX       XX                XX                  XX
XX        XX               XX                  XX
XX         XX              XX   XX             XX
XX          XX             XX   XX             XXXXXXXXX
XX           XX  XXXXXXX   XX XXXXXXXXXXXXXXX  XX         XX
XX          XX  XX     XX  XX   XX       XX XX XX      XX
XX         XX  XX       XX XX   XX      XX  XX XX    XX
XX        XX   XXXXXXXXXX  XX   XX     XX   XX XX    XXXXXXXX
XX       XX    XX          XX   XX    XX    XX XX           XX
XX      XX      XX      XX XX   XX X    XX  XX XX         XX
XXXXXXXXX        XXXXXXX   XX    XX        XX  XX      XX

DeltaFS was developed, in part, under U.S. Government contract 89233218CNA000001 for Los Alamos National Laboratory (LANL), which is operated by Triad National Security, LLC for the U.S. Department of Energy/National Nuclear Security Administration. Please see the accompanying LICENSE.txt for further information.

Platform

DeltaFS is able to run on Linux, Mac OS, as well as most UNIX platforms for both development and local testing purposes. To run DeltaFS in production, only Linux is supported at this moment. DeltaFS is mostly written in C++. C++11 is NOT required to compile DeltaFS, but will be leveraged given that the compiler supports it. C++14 or later is currently not used. A compiler that supports C++14 or later can still compile DeltaFS code. It is just that DeltaFS does not currently use any C++14 or later features.

Software requirements

Compiling DeltaFS requires a recent C/C++ compiler, cmake, make, mpi, snappy, and Ceph RADOS. On Ubuntu 14.04 LTS or later, you may use the following to prepare the system environment for DeltaFS.

sudo apt-get install gcc g++ make  # Alternatively, this may also be clang
sudo apt-get install cmake cmake-curses-gui
sudo apt-get install libsnappy-dev librados-dev
sudo apt-get install libmpich-dev  # Alternatively, this may also be libopenmpi-dev
sudo apt-get install mpich

Building

After all software dependencies are installed, we can proceed to building DeltaFS. DeltaFS uses cmake and we suggest you to do an out-of-source build. To do that, we create a build directory (mkdir build) beneath the root DeltaFS source directory and run 'ccmake' from it:

git clone git@github.com:pdlfs/deltafs-proto.git
cd deltafs-proto
mkdir build
cd build
ccmake -DDELTAFS_COMMON_INTREE=ON ..

Choose the following cmake options and then type 'c' (potentially multiple times) until we see [g] Generate:

 BUILD_SHARED_LIBS                ON
 BUILD_TESTS                      ON
 CMAKE_BUILD_TYPE                 RelWithDebInfo
 CMAKE_INSTALL_PREFIX             /usr/local
 CMAKE_PREFIX_PATH
 DELTAFS_COMMON_INTREE            ON
 DELTAFS_MPI                      ON
 PDLFS_GFLAGS                     OFF
 PDLFS_GLOG                       OFF
 PDLFS_RADOS                      ON
 PDLFS_SNAPPY                     ON
 PDLFS_VERBOSE                    1

Type 'g' to generate build files and exit CMake. Next, we do:

make

Finally, we run tests to check if DeltaFS is correctly built:

ctest -VV  ## <-- This is double V, not W

Sample test output can be checked at https://github.com/pdlfs/deltafs-proto/actions/workflows/ci.yml. It takes about 5 minutes to run all tests.

DONE