Building From Sources

BeeGFS can easily build from sources. Please see also the README.md included in the source code repository. Depending on the system, different options can be used in this process, and just the general procedure will be described here. During those steps references for adaptions of the builds are shown. We will use git and get the public sources and then go through the necessary steps for building the packages.

  1. Get the sources:

    $ git clone https://git.beegfs.io/pub/v7 beegfs-v7
    
  2. Go into directory beegfs-v7:

    $ cd beegfs-v7
    
  3. Read the README.md (Also rendered online on https://git.beegfs.io/pub/v7):

    $ less README.md
    
  4. Install dependencies that are stated in README.md:

    # yum install ...
    
  5. Build by following either

  1. Install the packages you need on your machines:

    # rpm -i ./packages/libbeegfs-ib*.rpm \
             ./packages/beegfs-{common,mgmtd,storage,meta,utils}*.rpm \
             ./packages/beegfs-client-7*.rpm
    
  2. Install the other packages on the machines according to your needs.

  3. Check the System Design to continue with the installation.

Building Packages

BeeGFS comes with a Makefile capable of building packages for the system on which it is executed. These include all services, the client module and utilities.

To build RPM packages, run

$ make package-rpm PACKAGE_DIR=packages

You may also enable parallel execution with

$ make package-rpm PACKAGE_DIR=packages RPMBUILD_OPTS="-D 'MAKE_CONCURRENCY <n>'"

where <n> is the number of concurrent processes.

For DEB packages use this command:

$ make package-deb PACKAGE_DIR=packages

Or start with <n> jobs running in parallel:

$ make package-deb PACKAGE_DIR=packages DEBUILD_OPTS="-j<n>"

This will generate individual packages for each service (management, meta-data, storage) as well as the client kernel module and administration tools.

The above examples use packages as the output folder for packages, which must not exist and will be created during the build process. You may specify any other non-existent directory instead.

Note, however, that having PACKAGE_DIR on a NFS or similar network share may slow down the build process significantly.

Building Without Packaging

To build the complete project without generating any packages, simply run

$ make

The sub-projects have individual make targets, for example, storage-all, meta-all, etc.

To speed things up, you can use the -j option of make. Additionally, the build system supports distcc:

$ make DISTCC=distcc