Building From Sources

BeeGFS can easily be built from sources. Depending on the system, different options may be used in the build process, and page is only intended to summarize the general procedure. For full details refer to the project’s README.md. The following steps require/use git and will walk through downloading the public sources and building packages that can be installed using your operating system’s package manager. Optionally you can also build without packaging.

  1. Clone the source repository from GitHub:

    $ git clone https://github.com/ThinkParQ/beegfs.git
    
  2. Go into the directory beegfs:

    $ cd beegfs
    
  3. Install the prerequisites listed in the project’s README.md:

    # yum install ...
    
  4. 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 (metadata and 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