This section contains detailed FrostFS Storage node configuration file description
including default config values and some tips to set up configurable values.
There are some custom types used for brevity:
1. duration -- string consisting of a number and a suffix. Suffix examples include s (seconds), m (minutes), ms (milliseconds).
2. size -- string consisting of a number and a suffix. Suffix examples include b (bytes, default), k (kibibytes), m (mebibytes), g (gibibytes).
3. file mode -- octal number. Usually, it starts with 0 and contain 3 digits, corresponding to file access permissions for user, group and others.
4. public key -- hex-encoded public key
5. hash160 -- hex-encoded 20-byte hash of a deployed contract.
| Parameter | Type | Default value | Description |
| ----------------- | -------------- | ------------- | -------------------------------------------------------------------------------- |
| authorized_keys | []public key | empty | List of public keys which are used to authorize requests to the control service. |
| grpc.endpoint | string | empty | Address that control service listener binds to. |
Contains override values for FrostFS side-chain contract hashes. Most of the time contract
hashes are fetched from the NNS contract, so this section can be omitted.
morph:dial_timeout:30scache_ttl:15sape_chain_cache_size:10000rpc_endpoint:-address:wss://rpc1.morph.frostfs.info:40341/wspriority:1-address:wss://rpc2.morph.frostfs.info:40341/wspriority:2switch_interval:2mnetmap:candidates:poll_interval:20s```| Parameter | Type | Default value | Description || --------------------------------- | --------------------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- || `dial_timeout` | `duration` | `5s` | Timeout for dialing connections to N3 RPCs. || `cache_ttl` | `duration` | Morph block time | Sidechain cache TTL value (min interval between similar calls).<br/>Negative value disables caching.<br/>Cached entities:containers, container lists, eACL tables. || `rpc_endpoint` | list of [endpoint descriptions](#rpc_endpoint-subsection) | empty | Array of endpoint descriptions. Must not be empty. || `switch_interval` | `duration` | `2m` | Time interval between the attempts to connect to the highest priority RPC node if the connection is not established yet. || `ape_chain_cache_size` | `int` | `10000` | Size of the morph cache for APE chains. || `netmap.candidates.poll_interval` | `duration` | `20s` | Timeout to set up frequency of merge candidates to netmap with netmap in local cache. |## `rpc_endpoint` subsection| Parameter | Type | Default value | Description || ----------------- | ---------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ || `address` | `string` | `""` | _WebSocket_ N3 endpoint. || `priority` | `int` | `1` | Priority of an endpoint. Endpoint with a higher priority (lower configuration value) has more chance of being used. Endpoints with equal priority are iterated over randomly; a negative priority is interpreted as `1`. || `trusted_ca_list` | `[]string` | empty | Collection of Certificate Authority (CA) certificates. || `certificate` | `string` | `""` | Path to a certificate file. || `key` | `string` | `""` | Path to a key file. |# `storage` sectionLocal storage engine configuration.| Parameter | Type | Default value | Description || -------------------------- | --------------------------------- | ------------- | ---------------------------------------------------------------------------------------------------------------- || `shard_ro_error_threshold` | `int` | `0` | Maximum amount of storage errors to encounter before shard automatically moves to `Degraded` or `ReadOnly` mode. || `disable_shard_on_meta_loss` | `bool` | `false` | Whether to switch shard mode to `DISABLED` on metabase failure. If`false`, the mode switches to `DEGRADED_READ_ONLY` || `low_mem` | `bool` | `false` | Reduce memory consumption by reducing performance. || `shard` | [Shard config](#shard-subsection) | empty | Configuration for separate shards. |## `shard` subsectionContains configuration for each shard. Keys must be consecutive numbers starting from zero.`default` subsection has the same format and specifies defaults for missing values.The following table describes configuration for each shard.| Parameter | Type | Default value | Description || ------------------------------ | --------------------------------------------- | ------------- | --------------------------------------------------------------------------------------------------------- || `compression` | [Compression config](#compression-subsection) | empty | Compression config. || `mode` | `string` | `read-write` | Shard Mode.<br/>Possible values:`read-write`, `read-only`, `degraded`, `degraded-read-only`, `disabled` || `resync_metabase` | `bool` | `false` | Flag to enable metabase resync on start. || `resync_metabase_worker_count` | `int` | `1000` | Count of concurrent workers to resync metabase. || `writecache` | [Writecache config](#writecache-subsection) | empty | Write-cache configuration. || `metabase` | [Metabase config](#metabase-subsection) | empty | Metabase configuration. || `blobstor` | [Blobstor config](#blobstor-subsection) | empty | Blobstor configuration. || `pilorama` | [Pilorama config](#pilorama-subsection) | empty | Pilorama configuration. || `small_object_size` | `size` | `1M` | Maximum size of an object stored in blobovnicza tree. || `gc` | [GC config](#gc-subsection) | empty | GC configuration. || `limits` | [Shard limits config](#limits-subsection) | empty | Shard limits configuration. |### `compression` subsectionContains compression config.```yamlcompression:enabled:truelevel:smallest_sizeexclude_content_types:-audio/*-video/*estimate_compressibility:trueestimate_compressibility_threshold:0.7
Parameter
Type
Default value
Description
enabled
bool
false
Flag to enable compression.
level
string
optimal
Compression level. Available values are optimal, fastest, smallest_size.
exclude_content_types
[]string
empty
List of content-types to disable compression for. Content-type is taken from Content-Type object attribute. Each element can contain a star * as a first (last) character, which matches any prefix (suffix).
estimate_compressibility
bool
false
If true, then noramalized compressibility estimation is used to decide compress data or not.
estimate_compressibility_threshold
float
0.1
Normilized compressibility estimate threshold: data will compress if estimation if greater than this value.
Default permission for created files and directories.
size
size
1 G
Maximum size of a single blobovnicza
depth
int
2
Blobovnicza tree depth.
width
int
16
Blobovnicza tree width.
opened_cache_capacity
int
16
Maximum number of simultaneously opened blobovniczas.
opened_cache_ttl
duration
0
TTL in cache for opened blobovniczas(disabled by default). In case of heavy random-read and 10 shards each with 10_000 databases and accessing 400 objects per-second we will access each db approximately once per ((10 * 10_000 / 400) = 250 seconds <= 300 seconds = 5 min). Also take in mind that in this scenario they will probably be closed earlier because of the cache capacity, so bigger values are likely to be of no use.
opened_cache_exp_interval
duration
15s
Cache cleanup interval for expired blobovnicza's.
init_worker_count
int
5
Maximum number of concurrent initialization workers.
rebuild_drop_timeout
duration
10s
Timeout before drop empty blobovnicza file during rebuild.
strict_placement
bool
false
If true, limits the object search to its HRW-determined path only; otherwise, a full search is allowed. This should be disabled if width has changed, and remain disabled until a rebuild is performed with the target fill percentage set to 100%.
| Parameter | Type | Default value | Description |
| ----------------- | -------- | ------------- | --------------------------------------------------------------------- |
| dial_timeout | duration | 5s | Timeout for dialing connections to other storage or inner ring nodes. |
| stream_timeout | duration | 15s | Timeout for individual operations in a streaming RPC. |
| allow_external | bool | false | Allows to fallback to addresses in ExternalAddr attribute. |
| reconnect_timeout | duration | 30s | Time to wait before reconnecting to a failed node. |
Disables policer. Warning: setting to true disables background replication and may lead to dataloss.
retry_policy.enabled
bool
false
Enables retries when retriable error received.
retry_policy.initial_backoff
duration
100ms
The initial retry attempt will occur after initial_backoff * random(0.8, 1.2). The next attempt will occur at min(initial_backoff*backoff_multiplier**(n-1), max_backoff) * random(0.8, 1.2).
retry_policy.max_attempts
int
5
Maximum number of attempts when getting retryable error by client.
retry_policy.max_backoff
duration
1s
Maximum delay between retries.
retry_policy.backoff_multiplier
int
2
Backoff multiplier.
retry_throttling.enabled
bool
false
Enables throttling for the retries. Throttling disables retries once the number of failed calls raises the threshold - internal variable token should be less than max_tokens/2.
retry_throttling.max_tokens
int
100
Initial value for the internal variable token which maintained by client.
retry_throttling.token_ratio
int
1
Every successful rpc increment value of token by token_ratio.
retry_throttling.token_decrement
int
10
Every failed rpc decrement value of token by token_decrement.
Soft memory limit for the runtime. Zero or no value stands for no limit. If GOMEMLIMIT environment variable is set, the value from the configuration file will be ignored.
| Parameter | Type | Default value | Description |
| -------------------------- | -------------- | ------------- | --------------------------------------------------------------------------- |
| critical.authorized_keys | []public key | empty | List of public keys for which requests with the tag critical are allowed. |
| internal.authorized_keys | []public key | empty | List of public keys for which requests with the tag internal are allowed. |
Contains systemd service notifications configuration.
systemdnotify:enabled:true
| Parameter | Type | Default value | Description |
| --------- | ------ | ------------- | ------------------------------------------------------------------------------------------------------- |
| enabled | bool | false | Flag to enable service status in systemd. If true then service notifications to systemd will be sent. |