Skip to content

Setup and Configuration

The metadata server binary (meta.flexfs) is included in the flexFS installation. It is typically deployed via the admin server’s deploy endpoint or the manage.flexfs tool.

The metadata server requires credentials to authenticate with the admin server and (optionally) access block storage. Initialize them before starting:

Terminal window
meta.flexfs init creds \
--adminAddr admin.example.com:443 \
--token $TOKEN \
--blockUser $USERNAME \
--blockPass $PASSWORD

If --token is omitted, the command prompts interactively. This writes a TOML credentials file to the default location (~/.flexfs/meta/creds):

adminAddr = "admin.example.com:443"
blockPass = "$PASSWORD"
blockUser = "$USERNAME"
token = "$TOKEN"

init creds flags:

| Flag | Type | Default | Description | |------|------|---------|-------------| | --adminAddr | string | (required) | Admin server address (host:port) | | --blockPass | string | (empty) | Block storage password / secret key | | --blockUser | string | (empty) | Block storage username / access key ID | | --force | bool | false | Overwrite an existing credentials file | | --token | string | (prompts) | Metadata server authentication token (UUID) |

Terminal window
sudo meta.flexfs init systemd --now

This creates and enables a systemd unit at /etc/systemd/system/flexfs-meta.service and optionally starts it immediately. The metadata service unit includes a 1-second startup delay (ExecStartPre=/bin/sleep 1) to allow dependent services to initialize.

To pass additional flags:

Terminal window
sudo meta.flexfs init systemd --now \
--startFlags "--dbFolder /data/meta-db"

init systemd flags:

| Flag | Type | Default | Description | |------|------|---------|-------------| | --force | bool | false | Overwrite an existing systemd unit file | | --now | bool | false | Start the service immediately after enabling | | --startFlags | string | (empty) | Additional flags passed to meta.flexfs start |

The meta.flexfs start command accepts the following flags:

| Flag | Type | Default | Description | |------|------|---------|-------------| | --bindAddr | string | 0.0.0.0:443 | Address and port to bind the server | | --dbFolder | string | ~/.flexfs/meta/data | Path to the metadata database folder | | --noSSL | bool | false | Disable TLS for the REST API and RPC | | --sslCert | string | ~/.flexfs/ssl/cert | Path to the TLS certificate file | | --sslKey | string | ~/.flexfs/ssl/key | Path to the TLS private key file | | --sync | bool | false | Fsync every write for full crash durability | | --verbose / -v | bool | false | Enable verbose logging |

| Flag | Type | Default | Description | |------|------|---------|-------------| | --adminAddr | string | (from creds) | Admin server address (overrides credentials file) | | --blockPass | string | (from creds) | Block storage password (overrides credentials file) | | --blockUser | string | (from creds) | Block storage username (overrides credentials file) | | --dbMemCapacity | string | 40% | Memory allocated to the database cache (e.g. 5%, 64M, 4G) | | --fallback | string | (empty) | Fallback RPC protocol version for older mount clients (e.g. v1.4) | | --noAdminSSL | bool | false | Disable TLS for connections to the admin server | | --pprof | bool | false | Enable the Go pprof profiler | | --pprofPort | int | 6062 | Pprof server port | | --sizeBins | bool | false | Group volume size statistics into access-time bins | | --token | string | (from creds) | Metadata server auth token (overrides credentials file) |

| Subcommand | Description | |------------|-------------| | migrate | Migrate the metadata database to a new format | | verify | Verify the integrity of the metadata database |

By default, the metadata server auto-generates a self-signed TLS certificate if none exists at the configured paths. To use custom certificates:

Terminal window
meta.flexfs start \
--sslCert /etc/ssl/meta.crt \
--sslKey /etc/ssl/meta.key

After starting, the metadata server logs its configuration:

meta.flexfs | v1.9.0
--------------------------------------------------------------------------------
adminAddr | admin.example.com:443
bindAddr | 0.0.0.0:443
credsFile | ~/.flexfs/meta/creds
dbFolder | ~/.flexfs/meta/data
sslCert | ~/.flexfs/ssl/cert
sslKey | ~/.flexfs/ssl/key
--------------------------------------------------------------------------------
Binding to 0.0.0.0:443 (encrypted)