> This page is for version 10.
> For other versions, use one of these documentation indexes:
> - 11 (default): https://docs.nvidia.com/base-command-manager/product-manuals/11/llms.txt
> - 10: https://docs.nvidia.com/base-command-manager/product-manuals/10/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/base-command-manager/product-manuals/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/base-command-manager/product-manuals/_mcp/server.

# 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/](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](#102-deployment-and-uninstallation-of-beegfs-with-cm-beegfs-setup)).

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](#1032-beegfs-objects)).

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](#102-deployment-and-uninstallation-of-beegfs-with-cm-beegfs-setup)).

## 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](#fig-beegfs-urwid-main-menu)):

![BeeGFS Operations Via cm-beegfs-setup Main Menu](/base-command-manager/product-manuals/_fern-files/nvidia-bcm-manuals.docs.buildwithfern.com/51c36f3f728e7597331030adae1091470bafb2af008a334f651b00ff8d408697/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/tmp/tmp-465-AR0SE6FbhiT1/latextofern/fern/assets/v10/figures/beegfs-urwid-main-menu.png)

*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](#1022-deployment-of-beegfs))

* Modify an existing BCM BeeGFS configuration (the options are a subset of the deployment as described in section [10.2.2](#1022-deployment-of-beegfs))

* Uninstall BeeGFS (section [10.2.3](#1023-uninstalling-beegfs))

* 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**

```bash
[{basecm10} \textasciitilde]# cmsh
[basecm10]% softwareimage
[basecm10->softwareimage]% clone default-image beegfs-image
[basecm10->softwareimage*[beegfs-image*]]% commit
[basecm10->softwareimage]% task wait --last
```

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**

```bash
[{basecm10} \textasciitilde] cm-chroot-sw-img /cm/images/beegfs-image
[root@default-image /]# mkdir -p /beegfs/{storage,metadata}
```

#### 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**

```bash
  <?xml version="1.0" encoding="UTF-8"?>
  <diskSetup>

    <device>
      <blockdev>/dev/sda</blockdev>

      <partition id="efi" partitiontype="esp">
        <size>100M</size>
        <type>linux</type>
        <filesystem>fat</filesystem>
        <mountPoint>/boot/efi</mountPoint>
        <mountOptions>defaults,noatime,nodiratime</mountOptions>
      </partition>

      <partition id="boot">
        <size>500M</size>
        <type>linux</type>
        <filesystem>ext4</filesystem>
        <mountPoint>/boot</mountPoint>
        <mountOptions>defaults,noatime,nodiratime</mountOptions>
      </partition>

      <partition id="root">
        <size>max</size>
        <type>linux</type>
        <filesystem>ext4</filesystem>
        <mountPoint>/</mountPoint>
        <mountOptions>defaults,noatime,nodiratime</mountOptions>
      </partition>
    </device>

    <device>
      <blockdev>/dev/sdb</blockdev>
      <partition id="beegfs">
        <size>max</size>
        <type>linux</type>
        <filesystem>xfs</filesystem>
        <mkfsFlags>-d su=128k,sw=8 -l version=2,su=128k -isize=512</mkfsFlags>
        <mountPoint>/beegfs/storage</mountPoint>
        <mountOptions>noatime,nodiratime,logbufs=8,logbsize=256k,largeio,inode64,\
  swalloc,allocsize=131072k</mountOptions>
      </partition>
    </device>

  </diskSetup>
```

While the setup for `/dev/sda` is rather generic, there are some important modifications in the `/dev/sdb` section:

* The value for `filesystem` is set to `XFS`, which is as recommended at [https://doc.beegfs.io/latest/advanced_topics/storage_tuning.html](https://doc.beegfs.io/latest/advanced_topics/storage_tuning.html).

* `mkfsFlags` has 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.

* `mountPoint` is important later when running `cm-beegfs-setup`. This directory must be later specified as a BeeGFS storage directory.

* `mountOptions`, just like the `mkfs` flags, 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**

```bash
<?xml version="1.0" encoding="UTF-8"?>
  <diskSetup>

    <device>
      <blockdev>/dev/sda</blockdev>

      <partition id="efi" partitiontype="esp">
        <size>100M</size>
        <type>linux</type>
        <filesystem>fat</filesystem>
        <mountPoint>/boot/efi</mountPoint>
        <mountOptions>defaults,noatime,nodiratime</mountOptions>
      </partition>

      <partition id="boot">
        <size>500M</size>
        <type>linux</type>
        <filesystem>ext4</filesystem>
        <mountPoint>/boot</mountPoint>
        <mountOptions>defaults,noatime,nodiratime</mountOptions>
      </partition>

      <partition id="root">
        <size>max</size>
        <type>linux</type>
        <filesystem>ext4</filesystem>
        <mountPoint>/</mountPoint>
        <mountOptions>defaults,noatime,nodiratime</mountOptions>
      </partition>
    </device>

    <device>
      <blockdev>/dev/sdb</blockdev>
      <partition id="beegfs">
        <size>max</size>
        <type>linux</type>
        <filesystem>ext4</filesystem>
        <mkfsFlags>-i 2048 -I 512 -J size=400 -Odir_index,filetype</mkfsFlags>
        <mountPoint>/beegfs/metadata</mountPoint>
        <mountOptions>noatime,nodiratime</mountOptions>
      </partition>
    </device>

  </diskSetup>
```

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](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**

```bash
[{basecm10} \textasciitilde]# cmsh
[basecm10]% category
[basecm10->category]% clone default beegfs-metadata
[basecm10->category*[beegfs-metadata*]]% set softwareimage beegfs-image
[basecm10->category*[beegfs-metadata*]]% set disksetup /root/beegfs-metadata.xml
[basecm10->category*[beegfs-metadata*]]% clear roles
[basecm10->category*[beegfs-metadata*]]% commit
[basecm10->category*[beegfs-metadata]]% clone beegfs-metadata beegfs-storage
[basecm10->category*[beegfs-storage*]]% set softwareimage beegfs-image
[basecm10->category*[beegfs-storage*]]% set disksetup /root/beegfs-storage.xml
[basecm10->category*[beegfs-storage*]]% commit
[basecm10->category*[beegfs-storage]]% clone beegfs-metadata beegfs-management
[basecm10->category*[beegfs-management*]]% set softwareimage beegfs-image
[basecm10->category*[beegfs-management*]]% commit
```

#### 10.2.1.5  Tuning Kernel Parameters

The BeeGFS Wiki at [https://www.beegfs.io/wiki/StorageServerTuning](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](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**

```bash
[{basecm10} \textasciitilde]# cmsh
[basecm10]% softwareimage
[basecm10->softwareimage]% use beegfs-image
[basecm10->softwareimage[beegfs-image]]% append kernelparameters transparent_hugepages=always
[basecm10->softwareimage[beegfs-image*]]% commit
[basecm10->softwareimage[beegfs-image*]]% task wait --last
```

#### 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**

```bash
[{basecm10} \textasciitilde]# cm-chroot-sw-img /cm/images/beegfs-image
[root@default-image /]# cat <<EOF > /etc/udev/rules.d/90-beegfs.rules
ACTION=="add|change", KERNEL=="sdb", ATTR{queue/scheduler}="deadline"

# To improve throughput for sequential reads,
# increase the maximum amount of read-ahead data.
# The actual amount of read-ahead is adaptive,
# so using a high value here won't
# harm performance for small random access.
ACTION=="add|change", KERNEL=="sdb", ATTR{queue/read_ahead_kb}="4096"

# Now give the IO scheduler more flexibility by increasing the size
# of the request queue:
ACTION=="add|change", KERNEL=="sdb", ATTR{queue/nr_requests}="4096"
EOF
```

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](https://www.beegfs.io/wiki/Benchmark).

#### 10.2.1.7  Tuning VM Parameters

Similarly, VFS caching can be optimized by setting a lower latency:

```bash
[{basecm10} \textasciitilde]# cm-chroot-sw-img /cm/images/beegfs-image
[root@default-image /]# cat <<EOF > /etc/sysctl.d/90-beegfs.conf
#####################################################################
# BeeGFS-related settings
#####################################################################
# To avoid long IO stalls (latencies) for write cache flushing in
# a production environment with very different workloads, you will
# typically want to limit the kernel dirty (write) cache size:
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5
# Most likely already the default
# Buffering of file system data requires frequent memory allocation.
# Raising the amount of reserved kernel memory will enable faster and
# more reliable memory allocation in critical situations.
# Raise the corresponding value to 64 MB if you have less than 8GB
# of memory, otherwise, raise it to at least 256 MB
vm.min_free_kbytes = 262144
# Assigning slightly higher priority to inode caching helps to
# avoid disk seeks for inode loading:
vm.vfs_cache_pressure = 50
EOF
```

#### 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**

```bash
[basecm10]% device
[basecm10->device]% use node002
[basecm10->device[node002]]% set category beegfs-metadata
[basecm10->device*[node002*]]% commit
[basecm10->device[node002]]% ..
[basecm10->device]% use node001
[basecm10->device[node001]]% set category beegfs-management
[basecm10->device*[node001*]]% commit
[basecm10->device]% foreach -n node003..node005 ( set category beegfs-storage; commit )
[basecm10->device]% reboot -n node001..node005
```

#### 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](#fig-beegfs-urwid-name-mountpoint-auth-multimode)):

![BeeGFS Cluster Name, Mount Point, BeeGFS Authentication File, And Multi Mode Options](/base-command-manager/product-manuals/_fern-files/nvidia-bcm-manuals.docs.buildwithfern.com/d41c9c65dff38737bb2674113984cba42f66bd828ba4169209e631103e13bfab/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/tmp/tmp-465-AR0SE6FbhiT1/latextofern/fern/assets/v10/figures/beegfs-urwid-name-mountpoint-auth-multimode.png)

*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](#fig-beegfs-urwid-select-management-node)) then asks for one node to be selected to be the BeeGFS management server:

![Select Management Node](/base-command-manager/product-manuals/_fern-files/nvidia-bcm-manuals.docs.buildwithfern.com/96736e8b74bd72640c9c11a83be6b37bb4ba8556f8980215d4fadde5eb24c60b/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/tmp/tmp-465-AR0SE6FbhiT1/latextofern/fern/assets/v10/figures/beegfs-urwid-select-management-node.png)

*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](#fig-beegfs-urwid-select-metadata-nodes)) 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.

![Select Metadata Nodes](/base-command-manager/product-manuals/_fern-files/nvidia-bcm-manuals.docs.buildwithfern.com/18de12c1c57c2e5d93dd86fe05c81fd844317c9b3b45d710b098405a3be52dd0/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/tmp/tmp-465-AR0SE6FbhiT1/latextofern/fern/assets/v10/figures/beegfs-urwid-select-metadata-nodes.png)

*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](#fig-beegfs-urwid-select-storage-nodes)) 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.

![Select Storage Nodes](/base-command-manager/product-manuals/_fern-files/nvidia-bcm-manuals.docs.buildwithfern.com/0207aa9243ae3f9487b0750d4c4c637a4512bf461390907dd0f6b2e576d598e5/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/tmp/tmp-465-AR0SE6FbhiT1/latextofern/fern/assets/v10/figures/beegfs-urwid-select-storage-nodes.png)

*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](#fig-beegfs-urwid-select-client-nodes)) 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.

![Select Client Nodes](/base-command-manager/product-manuals/_fern-files/nvidia-bcm-manuals.docs.buildwithfern.com/ca7104e221bf98e7d927c49b2114b8a7267b0abb37f1e5a40b1e8030e403f4a5/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/tmp/tmp-465-AR0SE6FbhiT1/latextofern/fern/assets/v10/figures/beegfs-urwid-select-client-nodes.png)

*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](#fig-beegfs-urwid-select-helper-nodes)) 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.

![Select Helper Nodes](/base-command-manager/product-manuals/_fern-files/nvidia-bcm-manuals.docs.buildwithfern.com/f5f53007992bb21069d15e863f09ffaa7cbe38f666670c0d00e485118eb0de20/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/tmp/tmp-465-AR0SE6FbhiT1/latextofern/fern/assets/v10/figures/beegfs-urwid-select-helper-nodes.png)

*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](#fig-beegfs-urwid-configure-management-node)) asks for some configuration parameters for the BeeGFS management service to be set:

![Configure Management Service](/base-command-manager/product-manuals/_fern-img/979cf61d111dcef11514804f54a8e0a810e44b6404f6e7f107e6de717da39dff.webp)

*Figure 10.8: Configure Management Service*

Default suggestions are presented.

#### 10.2.2.9  Metadata Server Configuration

The next screen (figure [10.9](#fig-beegfs-urwid-configure-metadata)) asks for input on configuring the BeeGFS metadata service:

![Configure Metadata Servce](/base-command-manager/product-manuals/_fern-img/71d0404605c9fcc947644ddc16232f4355b9597f3da02b46e3408f8e6dc2fc8e.webp)

*Figure 10.9: Configure Metadata Servce*

Default suggestions are presented.

#### 10.2.2.10  Storage Server Configuration

The next screen (figure [10.10](#fig-beegfs-urwid-configure-storage)) asks for input on setting some configuration parameters for the BeeGFS storage service:

![Configure Storage Servce](/base-command-manager/product-manuals/_fern-files/nvidia-bcm-manuals.docs.buildwithfern.com/c2181b2a476dd6870b9daac9efbf7b49e2500ccd9d263614236843c8e017e35c/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/tmp/tmp-465-AR0SE6FbhiT1/latextofern/fern/assets/v10/figures/beegfs-urwid-configure-storage.png)

*Figure 10.10: Configure Storage Servce*

#### 10.2.2.11  Client Configuration

The next screen (figure [10.11](#fig-beegfs-urwid-configure-client)) asks for input on configuring the BeeGFS clients:

![Configure Client Servce](/base-command-manager/product-manuals/_fern-files/nvidia-bcm-manuals.docs.buildwithfern.com/9a202fe70eb87f26d32d1babf55da046623d99e26333a23a88468f3e6b8ca559/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/tmp/tmp-465-AR0SE6FbhiT1/latextofern/fern/assets/v10/figures/beegfs-urwid-configure-client.png)

*Figure 10.11: Configure Client Servce*

#### 10.2.2.12  Helper Configuration

The next screen (figure [10.12](#fig-beegfs-urwid-configure-helper)) asks for input on configuring the BeeGFS helper:

![Configure Helper Servce](/base-command-manager/product-manuals/_fern-files/nvidia-bcm-manuals.docs.buildwithfern.com/7bec96e734cf50cb34b677b93973a5f5c777b251cc89aa6992bd0316434aee35/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/tmp/tmp-465-AR0SE6FbhiT1/latextofern/fern/assets/v10/figures/beegfs-urwid-configure-helper.png)

*Figure 10.12: Configure Helper Servce*

#### 10.2.2.13  Deployment Summary

Finally, the wizard displays a deployment summary (figure [10.13](#fig-beegfs-urwid-deploy-summary)):

![Deployment Summary](/base-command-manager/product-manuals/_fern-files/nvidia-bcm-manuals.docs.buildwithfern.com/4271563d7b0921aefac322e92be148dbd692348672b6c9c9673a366183ade0e2/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/_dot_dot_/tmp/tmp-465-AR0SE6FbhiT1/latextofern/fern/assets/v10/figures/beegfs-urwid-deploy-summary.png)

*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**

```bash
cm-beegfs-setup -c cm-beegfs-setup.conf
```

### 10.2.3  Uninstalling BeeGFS

If the `Uninstall` option is chosen from the main menu (figure [10.1](#fig-beegfs-urwid-main-menu)), 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](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:

1. `beegfs-mgmtd`

2. `beegfs-meta`

3. `beegfs-storage`

4. `beegfs-client`

5. `beegfs-helperd`

6. `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](#102-deployment-and-uninstallation-of-beegfs-with-cm-beegfs-setup)), 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](#1032-beegfs-objects).

### 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](#1022-deployment-of-beegfs), 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 `list` command lists the instances and the allocation of nodes to the BeeGFS servers:

  **Example**

  ```bash
  [root@basecm10 ~]# cmsh
  [basecm10]% beegfs
  [basecm10->beegfs]% list
  Name (key) Management nodes Client nodes      Storage nodes    Metadata nodes
  ---------- ---------------- ----------------- ---------------- ----------------
  mybeegfs   basecm10         node005,basecm10  node003,node004  node001,node002
  ```

* The main properties of a particular BeeGFS instance, such as `mybeegfs` can be shown with:

  **Example**

  ```bash
  [basecm10->beegfs]% show mybeegfs
  Parameter                        Value
  -------------------------------- ------------------------------------------------
  Name                             mybeegfs
  Revision
  Multi mode                       yes
  Authentication file              /etc/beegfs/mybeegfs.d/auth
  Mountpoint                       /mnt/beegfs-mybeegfs
  Management Nodes                 basecm10
  Client Nodes                     node005,basecm10
  Storage Nodes                    node003,node004
  Metadata Nodes                   node001,node002
  Helper Nodes                     node005,basecm10
  [basecm10->beegfs]%
  ```

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:

```bash
|--roles
|  |--[beegfs::management]
|  |  `--configurations
|  |     |--logsettings
|  |     `--connectionsettings
|  |--[beegfs::client]
|  |  `--configurations
|  |     `--connectionsettings
|  |--[beegfs::helper]
|  |  `--configurations
|  |     |--logsettings
|  |     `--connectionsettings
|  |--[beegfs::metadata]
|  |  `--configurations
|  |     |--logsettings
|  |     `--connectionsettings
|  `--[beegfs::storage]
|     `--configurations
|        |--logsettings
|        `--connectionsettings
|
```

#### 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](#beegfsmanagement-role-parameters-table):

<table>
  <colgroup>
    <col />

    <col />

    <col />
  </colgroup>

  <thead>
    <tr>
      <th>
        **Parameter**
      </th>

      <th>
        **Description**
      </th>

      <th>
        **Option to `beegfs-mgmtd`**
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `Data directory`
      </td>

      <td>
        Path to data directory
      </td>

      <td>
        `storeMgmtdDirectory`
      </td>
    </tr>

    <tr>
      <td>
        `Allow new servers`
      </td>

      <td>
        Allow new servers registration
      </td>

      <td>
        `sysAllowNewServers`
      </td>
    </tr>

    <tr>
      <td>
        `Allow new storage`
      </td>

      <td>
        Allow new storage targets registration
      </td>

      <td>
        `sysAllowNewTargets`
      </td>
    </tr>

    <tr>
      <td>
        `targets`
      </td>

      <td />

      <td />
    </tr>

    <tr>
      <td>
        `Backlog TCP`
      </td>

      <td>
        TCP listen backlog size
      </td>

      <td>
        `connBacklogTCP`
      </td>
    </tr>

    <tr>
      <td>
        `Interfaces file`
      </td>

      <td>
        Path to file with interfaces list
      </td>

      <td>
        `connInterfacesFile`
      </td>
    </tr>

    <tr>
      <td>
        `Management port TCP`
      </td>

      <td>
        TCP port for management service
      </td>

      <td>
        `connMgmtdPortTCP`
      </td>
    </tr>

    <tr>
      <td>
        `Management port UDP`
      </td>

      <td>
        UDP port for management service
      </td>

      <td>
        `connMgmtdPortUDP`
      </td>
    </tr>

    <tr>
      <td rowspan="2">
        `Net filter file`
      </td>

      <td>
        Path to file with list of allowed IP
      </td>

      <td>
        `connNetFilterFile`
      </td>
    </tr>

    <tr>
      <td>
        subnets
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Log level`
      </td>

      <td>
        Log level
      </td>

      <td>
        `logLevel`
      </td>
    </tr>

    <tr>
      <td>
        `No log date`
      </td>

      <td>
        Do not show date along with time in log
      </td>

      <td>
        `logNoDate`
      </td>
    </tr>

    <tr>
      <td rowspan="2">
        `Number of log lines`
      </td>

      <td>
        Number of lines in log file, after which
      </td>

      <td>
        `logNumLines`
      </td>
    </tr>

    <tr>
      <td>
        it will be rotated
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Number of log`
      </td>

      <td>
        Number of old log files to keep
      </td>

      <td>
        `logNumRotatedFiles`
      </td>
    </tr>

    <tr>
      <td>
        `rotated files`
      </td>

      <td />

      <td />
    </tr>

    <tr>
      <td rowspan="2">
        `Log file`
      </td>

      <td>
        Path to log file, empty means logs go
      </td>

      <td>
        `logStdFile`
      </td>
    </tr>

    <tr>
      <td>
        to the journal
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Enable Quota`
      </td>

      <td>
        Enable quota
      </td>

      <td>
        `quotaEnableEnforcement`
      </td>
    </tr>

    <tr>
      <td>
        `Quota query GID file`
      </td>

      <td>
        Path to file with GIDs to be checked by quota
      </td>

      <td>
        `quotaQueryGIDFile`
      </td>
    </tr>

    <tr>
      <td>
        `Quota query GID`
      </td>

      <td>
        GID range to be checked by quota
      </td>

      <td>
        `quotaQueryGIDRange`
      </td>
    </tr>

    <tr>
      <td>
        `range`
      </td>

      <td />

      <td />
    </tr>

    <tr>
      <td rowspan="2">
        `Quota query UID file`
      </td>

      <td>
        Path to file with UIDs to be checked by
      </td>

      <td>
        `quotaQueryUIDFile`
      </td>
    </tr>

    <tr>
      <td>
        quota
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Quota query UID`
      </td>

      <td>
        UID range to be checked by quota
      </td>

      <td>
        `quotaQueryUIDRange`
      </td>
    </tr>

    <tr>
      <td>
        `range`
      </td>

      <td />

      <td />
    </tr>

    <tr>
      <td>
        `Quota query type`
      </td>

      <td>
        Query type for quota
      </td>

      <td>
        `quotaQueryType`
      </td>
    </tr>

    <tr>
      <td>
        `Quota query with`
      </td>

      <td>
        Allow also system users/groups to be
      </td>

      <td>
        `quotaQueryWithSystemUsersGroups`
      </td>
    </tr>

    <tr>
      <td>
        `system users groups`
      </td>

      <td>
        checked by quota
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Quota update`
      </td>

      <td>
        Quota update interval
      </td>

      <td>
        `quotaUpdateIntervalMin`
      </td>
    </tr>

    <tr>
      <td>
        `interval`
      </td>

      <td />

      <td />
    </tr>

    <tr>
      <td>
        `Target offline`
      </td>

      <td>
        Timeout for targets on storage server
      </td>

      <td>
        `sysTargetOfflineTimeoutSecs`
      </td>
    </tr>

    <tr>
      <td rowspan="2">
        `timeout`
      </td>

      <td>
        to be considered offline when no target
      </td>

      <td />
    </tr>

    <tr>
      <td>
        status received
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Client auto remove`
      </td>

      <td>
        Time after which an unreachable node
      </td>

      <td>
        `tuneClientAutoRemoveMins`
      </td>
    </tr>

    <tr>
      <td>
        `time`
      </td>

      <td>
        is considered dead
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Number of workers`
      </td>

      <td>
        Number of worker threads
      </td>

      <td>
        `tuneNumWorkers`
      </td>
    </tr>

    <tr>
      <td rowspan="3">
        `Meta dynamic pools`
      </td>

      <td>
        Raise lower limits if difference in
      </td>

      <td>
        `tuneMetaDynamicPools`
      </td>
    </tr>

    <tr>
      <td>
        capacity becomes too large between
      </td>

      <td />
    </tr>

    <tr>
      <td>
        targets
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Meta inodes low`
      </td>

      <td>
        Metadata inode free space pool
      </td>

      <td>
        `tuneMetaInodesLowLimit`
      </td>
    </tr>

    <tr>
      <td>
        `limit`
      </td>

      <td>
        threshold
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Meta inodes`
      </td>

      <td>
        Metadata inode free space pool
      </td>

      <td>
        `tuneMetaInodesEmergencyLimit`
      </td>
    </tr>

    <tr>
      <td>
        `emergency limit`
      </td>

      <td>
        threshold
      </td>

      <td />
    </tr>

    <tr>
      <td rowspan="2">
        `Meta space low limit`
      </td>

      <td>
        Metadata space free space pool
      </td>

      <td>
        `tuneMetaSpaceLowLimit`
      </td>
    </tr>

    <tr>
      <td>
        threshold
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Meta space emergency`
      </td>

      <td>
        Metadata space free space pool
      </td>

      <td>
        `tuneMetaSpaceEmergencyLimit`
      </td>
    </tr>

    <tr>
      <td>
        `limit`
      </td>

      <td>
        threshold
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Storage dynamic`
      </td>

      <td>
        Raise lower limits if difference in
      </td>

      <td>
        `tuneStorageDynamicPools`
      </td>
    </tr>

    <tr>
      <td rowspan="2">
        `pools`
      </td>

      <td>
        capacity becomes too large between
      </td>

      <td />
    </tr>

    <tr>
      <td>
        targets
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Storage inodes low`
      </td>

      <td>
        Storage inode free space pool
      </td>

      <td>
        `tuneStorageInodesLowLimit`
      </td>
    </tr>

    <tr>
      <td>
        `limit`
      </td>

      <td>
        threshold
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Storage inodes`
      </td>

      <td>
        Storage inode free space pool
      </td>

      <td>
        `tuneStorageInodesEmergencyLimit`
      </td>
    </tr>

    <tr>
      <td>
        `emergency limit`
      </td>

      <td>
        threshold
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Storage space low`
      </td>

      <td>
        Storage space free space pool
      </td>

      <td>
        `tuneStorageSpaceLowLimit`
      </td>
    </tr>

    <tr>
      <td>
        `limit`
      </td>

      <td>
        threshold
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Storage space`
      </td>

      <td>
        Storage space free space pool
      </td>

      <td>
        `tuneStorageSpaceEmergencyLimit`
      </td>
    </tr>

    <tr>
      <td>
        `emergency limit`
      </td>

      <td>
        threshold
      </td>

      <td />
    </tr>
  </tbody>
</table>

*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](#1022-deployment-of-beegfs), then the role can be viewed from the `cmsh` session as follows:

**Example**

```bash
[root@basecm10 ~]# cmsh
[basecm10]% device use basecm10
[basecm10->device[basecm10]]% roles
[basecm10->device[basecm10]->roles]% use bee<TAB><TAB><TAB>
beegfs::client      beegfs::helper         beegfs::management
[basecm10->device[basecm10]->roles]% use beegfs::management
[basecm10->device[basecm10]->roles[BeeGFS::Management]]% show
Parameter                        Value
-------------------------------- ------------------------------------------------
Name                             BeeGFS::Management
Revision
Type                             BeeGFSManagementRole
Add services                     yes
Configurations                   <1 in submode>
```

The configuration settings can be viewed within the submodes of the role for a particular BeeGFS instance:

**Example**

```bash
[basecm10->device[basecm10]->roles[BeeGFS::Management]]% configurations
[basecm10->device[basecm10]->roles[BeeGFS::Management]->configurations]% list
BeeGFS cluster (key)
--------------------
mybeegfs
[basecm10->device[basecm10]->roles[BeeGFS::Management]->configurations]% use mybeegfs
[basecm10->device[basecm10]->roles[BeeGFS::Management]->configurations[mybeegfs]]% show
Parameter                              Value
-------------------------------------- ------------------------------------------------
BeeGFS cluster                         mybeegfs
Revision
Data directory                         /var/lib/beegfs/management-mybeegfs
Allow new servers                      yes
Allow new storage targets              yes
Target offline timeout                 3m
Client auto remove time                30m
Number of workers                      4
Meta dynamic pools                     yes
Meta inodes low limit                  10M
Meta inodes emergency limit            1M
Meta space low limit                   9.3GiB
Meta space emergency limit             2.79GiB
Storage dynamic pools                  yes
Storage inodes low limit               9.5MiB
Storage inodes emergency limit         976KiB
Storage space low limit                931GiB
Storage space emergency limit          18.6GiB
Enable Quota                           no
Quota query GID file
Quota GIDs
Quota query GID range
Quota query UID file
Quota UIDs
Quota query UID range
Quota query type                       system
Quota query with system users groups   no
Quota update interval                  10m
Connection settings                    <submode>
Log settings                           <submode>
```

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**

```bash
[basecm10->...[BeeGFS::Management]->configurations[mybeegfs]]% connectionsettings
[basecm10->...[BeeGFS::Management]->configurations[mybeegfs]->connectionsettings]% show
Parameter                        Value
-------------------------------- ------------------------------------------------
Revision
Port TCP                         8018
Port UDP                         8018
Backlog TCP                      128
Interfaces file
Interfaces list
Net filter file
Use RDMA                         yes
```

Similarly, the `Log settings` submode for the management server in the BeeGFS instance has log configuration settings for the management service:

**Example**

```bash
[basecm10->...[BeeGFS::Management]->configurations[mybeegfs]->connectionsettings]% ..; logsettings; show
Parameter                        Value
-------------------------------- ------------------------------------------------
Revision
Log type                         Syslog
Level                            2
No date                          no
Number of lines                  50000
Number of rotated files          5
File
[basecm10->device[basecm10]->roles[BeeGFS::Management]->configurations[mybeegfs]->logsettings]%
```

#### 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](#beegfsmetadata-role-parameters-table):

<table>
  <colgroup>
    <col />

    <col />

    <col />
  </colgroup>

  <thead>
    <tr>
      <th>
        **Parameter**
      </th>

      <th>
        **Description**
      </th>

      <th>
        **Option to `beegfs-meta`**
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `Data directory`
      </td>

      <td>
        Path to the data directory
      </td>

      <td>
        `storeMetaDirectory`
      </td>
    </tr>

    <tr>
      <td>
        `Management node`
      </td>

      <td>
        Node with a management role
      </td>

      <td>
        `sysMgmtdHost`
      </td>
    </tr>

    <tr>
      <td>
        `Backlog TCP`
      </td>

      <td>
        TCP listen backlog
      </td>

      <td>
        `connBacklogTCP`
      </td>
    </tr>

    <tr>
      <td>
        `Fallback expiration`
      </td>

      <td>
        Time after which a connection to a
      </td>

      <td>
        `connFallbackExpirationSecs`
      </td>
    </tr>

    <tr>
      <td>
        `time`
      </td>

      <td>
        fallback interface expires
      </td>

      <td />
    </tr>

    <tr>
      <td rowspan="2">
        `Interfaces file`
      </td>

      <td>
        Path to the file with a list of interfaces
      </td>

      <td>
        `connInterfacesFile`
      </td>
    </tr>

    <tr>
      <td>
        for communication
      </td>

      <td />
    </tr>

    <tr>
      <td rowspan="2">
        `Max internode number`
      </td>

      <td>
        Max number of simultaneous
      </td>

      <td>
        `connMaxInternodeNum`
      </td>
    </tr>

    <tr>
      <td>
        connections to the same node
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Meta port TCP`
      </td>

      <td>
        TCP port for metadata service
      </td>

      <td>
        `connMetaPortTCP`
      </td>
    </tr>

    <tr>
      <td>
        `Meta port UDP`
      </td>

      <td>
        UDP port for metadata service
      </td>

      <td>
        `connMetaPortUDP`
      </td>
    </tr>

    <tr>
      <td rowspan="2">
        `Net filter file`
      </td>

      <td>
        Path to a file with a list of allowed
      </td>

      <td>
        `connNetFilterFile`
      </td>
    </tr>

    <tr>
      <td>
        IP subnets
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Use RDMA`
      </td>

      <td>
        Use RDMA
      </td>

      <td>
        `connUseRDMA`
      </td>
    </tr>

    <tr>
      <td>
        `RDMA type of service`
      </td>

      <td>
        RDMA type of service
      </td>

      <td>
        `connRDMATypeOfService`
      </td>
    </tr>

    <tr>
      <td rowspan="2">
        `Tcp only filter file`
      </td>

      <td>
        Path to a file with a list of no DRMA
      </td>

      <td>
        `connTcpOnlyFilterFile`
      </td>
    </tr>

    <tr>
      <td>
        IP ranges
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Log level`
      </td>

      <td>
        Log level
      </td>

      <td>
        `logLevel`
      </td>
    </tr>

    <tr>
      <td>
        `No log date`
      </td>

      <td>
        Do not show date along with time in log
      </td>

      <td>
        `logNoDate`
      </td>
    </tr>

    <tr>
      <td rowspan="2">
        `Number of log lines`
      </td>

      <td>
        Number of lines in log file, after which
      </td>

      <td>
        `logNumLines`
      </td>
    </tr>

    <tr>
      <td>
        it will be rotated
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Number of log`
      </td>

      <td>
        Number of old log files to keep
      </td>

      <td>
        `logNumRotatedFiles`
      </td>
    </tr>

    <tr>
      <td>
        `rotated files`
      </td>

      <td />

      <td />
    </tr>

    <tr>
      <td rowspan="2">
        `Log file`
      </td>

      <td>
        Path to the log file, empty means logs
      </td>

      <td>
        `logStdFile`
      </td>
    </tr>

    <tr>
      <td>
        go to the journal
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Client xattrs`
      </td>

      <td>
        Enable client-side extended attributes
      </td>

      <td>
        `storeClientXAttrs`
      </td>
    </tr>

    <tr>
      <td rowspan="2">
        `Client ACLs`
      </td>

      <td>
        Enable handling and storage of client-side ACLs
      </td>

      <td>
        `storeClientACLs`
      </td>
    </tr>

    <tr>
      <td>
        client-side ACLs
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Use extended`
      </td>

      <td>
        Store metadata as extended attributes
      </td>

      <td>
        `storeUseExtendedAttribs`
      </td>
    </tr>

    <tr>
      <td>
        `attributes`
      </td>

      <td>
        or not
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Target attachment`
      </td>

      <td>
        File with a list of targets to be grouped
      </td>

      <td>
        `sysTargetAttachmentFile`
      </td>
    </tr>

    <tr>
      <td rowspan="2">
        `file`
      </td>

      <td>
        within the same domain for
      </td>

      <td />
    </tr>

    <tr>
      <td>
        randominternode
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Target offline`
      </td>

      <td>
        Timeout for targets on a storage
      </td>

      <td>
        `sysTargetOfflineTimeoutSecs`
      </td>
    </tr>

    <tr>
      <td rowspan="2">
        `timeout`
      </td>

      <td>
        server to be considered offline when no
      </td>

      <td />
    </tr>

    <tr>
      <td>
        target status is received
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Allow user set`
      </td>

      <td>
        Allow non-privileged users to modify
      </td>

      <td>
        `sysAllowUserSetPattern`
      </td>
    </tr>

    <tr>
      <td rowspan="2">
        `pattern`
      </td>

      <td>
        stripe pattern settings for directories
      </td>

      <td />
    </tr>

    <tr>
      <td>
        they own
      </td>

      <td />
    </tr>

    <tr>
      <td rowspan="3">
        `Bind to numa zone`
      </td>

      <td>
        Zero-based NUMA zone number to
      </td>

      <td>
        `tuneBindToNumaZone`
      </td>
    </tr>

    <tr>
      <td>
        which all threads of metadata process
      </td>

      <td />
    </tr>

    <tr>
      <td>
        should be bound
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Number of stream`
      </td>

      <td>
        The number of threads waiting for
      </td>

      <td>
        `tuneNumStreamListeners`
      </td>
    </tr>

    <tr>
      <td>
        `listeners`
      </td>

      <td>
        incoming data events
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Number of workers`
      </td>

      <td>
        Number of worker threads
      </td>

      <td>
        `tuneNumWorkers`
      </td>
    </tr>

    <tr>
      <td rowspan="2">
        `Target chooser`
      </td>

      <td>
        The algorithm to choose storage targets
      </td>

      <td>
        `tuneTargetChooser`
      </td>
    </tr>

    <tr>
      <td>
        for file creation
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Use aggressive`
      </td>

      <td>
        Actively poll for events instead of
      </td>

      <td>
        `tuneUseAggressiveStreamPoll`
      </td>
    </tr>

    <tr>
      <td>
        `stream poll`
      </td>

      <td>
        sleeping until an event occurs
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Use per user msg`
      </td>

      <td>
        Use per-user queues for pending
      </td>

      <td>
        `tuneUsePerUserMsgQueues`
      </td>
    </tr>

    <tr>
      <td>
        `queues`
      </td>

      <td>
        requests
      </td>

      <td />
    </tr>
  </tbody>
</table>

*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**

```bash
[basecm10 ~]# cmsh
[root@basecm10 ~]# cmsh
[basecm10]% device use node001
[basecm10->device[node001]]% roles
[basecm10->device[node001]->roles]% use beegfs::metadata
[basecm10->device[node001]->roles[BeeGFS::Metadata]]% configurations
[basecm10->device[node001]->roles[BeeGFS::Metadata]->configurations]% use mybeegfs
[basecm10->device[node001]->roles[BeeGFS::Metadata]->configurations[mybeegfs]]% show
Parameter                        Value
-------------------------------- ------------------------------------------------
BeeGFS cluster                   mybeegfs
Revision
Data directory                   /var/lib/beegfs/metadata-mybeegfs
Bind to numa zone
Run daemonized                   yes
Client xattrs                    no
Client ACLs                      no
Use extended attributes          yes
Allow user set pattern           no
Use aggressive stream poll       no
Use per user msg queues          no
Target chooser                   Randomized
Target offline timeout           3m
Target attachment file
Number of stream listeners       1
Number of workers                0
Start by CMDaemon                yes
Connection settings              <submode>
Log settings                     <submode>
[basecm10->...::Metadata]->configurations[mybeegfs]]% connectionsettings; show; ..
Parameter                        Value
-------------------------------- ------------------------------------------------
Revision
Port TCP                         8015
Port UDP                         8015
Backlog TCP                      128
Max internode number             12
Fallback expiration time         15m
Interfaces file
Interfaces list
Net filter file
Tcp only filter file
Use RDMA                         yes
RDMA type of service             0
[basecm10->...::Metadata]->configurations[mybeegfs]]% logsettings; show; ..
Parameter                        Value
-------------------------------- ------------------------------------------------
Revision
Log type                         Syslog
Level                            2
No date                          no
Number of lines                  50000
Number of rotated files          5
File
[basecm10->device[node001]->roles[BeeGFS::Metadata]->configurations[mybeegfs]]%
```

#### 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](#beegfsstorage-role-parameters-table):

<table>
  <colgroup>
    <col />

    <col />

    <col />
  </colgroup>

  <thead>
    <tr>
      <th>
        **Parameter**
      </th>

      <th>
        **Description**
      </th>

      <th>
        **Option to `beegfs-storage`**
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `Data directories`
      </td>

      <td>
        Path to the data directories
      </td>

      <td>
        `storeStorageDirectory`
      </td>
    </tr>

    <tr>
      <td>
        `Management node`
      </td>

      <td>
        Node with a management role
      </td>

      <td>
        `sysMgmtdHost`
      </td>
    </tr>

    <tr>
      <td>
        `Authentification`
      </td>

      <td>
        Path to the shared secret
      </td>

      <td>
        `connAuthFile`
      </td>
    </tr>

    <tr>
      <td>
        `file`
      </td>

      <td>
        authentification file
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Backlog TCP`
      </td>

      <td>
        TCP listen backlog
      </td>

      <td>
        `connBacklogTCP`
      </td>
    </tr>

    <tr>
      <td rowspan="2">
        `Interfaces file`
      </td>

      <td>
        Path to the file with a list of interfaces
      </td>

      <td>
        `connInterfacesFile`
      </td>
    </tr>

    <tr>
      <td>
        for communication
      </td>

      <td />
    </tr>

    <tr>
      <td rowspan="2">
        `Max internode number`
      </td>

      <td>
        Max number of simultaneous
      </td>

      <td>
        `connMaxInternodeNum`
      </td>
    </tr>

    <tr>
      <td>
        connections to the same node
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Storage port TCP`
      </td>

      <td>
        TCP port for storage service
      </td>

      <td>
        `connStoragePortTCP`
      </td>
    </tr>

    <tr>
      <td>
        `Storage port UDP`
      </td>

      <td>
        UDP port for storage service
      </td>

      <td>
        `connStoragePortUDP`
      </td>
    </tr>

    <tr>
      <td rowspan="2">
        `Net filter file`
      </td>

      <td>
        Path to a file with a list of allowed
      </td>

      <td>
        `connNetFilterFile`
      </td>
    </tr>

    <tr>
      <td>
        IP subnets
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Use RDMA`
      </td>

      <td>
        Use RDMA
      </td>

      <td>
        `connUseRDMA`
      </td>
    </tr>

    <tr>
      <td>
        `RDMA type of service`
      </td>

      <td>
        RDMA type of service
      </td>

      <td>
        `connRDMATypeOfService`
      </td>
    </tr>

    <tr>
      <td rowspan="2">
        `Tcp only filter file`
      </td>

      <td>
        Path to a file with a list of subnets
      </td>

      <td>
        `connTcpOnlyFilterFile`
      </td>
    </tr>

    <tr>
      <td>
        with no RDMA
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Log level`
      </td>

      <td>
        Log level
      </td>

      <td>
        `logLevel`
      </td>
    </tr>

    <tr>
      <td>
        `No log date`
      </td>

      <td>
        Do not show date along with time in log
      </td>

      <td>
        `logNoDate`
      </td>
    </tr>

    <tr>
      <td rowspan="2">
        `Number of log lines`
      </td>

      <td>
        Number of lines in log file, after which
      </td>

      <td>
        `logNumLines`
      </td>
    </tr>

    <tr>
      <td>
        it will be rotated
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Number of log`
      </td>

      <td>
        Number of old log files to keep
      </td>

      <td>
        `logNumRotatedFiles`
      </td>
    </tr>

    <tr>
      <td>
        `rotated files`
      </td>

      <td />

      <td />
    </tr>

    <tr>
      <td rowspan="2">
        `Log file`
      </td>

      <td>
        Path to the log file, empty means logs
      </td>

      <td>
        `logStdFile`
      </td>
    </tr>

    <tr>
      <td>
        go to the journal
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Resync safety`
      </td>

      <td>
        Add an extra amount of time to the last
      </td>

      <td>
        `sysResyncSafetyThresholdMins`
      </td>
    </tr>

    <tr>
      <td rowspan="2">
        `threshold`
      </td>

      <td>
        successful communication timestamp
      </td>

      <td />
    </tr>

    <tr>
      <td>
        in case of a potential cache loss
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Target offline`
      </td>

      <td>
        Timeout until targets on a storage
      </td>

      <td>
        `sysTargetOfflineTimeoutSecs`
      </td>
    </tr>

    <tr>
      <td rowspan="2">
        `timeout`
      </td>

      <td>
        server are considered offline when no
      </td>

      <td />
    </tr>

    <tr>
      <td>
        target status is received
      </td>

      <td />
    </tr>

    <tr>
      <td rowspan="3">
        `Bind to numa zone`
      </td>

      <td>
        Zero-based NUMA zone number to
      </td>

      <td>
        `tuneBindToNumaZone`
      </td>
    </tr>

    <tr>
      <td>
        which all threads of metadata process
      </td>

      <td />
    </tr>

    <tr>
      <td>
        should be bound
      </td>

      <td />
    </tr>

    <tr>
      <td rowspan="3">
        `File read ahead size`
      </td>

      <td>
        Byte range submitted to the kernel for
      </td>

      <td>
        `tuneFileReadAheadSize`
      </td>
    </tr>

    <tr>
      <td>
        read-ahead after number of bytes was
      </td>

      <td />
    </tr>

    <tr>
      <td>
        already read from target
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `File read ahead`
      </td>

      <td>
        Number of bytes read after which
      </td>

      <td>
        `tuneFileReadAheadTriggerSize`
      </td>
    </tr>

    <tr>
      <td>
        `trigger size`
      </td>

      <td>
        the read-ahead is triggered
      </td>

      <td />
    </tr>

    <tr>
      <td rowspan="2">
        `File read size`
      </td>

      <td>
        Maximum amount of data server
      </td>

      <td>
        `tuneFileReadSize`
      </td>
    </tr>

    <tr>
      <td>
        should read in a single operation
      </td>

      <td />
    </tr>

    <tr>
      <td rowspan="2">
        `File write size`
      </td>

      <td>
        Maximum amount of data server
      </td>

      <td>
        `tuneFileWriteSize`
      </td>
    </tr>

    <tr>
      <td>
        should write in a single operation
      </td>

      <td />
    </tr>

    <tr>
      <td rowspan="2">
        `File write sync size`
      </td>

      <td>
        Number of bytes after which kernel
      </td>

      <td>
        `tuneFileWriteSyncSize`
      </td>
    </tr>

    <tr>
      <td>
        advised to commit data
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Number of resync`
      </td>

      <td>
        Number of threads to gather filesystem
      </td>

      <td>
        `tuneNumResyncGatherSlaves`
      </td>
    </tr>

    <tr>
      <td>
        `gather slaves`
      </td>

      <td>
        information for a buddy mirror resync
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Number of resync`
      </td>

      <td>
        Number of threads to sync filesystem
      </td>

      <td>
        `tuneNumResyncSlaves`
      </td>
    </tr>

    <tr>
      <td>
        `slaves`
      </td>

      <td>
        information for a buddy mirror resync
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Number of stream`
      </td>

      <td>
        Number of threads waiting for
      </td>

      <td>
        `tuneNumStreamListeners`
      </td>
    </tr>

    <tr>
      <td>
        `listeners`
      </td>

      <td>
        incoming data events
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Number of workers`
      </td>

      <td>
        Number of worker threads
      </td>

      <td>
        `tuneNumWorkers`
      </td>
    </tr>

    <tr>
      <td>
        `Use aggressive`
      </td>

      <td>
        Actively poll for events instead of
      </td>

      <td>
        `tuneUseAggressiveStreamPoll`
      </td>
    </tr>

    <tr>
      <td>
        `stream poll`
      </td>

      <td>
        sleeping until an event occur
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Use per target`
      </td>

      <td>
        Create a separate set of workers and
      </td>

      <td>
        `tuneUsePerTargetWorkers`
      </td>
    </tr>

    <tr>
      <td>
        `workers`
      </td>

      <td>
        attach it for each storage target
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Use per user msg`
      </td>

      <td>
        Use per-user queues for pending
      </td>

      <td>
        `tuneUsePerUserMsgQueues`
      </td>
    </tr>

    <tr>
      <td>
        `queues`
      </td>

      <td>
        requests
      </td>

      <td />
    </tr>

    <tr>
      <td>
        `Worker buffer size`
      </td>

      <td>
        Size of network and io buffers, allocated for each worker
      </td>

      <td>
        `tuneWorkerBufSize`
      </td>
    </tr>
  </tbody>
</table>

*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**

```bash
[root@basecm10 ~]# cmsh
[basecm10]% device use node003
[basecm10->device[node003]]% roles
[basecm10->device[node003]->roles]% use beegfs::storage
[basecm10->device[node003]->roles[BeeGFS::Storage]]% show
Parameter                        Value
-------------------------------- ------------------------------------------------
Name                             BeeGFS::Storage
Revision
Type                             BeeGFSStorageRole
Add services                     yes
Configurations                   <1 in submode>
[basecm10->device[node003]->roles[BeeGFS::Storage]]% configurations
[basecm10->device[node003]->roles[BeeGFS::Storage]->configurations]% use mybeegfs
[basecm10->device[node003]->roles[BeeGFS::Storage]->configurations[mybeegfs]]% show
Parameter                        Value
-------------------------------- ------------------------------------------------
BeeGFS cluster                   mybeegfs
Revision
Data directories                 /var/lib/beegfs/storage-mybeegfs
Target offline timeout           3m
Use aggressive stream poll       no
Use per target workers           yes
Use per user msg queues          no
Run daemonized                   yes
Bind to numa zone
Resync safety threshold          10m
File read ahead size             0B
File read ahead trigger size     3.8MiB
File read size                   122MiB
File write size                  122MiB
File write sync size             122MiB
Worker buffer size               3.8MiB
Number of resync gather slaves   6
Number of resync slaves          12
Number of stream listeners       1
Number of workers                12
Connection settings              <submode>
Log settings                     <submode>
Start by CMDaemon                yes
[basecm10->...->roles[BeeGFS::Storage]->configurations[mybeegfs]]% connectionsettings; show; ..
Parameter                        Value
-------------------------------- ------------------------------------------------
Revision
Port TCP                         8013
Port UDP                         8013
Backlog TCP                      128
Max internode number             12
Interfaces file
Interfaces list
Net filter file
Tcp only filter file
Use RDMA                         yes
RDMA type of service             0
[basecm10->...->roles[BeeGFS::Storage]->configurations[mybeegfs]]% logsettings; show; ..
Parameter                        Value
-------------------------------- ------------------------------------------------
Revision
Log type                         Syslog
Level                            2
No date                          no
Number of lines                  50000
Number of rotated files          5
File
[basecm10->device[node003]->roles[BeeGFS::Storage]->configurations[mybeegfs]]%
```

#### 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](#beegfsclient-role-parameters-table).

<table>
  <colgroup>
    <col />

    <col />

    <col />
  </colgroup>

  <thead>
    <tr>
      <th>
        **Parameter**
      </th>

      <th>
        **Description**
      </th>

      <th>
        **Option to `beegfs-client`**
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `Management node`
      </td>

      <td>
        Node with a management role
      </td>

      <td>
        `sysMgmtdHost`
      </td>
    </tr>

    <tr>
      <td>
        `Client port UDP`
      </td>

      <td>
        UDP port for client service
      </td>

      <td>
        `connClientPortUDP`
      </td>
    </tr>

    <tr>
      <td>
        `Communication retry time`
      </td>

      <td>
        Time for retries in case of a network failure
      </td>

      <td>
        `connCommRetrySecs`
      </td>
    </tr>

    <tr>
      <td>
        `Fallback expiration time`
      </td>

      <td>
        Time after which a connection to a fallback interface expires
      </td>

      <td>
        `connFallbackExpirationSecs`
      </td>
    </tr>

    <tr>
      <td>
        `Interfaces file`
      </td>

      <td>
        Path to file with list of communication interfaces
      </td>

      <td>
        `connInterfacesFile`
      </td>
    </tr>

    <tr>
      <td>
        `Max internode number`
      </td>

      <td>
        Maximum simultaneous connections to the same node
      </td>

      <td>
        `connMaxInternodeNum`
      </td>
    </tr>

    <tr>
      <td>
        `Net filter file`
      </td>

      <td>
        Path to a file with a list of allowed IP subnets
      </td>

      <td>
        `connNetFilterFile`
      </td>
    </tr>

    <tr>
      <td>
        `Use RDMA`
      </td>

      <td>
        Use RDMA
      </td>

      <td>
        `connUseRDMA`
      </td>
    </tr>

    <tr>
      <td>
        `RDMA buffers number`
      </td>

      <td>
        Number of RDMA buffers
      </td>

      <td>
        `connRDMABufNum`
      </td>
    </tr>

    <tr>
      <td>
        `RDMA buffer size`
      </td>

      <td>
        Maximum size of a buffer that will be sent over the network
      </td>

      <td>
        `connRDMABufSize`
      </td>
    </tr>

    <tr>
      <td>
        `RDMA type of service`
      </td>

      <td>
        RDMA type of service
      </td>

      <td>
        `connRDMATypeOfService`
      </td>
    </tr>

    <tr>
      <td>
        `Tcp only filter file`
      </td>

      <td>
        Path to a file with a list of no RDMA IP ranges
      </td>

      <td>
        `connTcpOnlyFilterFile`
      </td>
    </tr>

    <tr>
      <td>
        `Log level`
      </td>

      <td>
        Log level
      </td>

      <td>
        `logLevel`
      </td>
    </tr>

    <tr>
      <td>
        `Enable Quota`
      </td>

      <td>
        Enable quota
      </td>

      <td>
        `quotaEnabled`
      </td>
    </tr>

    <tr>
      <td>
        `Create hardlinks as symlinks`
      </td>

      <td>
        Create a symlink when an application tries to create a hardlink
      </td>

      <td>
        `sysCreateHardlinksAsSymlinks`
      </td>
    </tr>

    <tr>
      <td>
        `Mount sanity check`
      </td>

      <td>
        Time in ms that server has to respond after mount sanity check
      </td>

      <td>
        `sysMountSanityCheckMS`
      </td>
    </tr>

    <tr>
      <td>
        `Session check on close`
      </td>

      <td>
        Check for valid sessions on storage server when a file is closed
      </td>

      <td>
        `sysSessionCheckOnClose`
      </td>
    </tr>

    <tr>
      <td>
        `Sync on close`
      </td>

      <td>
        Sync file content on close
      </td>

      <td>
        `sysSyncOnClose`
      </td>
    </tr>

    <tr>
      <td>
        `Target offline timeout`
      </td>

      <td>
        Timeout until all storage targets are considered offline when no target state updates can be fetched from management server
      </td>

      <td>
        `sysTargetOfflineTimeoutSecs`
      </td>
    </tr>

    <tr>
      <td>
        `Update target states time`
      </td>

      <td>
        Interval for storage targets states check
      </td>

      <td>
        `sysUpdateTargetStatesSecs`
      </td>
    </tr>

    <tr>
      <td>
        `Enable xattrs`
      </td>

      <td>
        Enable xattrs
      </td>

      <td>
        `sysXAttrsEnabled`
      </td>
    </tr>

    <tr>
      <td>
        `Enable ACLs`
      </td>

      <td>
        Enable ACLs
      </td>

      <td>
        `sysACLsEnabled`
      </td>
    </tr>

    <tr>
      <td>
        `File cache type`
      </td>

      <td>
        File read/write cache type
      </td>

      <td>
        `tuneFileCacheType`
      </td>
    </tr>

    <tr>
      <td>
        `Preferred meta file`
      </td>

      <td>
        Path to a file with preferred metadata servers
      </td>

      <td>
        `tunePreferredMetaFile`
      </td>
    </tr>

    <tr>
      <td>
        `Preferred storage file`
      </td>

      <td>
        Path to a file with preferred storage targets
      </td>

      <td>
        `tunePreferredStorageFile`
      </td>
    </tr>

    <tr>
      <td>
        `Remote fsync`
      </td>

      <td>
        Should fsync be executed on server to flush cached file
      </td>

      <td>
        `tuneRemoteFSync`
      </td>
    </tr>

    <tr>
      <td>
        `Use global append locks`
      </td>

      <td>
        Should files, opened in append mode, be protected by locks on local machine (false) or on servers (true)
      </td>

      <td>
        `tuneUseGlobalAppendLocks`
      </td>
    </tr>

    <tr>
      <td>
        `Use global file locks`
      </td>

      <td>
        Should advisory locks be checked on local machine (false) or on servers (true)
      </td>

      <td>
        `tuneUseGlobalFileLocks`
      </td>
    </tr>
  </tbody>
</table>

*Table 10.4: BeeGFSClient role parameters and `beegfs-client` options*

The settings can be managed in `cmsh` via the `beegfs::client` role:

**Example**

```bash
[root@basecm10 ~]# cmsh
[basecm10]% device use node005; roles; use beegfs::client; configurations; use mybeegfs
[basecm10->device[node005]->roles[BeeGFS::Client]->configurations[mybeegfs]]% show
Parameter                        Value
-------------------------------- ------------------------------------------------
BeeGFS cluster                   mybeegfs
Revision
Enable Quota                     no
Create hardlinks as symlinks     no
Mount sanity check               11s
Session check on close           no
Sync on close                    no
Target offline timeout           15m
Update target states time        1m
Enable xattrs                    no
Enable ACLs                      no
File cache type                  buffered
Preferred meta file
Preferred storage file
Preferred metadata server IDs
Preferred storage server IDs
Remote fsync                     yes
Use global append locks          no
Use global file locks            no
Connection settings              <submode>
Log type                         Syslog
Level                            2
Add clientid                     no
Helper IP                        0.0.0.0
[basecm10->device[node005]->roles[BeeGFS::Client]->configurations[mybeegfs]]% connectionsettings; show; ..
Parameter                                                Value
-------------------------------------------------------- ------------------------------------------------
Revision
Port UDP                                                 8014
Max internode number                                     12
Communication retry time                                 10m
Fallback expiration time                                 15m
Interfaces file
Interfaces list
The maximum number of simultaneous connection attempts   0
Net filter file
Tcp only filter file
Use RDMA                                                 yes
RDMA buffers number                                      70
RDMA buffer size                                         8192
RDMA type of service                                     0
[basecm10->device[node005]->roles[BeeGFS::Client]->configurations[mybeegfs]]%
```

#### 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](#beegfshelperd-role-parameters-table):

<table>
  <colgroup>
    <col />

    <col />

    <col />
  </colgroup>

  <thead>
    <tr>
      <th>
        **Parameter**
      </th>

      <th>
        **Description**
      </th>

      <th>
        **Option to `beegfs-helperd`**
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `Helper workers number`
      </td>

      <td>
        Number of worker threads for helper service
      </td>

      <td>
        `tuneNumWorkers`
      </td>
    </tr>

    <tr>
      <td>
        `Helper port TCP`
      </td>

      <td>
        TCP port for helper service
      </td>

      <td>
        `connHelperdPortTCP`
      </td>
    </tr>

    <tr>
      <td>
        `No log date`
      </td>

      <td>
        Do not show date along with time in log
      </td>

      <td>
        `logNoDate`
      </td>
    </tr>

    <tr>
      <td>
        `Number of log lines`
      </td>

      <td>
        Number of lines in log file, after which it is rotated
      </td>

      <td>
        `logNumLines`
      </td>
    </tr>

    <tr>
      <td>
        `Number of log rotated files`
      </td>

      <td>
        Number of old log files to keep
      </td>

      <td>
        `logNumRotatedFiles`
      </td>
    </tr>

    <tr>
      <td>
        `Log file`
      </td>

      <td>
        Path to the log file, empty means logs go to the journal
      </td>

      <td>
        `logStdFile`
      </td>
    </tr>
  </tbody>
</table>

*Table 10.5: BeeGFS Helper role parameters and `beegfs-helperd` options*

The role settings can be accessed as follows in `cmsh`:

**Example**

```bash
[root@basecm10 ~]# cmsh
[basecm10]% device use node005; roles; use beegfs::helper; configurations; use mybeegfs
[basecm10->device[node005]->roles[BeeGFS::Helper]->configurations[mybeegfs]]% show
Parameter                        Value
-------------------------------- ------------------------------------------------
BeeGFS cluster                   mybeegfs
Revision
Run daemonized                   yes
Helper workers number            2
Connection settings              <submode>
Log settings                     <submode>
[basecm10->device[node005]->roles[BeeGFS::Helper]->configurations[mybeegfs]]% connectionsettings; show; ..
Parameter                        Value
-------------------------------- ------------------------------------------------
Revision
Port TCP                         8016
[basecm10->device[node005]->roles[BeeGFS::Helper]->configurations[mybeegfs]]% logsettings; show; ..
Parameter                        Value
-------------------------------- ------------------------------------------------
Revision
Log type                         Syslog
Level                            2
No date                          no
Number of lines                  50000
Number of rotated files          5
File
[basecm10->device[node005]->roles[BeeGFS::Helper]->configurations[mybeegfs]]%
```

### 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](#fig-beegfs-urwid-name-mountpoint-auth-multimode)).