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. |
Controls the block profiler. Non-positive values disable profiler reports. For more information: https://pkg.go.dev/runtime@go1.20.3#SetBlockProfileRate.
mutex_rate
int
0
Controls the mutex profiler. Non-positive values disable profiler reports. For more information: https://pkg.go.dev/runtime@go1.20.3#SetMutexProfileFraction.
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) | | Array of endpoint descriptions. || `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`. |# `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. || `low_mem` | `bool` | `false` | Reduce memory consumption by reducing performance. || `shard` | [Shard config](#shard-subsection) | | 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) | | 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) | | Write-cache configuration. || `metabase` | [Metabase config](#metabase-subsection) | | Metabase configuration. || `blobstor` | [Blobstor config](#blobstor-subsection) | | Blobstor configuration. || `small_object_size` | `size` | `1M` | Maximum size of an object stored in blobovnicza tree. || `gc` | [GC config](#gc-subsection) | | GC configuration. || `limits` | [Shard limits config](#limits-subsection) | | 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
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.
| 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. |
| reconnect_timeout | duration | 30s | Time to wait before reconnecting to a failed node. |
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. |