Setting node or target IDs

BeeGFS uses two different kinds of IDs for a server node. A string-based node ID, which is by default the hostname of the server. And a numeric ID, which is by default sequentially generated by the management daemon. Numeric IDs are 16-bit values in range 1..65535.

The string-based node ID is most important to the user/administrator because it is the ID you will see in log messages to conveniently identify the servers. But internally, BeeGFS uses the numeric IDs, mostly because they can be used more efficiently.

It is usually not required to set node IDs or target IDs manually since they are assigned automatically then nodes and targets are created. It is, however, possible to force node and target IDs on creation.

An ID only needs to be unique in its class. So a metadata server daemon and a storage server daemon may have the same node ID, but two metadata servers (or two storage servers) may not use the same ID.

Numeric IDs were introduced with the 2012.10 release series. Before that, only string-based IDs existed. String-based IDs and numeric IDs are strongly tied together. It is not possible to change the string-based ID, while still using the old numeric ID.

Setting IDs by setup script

Use the corresponding setup script of each service to manually define IDs when first setting up the daemon:

# /opt/beegfs/sbin/beegfs-setup-XY

See the help output of each script. Add -h argument for help and usage examples.

Setting IDs manually

Each BeeGFS server daemon checks for special files inside their storage directory during startup. To manually force certain IDs instead of having them generated automatically, you would create these special files before the first startup of a BeeGFS server daemon. The names of these special files are:

  • nodeID: string based node ID

  • nodeNumID: numeric node ID

  • targetID: string-based target ID (only for storage server targets)

  • targetNumID: numeric target ID (only for storage server targets)

Warning

These IDs are an essential part of all lookups in BeeGFS. Do not change IDs after starting up a daemon for the first time (or BeeGFS would no longer be able to retrieve the data that was stored based on the old ID).

Assuming you want to set the string-based node ID of your first storage server to storage01 and the numeric ID to 1. The first storage server also provides the first storage target, so you would want to set the string-based target ID to target01 and the numeric target ID to 1. (The storeStorageDirectory in /etc/beegfs/beegfs-storage.conf for this example is set to /mnt/myraid/beegfs_storage.)

To force these IDs, you would use the commands below before starting up the beegfs-storage daemon for the first time:

$ echo storage01 > /mnt/myraid/beegfs_storage/nodeID
$ echo 1 > /mnt/myraid/beegfs_storage/nodeNumID
$ echo target01 > /mnt/myraid/beegfs_storage/targetID
$ echo 1 > /mnt/myraid/beegfs_storage/targetNumID

The ID settings can be confirmed by checking the server log file (/var/log/beegfs-storage.log) after starting up the daemon. Or by querying the management server:

$ beegfs-ctl --listnodes --nodetype=storage
$ beegfs-ctl --listtargets --longnodes