Skip to main content
BeeGFS on NetApp with E-Series Storage

Define the BeeGFS storage service

Contributors mcwhiteside

BeeGFS services are configured using group variables (group_vars).

Overview

This section walks through defining the BeeGFS storage service. At least one service of this type should exist in the HA cluster(s) for a particular file system. Configuring this service includes defining:

  • The service type (storage).

  • Defining any configuration that should only apply to this BeeGFS service.

  • Configuring one or more floating IPs (logical interfaces) where this service can be reached.

  • Specifying where/how volume(s) should be to store data for this service (the BeeGFS storage targets).

Steps

Referencing the Plan the File System section, create a file at group_vars/stor_<ID>.yml for each storage service in the cluster, and populate them as follows:

  1. Indicate this file represents the configuration for a BeeGFS storage service:

    beegfs_service: storage
  2. Define any configuration that should apply only to this BeeGFS service. At minimum you must specify the desired TCP and UDP port, however any supported configuration parameter from beegfs-storage.conf can also be included. Note the following parameters are configured automatically/elsewhere and should not be specified here: sysMgmtdHost, storeStorageDirectory, connAuthFile, connDisableAuthentication, connInterfacesFile, and connNetFilterFile.

    beegfs_ha_beegfs_storage_conf_resource_group_options:
      connStoragePortTCP: <TCP PORT>
      connStoragePortUDP: <UDP PORT>
      tuneBindToNumaZone: <NUMA ZONE> # Recommended if using file nodes with multiple CPU sockets.
  3. Configure one or more floating IPs that other services and clients will use to connect to this service (this will automatically set the BeeGFS connInterfacesFile option):

    floating_ips:
      - <INTERFACE>:<IP/SUBNET> # Primary interface. Ex. i1b:100.127.101.1/16
      - <INTERFACE>:<IP/SUBNET> # Secondary interface(s) as needed.
  4. Optionally, specify one or more allowed IP subnets which may be used for outgoing communication (this will automatically set the BeeGFS connNetFilterFile option):

    filter_ip_ranges:
      - <SUBNET>/<MASK> # Ex. 192.168.10.0/24
  5. Specify the BeeGFS storage target(s) where this service will store data according to the following guidelines (this will also automatically configure the storeStorageDirectory option):

    1. The same storage pool or volume group name can be used for multiple BeeGFS services/targets, simply ensure to use the same name, raid_level, criteria_*, and common_* configuration for each (the volumes listed for each service should be different).

    2. Volume sizes should be specified as a percentage of the storage pool/volume group and the total should not exceed 100 across all services/volumes using a particular storage pool/volume group. Note when using SSDs it is recommended to leave some free space in the volume group to maximize SSD performance and wear life (click here for more details).

    3. Click here for a full list of configuration options available for the eseries_storage_pool_configuration. Note some options such as state, host, host_type, workload_name, and workload_metadata and volume names are generated automatically and should not be specified here.

      beegfs_targets:
        <BLOCK_NODE>: # The name of the block node as found in the Ansible inventory. Ex: netapp_01
          eseries_storage_pool_configuration:
            - name: <NAME> # Ex: beegfs_s1_s2
              raid_level: <LEVEL> # One of: raid1, raid5, raid6, raidDiskPool
              criteria_drive_count: <DRIVE COUNT> # Ex. 4
              common_volume_configuration:
                segment_size_kb: <SEGMENT SIZE> # Ex. 128
              volumes:
                - size: <PERCENT> # Percent of the pool or volume group to allocate to this volume. Ex. 1
                  owning_controller: <CONTROLLER> # One of: A, B
              # Multiple storage targets are supported / typical:
                - size: <PERCENT> # Percent of the pool or volume group to allocate to this volume. Ex. 1
                  owning_controller: <CONTROLLER> # One of: A, B

Click here for an example of a complete inventory file representing a BeeGFS storage service.