BeeGFS
10.1 BeeGFS Introduction
Integration of BeeGFS with BCM is a legacy option that is no longer supported. It is discussed in this chapter for legacy cluster purposes only.
10.1.1 BeeGFS Concepts
BeeGFS is a high-performance parallel file system, developed by the Fraunhofer Competence Center for High Performance Computing, and optimized for intensive I/O. It uses a distributed metadata architecture designed for scalability and flexibility. More information about BeeGFS can be found at the official online documentation at https://www.beegfs.io/content/documentation/.
NVIDIA Base Command Manager provides packages to allow BeeGFS to be deployed, managed, and monitored on a cluster running RHEL and derivatives. The deployment tool provided by BCM is cm-beegfs-setup (section 10.2).
A BeeGFS cluster consists of a management server, one or more metadata servers and one or more storage servers. Clients should have client servers running on them.
If high-availability is required, then the administrator needs to arrange for it separately, for the BeeGFS management servers.
Since BeeGFS is a parallel filesystem, it means that adding more nodes increases not only the storage capacity, but also system performance. BeeGFS can work with any local file system for data storage as long as it is POSIX compliant.
By default, the latest version of BeeGFS is supported. However, at the time of writing (November 2022), the latest BeeGFS version is 7.3, which is supported for RHEL8 and variants.
The BeeGFS Mon monitoring service is on the roadmap for future BCM integration.
10.1.2 BeeGFS Installation Notes And Options
By default all logging is done to the systemd journal. The installation logs can be viewed using:
journalctl -u 'beegfs-*'.
Log locations can be changed using cmsh or Base View at any moment after installation, by editing BeeGFS roles for the corresponding configuration overlays (section 10.3.2).
Authentication is possible for the BeeGFS cluster via a shared secret file. The shared secret file can be installed during cm-beegfs-setup installation (section 10.2).
10.2 Deployment And Uninstallation Of BeeGFS With cm-beegfs-setup
Deployment and uninstallation for BCM can be carried out with a TUI utility, cm-beegfs-setup. The utility is a part of a cluster-tools package that comes with BCM. If the BeeGFS packages are not installed, then the utility installs them.
The cm-beegfs-setup utility can be run as root from the head node. The first screen that shows up is the main menu for operations (figure 10.1):

Figure 10.1: BeeGFS Operations Via cm-beegfs-setup Main Menu
In the main menu, the administrator can choose to:
-
Deploy BeeGFS (section 10.2.2)
-
Modify an existing BCM BeeGFS configuration (the options are a subset of the deployment as described in section 10.2.2)
-
Uninstall BeeGFS (section 10.2.3)
-
Simply exit the TUI session
10.2.1 Preparation Of The Cluster For BeeGFS
While cm-beegfs-setup can configure many aspects of BeeGFS installation, the optimization and disk layout aspects are expected to be managed by the system administrator. This section discusses the preparations needed before running cm-beegfs-setup.
10.2.1.1 Creation Of A New Software Image For BeeGFS
An existing default image is first cloned as follows:
Example
The software image is now modified to store additional configuration files to optimize performance. The modifications made to this image may be unnecessary, or even harmful in the default image.
10.2.1.2 Preparation Of The Software Image Directories
Directories are created for storage and metadata in the image. The directories are to be used later in the disk setup layout and when running cm-beegfs-setup.
Example
10.2.1.3 Creation Of Disk Setup XML For Storage And Metadata VMs
The XML examples that follow illustrate the connection between the storage and the metadata directories of BeeGFS. The examples are simplified for illustration. A more realistic scenario would typically involve a hardware or a software RAID configuration.
The XML disk setup is saved as a file, /root/beegfs-storage.xml, on the head node, and may look similar to:
Example
While the setup for /dev/sda is rather generic, there are some important modifications in the /dev/sdb section:
-
The value for
filesystemis set toXFS, which is as recommended at https://doc.beegfs.io/latest/advanced_topics/storage_tuning.html. -
mkfsFlagshas settings designed to help optimize for large I/O. In particular, many large files are assumed per directory. This assumption is based on how BeeGFS saves its own files rather than the users’ files: BeeGFS stores the data aggregated and split into large-sized chunks. -
mountPointis important later when runningcm-beegfs-setup. This directory must be later specified as a BeeGFS storage directory. -
mountOptions, just like themkfsflags, are intended to optimize for I/O in large-sized chunks. It also assumes many large files per directory.
The BeeGFS metadata XML file disk setup is saved as a file, /root/beegfs-metadata.xml, on the head node, and may look similar to:
Example
Similar to the storage setup XML, the mkfs options are based on BeeGFS recommendations, in this case as found at https://doc.beegfs.io/latest/advanced_topics/metadata_tuning.html.
The setting for mountPoint here too is the one used when running cm-beegfs-setup.
10.2.1.4 Creation Of Categories For Storage And Metadata Nodes
Categories are necessary to tie images and disk layout together (output truncated):
Example
10.2.1.5 Tuning Kernel Parameters
The BeeGFS Wiki at https://www.beegfs.io/wiki/StorageServerTuning suggests enabling transparent huge tables. Further information about huge pages may be found at https://www.kernel.org/doc/html/latest/admin-guide/mm/transhuge.html.
Kernel parameters can be set for the image to permanently enable this feature:
Example
10.2.1.6 Tuning Device Configuration
Assuming the preceding disk setup layout, with BeeGFS using /dev/sdb, the following udev rules can be added, to improve large and highly-parallel I/O.
Example
It is always a good idea to test the preceding optimization suggestions. Benchmarking the system before and after making the adjustments is therefore recommended. Benchmarking BeeGFS is discussed at https://www.beegfs.io/wiki/Benchmark.
10.2.1.7 Tuning VM Parameters
Similarly, VFS caching can be optimized by setting a lower latency:
10.2.1.8 Preparation Of Storage And Metadata Nodes For BeeGFS Setup
The categories created earlier on must now be connected to the actual nodes.
In the following illustrative cluster node002 is used for metadata, node001 is used for management, and node003..node005 are used for storage:
Example
10.2.1.9 Running cm-beegfs-setup
During the cm-beegfs-setup run, when prompted to select categories for BeeGFS metadata, the beegfs-metadata category should be selected.
Similarly, when prompted to select categories for BeeGFS storage, the tt beegfs-storage category should be selected.
The client nodes are the nodes where users access the storage. However, the client service is deployed to other BeeGFS nodes as well.
The BeeGFS helper is needed to help other BeeGFS services with DNS and other functionality that is not part of the BeeGFS kernel module.
When prompted to select nodes for BeeGFS helper, all cluster nodes that are intended to run BeeGFS-related services should be selected.
When prompted to configure the BeeGFS metadata role, the /beegfs/metadata directory should be set in the Data directories field. This directory should already be configured in the disk setup XML step which sets up the mount point for data disks for storage and metadata.
Similarly, when prompted to configure the BeeGFS storage role, the /beegfs/storage directory should be set in the Data directories field.
10.2.2 Deployment Of BeeGFS
If the Deploy option is chosen, then the deployment options are presented by the wizard.
10.2.2.1 Name, Mount Point, Authentication File, Multi Mode
The first BeeGFS settings options that can be configured in the wizard are the BeeGFS cluster name, BeeGFS client mount point, BeeGFS authentication file name, and BeeGFS Multi Mode (figure 10.2):

Figure 10.2: BeeGFS Cluster Name, Mount Point, BeeGFS Authentication File, And Multi Mode Options
A suggested mount point name and authentication file name are generated automatically as the cluster name file is typed in. The suggestions can be modified if needed.
10.2.2.2 Select Management Node
The next screen (figure 10.3) then asks for one node to be selected to be the BeeGFS management server:

Figure 10.3: Select Management Node
10.2.2.3 Select Metadata Nodes
The next screen then asks for node categories to be selected for the BeeGFS metadata servers. Zero or more categories can be chosen. The next screen (figure 10.4) in any case displays the remaining nodes that have not already been selected by category, and allows these remaining nodes to be individually set to be metadata servers.
One or more metadata servers are needed for a BeeGFS instance.

Figure 10.4: Select Metadata Nodes
10.2.2.4 Select Storage Nodes
The next screen then asks for node categories to be selected for the BeeGFS storage servers. Zero or more categories can be chosen. The next screen (figure 10.5) in any case displays the remaining nodes that have not already been selected by category, and allows these remaining nodes to be individually set to be storage servers.
One or more storage servers are needed for a BeeGFS instance.

Figure 10.5: Select Storage Nodes
10.2.2.5 Select Client Nodes
The next screen then asks for node categories to be selected for the BeeGFS clients. Zero or more categories can be chosen. The next screen (figure 10.6) in any case displays the remaining nodes that have not already been selected by category, and allows these remaining nodes to be individually set to be BeeGFS clients.
One or more BeeGFS client servers are needed for a BeeGFS instance.

Figure 10.6: Select Client Nodes
10.2.2.6 Select BeeGFS Helper Nodes
The next screen then asks for node categories to be selected for the BeeGFS helper service. Zero or more categories can be chosen. The next screen (figure 10.7) in any case displays the remaining nodes that have not already been selected by category, and allows these remaining nodes to be individually set to be BeeGFS helper nodes. By default, the selection of the helper nodes, which provide logging and DNS lookup functions to the BeeGFS clients, matches the selection that has been made earlier on of the BeeGFS client servers.

Figure 10.7: Select Helper Nodes
10.2.2.7 Select BeeGFS Version
The next screen asks for a BeeGFS version to be selected. By default the latest stable compatible version is selected.
10.2.2.8 Management Server Configuration
The next screen (figure 10.8) asks for some configuration parameters for the BeeGFS management service to be set:

Figure 10.8: Configure Management Service
Default suggestions are presented.
10.2.2.9 Metadata Server Configuration
The next screen (figure 10.9) asks for input on configuring the BeeGFS metadata service:

Figure 10.9: Configure Metadata Servce
Default suggestions are presented.
10.2.2.10 Storage Server Configuration
The next screen (figure 10.10) asks for input on setting some configuration parameters for the BeeGFS storage service:

Figure 10.10: Configure Storage Servce
10.2.2.11 Client Configuration
The next screen (figure 10.11) asks for input on configuring the BeeGFS clients:

Figure 10.11: Configure Client Servce
10.2.2.12 Helper Configuration
The next screen (figure 10.12) asks for input on configuring the BeeGFS helper:

Figure 10.12: Configure Helper Servce
10.2.2.13 Deployment Summary
Finally, the wizard displays a deployment summary (figure 10.13):

Figure 10.13: Deployment Summary
From this screen the deployment process can be started, the deployment configuration can be viewed and saved, or the wizard can simply be exited.
10.2.2.14 Command Line Installation
If a configuration file is saved from a cm-beegfs-setup run, then it can be used to install a BeeGFS cluster automatically:
Example
10.2.3 Uninstalling BeeGFS
If the Uninstall option is chosen from the main menu (figure 10.1), then the uninstallation process starts.
An extra Are you sure? prompt is thrown in the way first, to help avoid a mistaken removal, and after confirmation, a further confirmation is needed to remove an authentication file that was installed with the BeeGFS instance.
The uninstallation process then starts. It can take several minutes in order to ensure that services are stopped properly, so that errors and junk files are avoided.
10.3 Managing The Deployed BeeGFS Instance
A BeeGFS cluster consists of:
-
One Management node
-
Some Metadata nodes
-
Some Storage nodes
Information about the right number of nodes to use can be found at https://www.beegfs.io/docs/whitepapers/Picking_the_right_Number_of_Targets_per_Server_for_BeeGFS_by_ThinkParQ.pdf
BeeGFS clients should have client servers running on them.
10.3.1 Setup
Associated with BeeGFS are the following BeeGFS-related packages, most of which provide services:
-
beegfs-mgmtd -
beegfs-meta -
beegfs-storage -
beegfs-client -
beegfs-helperd -
beegfs-utils
The repository from which these packages are picked up is added to the repositories list when BeeGFS is installed by BCM (section 10.2), and the packages are then installed on all of the cluster nodes. The services are assignable by the cluster administrator to cluster devices as roles. In cmsh these BeeGFS roles are treated as objects, and the configuration of these roles is determined by role parameters (object attributes). The roles are described in detail section 10.3.2.
10.3.2 BeeGFS Objects
The BeeGFS configuration settings are updated by BCM in instance-specific configuration files under /etc/beegfs/.
10.3.2.1 BeeGFS Instances Properties
In section 10.2.2, an example session is run with the BCM utility cm-beegfs-setup. During the session, an example of a BeeGFS instance, mybeegfs, is created. BeeGFS instances such as mybeegfs, that have been created by BCM, can be listed, and can have their main properties viewed in the beegfs main mode of cmsh.
-
The
listcommand lists the instances and the allocation of nodes to the BeeGFS servers:Example
-
The main properties of a particular BeeGFS instance, such as
mybeegfscan be shown with:Example
The properties that are specific to the BeeGFS services can be viewed via the associated cmsh roles. The tree layout for the submodes associated with BeeGFS roles is according to the following scheme:
10.3.2.2 BeeGFSManagement Role
The BeeGFSManagement role is used to configure BeeGFS management services. The role parameters are described in table 10.1:
Table 10.1: BeeGFSManagement role parameters and beegfs-mgmtd options
The settings can be managed in cmsh via the beegfs::management role. As is usual for roles, they can be managed by device mode, category mode, or configurationoverlay mode. The parameters of the role that correspond to the parameters in the preceding table can then be set.
If the management role is assigned to the head node, as suggested in the example session in section 10.2.2, then the role can be viewed from the cmsh session as follows:
Example
The configuration settings can be viewed within the submodes of the role for a particular BeeGFS instance:
Example
The Connection settings submode for the management server in the BeeGFS instance has the ports and interface settings for the management service: Similarly, the Log settings submode for the management server in the BeeGFS instance has log configuration settings for the management service:
Example
Similarly, the Log settings submode for the management server in the BeeGFS instance has log configuration settings for the management service:
Example
10.3.2.3 BeeGFSMetadata Role
The BeeGFSMetadata role is used for configuring BeeGFS metadata services. The role parameters are described in Table 10.2:
Table 10.2: BeeGFSMetadata role parameters and beegfs-meta options
The settings for BeeGFS metadata can be managed in cmsh via the beegfs::metadata role. Roles are, as usual, assigned via device, category, or configurationoverlay mode. The parameters of the role that correspond to the parameters in the preceding table can then be set.
Example
10.3.2.4 BeeGFSStorage Role
The BeeGFSStorage role is used for configuring BeeGFS storage services. The role parameters are described in Table 10.3:
Table 10.3: BeeGFSStorage role parameters and beegfs-storage options
The beegfs-storage settings are updated by BCM in /etc/beegfs/beegfs-storage.conf.
The settings can be managed in cmsh via the beegfs::storage role. Roles are, as usual, assigned via device, category, or configurationoverlay mode. The parameters of the role that correspond to the parameters in the preceding table can then be set.
Example
10.3.2.5 BeeGFSClient Role
The BeeGFSClient role is used for configuring BeeGFS client services.
The role parameters are described in table 10.4.
Table 10.4: BeeGFSClient role parameters and beegfs-client options
The settings can be managed in cmsh via the beegfs::client role:
Example
10.3.2.6 BeeGFS Helper Role
The BeeGFS helper role is used for configuring BeeGFS helper services. The role parameters are described in table 10.5:
Table 10.5: BeeGFS Helper role parameters and beegfs-helperd options
The role settings can be accessed as follows in cmsh:
Example
10.3.3 Usage
10.3.3.1 Accessing The Filesystem
After the installation process finishes, the BeeGFS filesystem can be accessed on the client nodes or on the head node. The default mount point for a BeeGFS instance with the name <name> is /mnt/beegfs- <name>, as set early on during BeeGFS installation, when using cm-beegfs-setup (figure 10.2).